<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Email - Tag - 印记一瞥</title><link>https://blog.hosiet.me/tags/email/</link><description>Email - Tag - 印记一瞥</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Wed, 16 Oct 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.hosiet.me/tags/email/" rel="self" type="application/rss+xml"/><item><title>使用 msmtp 和 GMail 账号部署服务器 SMTP 发信（2024年）</title><link>https://blog.hosiet.me/posts/2024/10/16/sendmail-compat-msmtp-gmail-app-password/</link><pubDate>Wed, 16 Oct 2024 00:00:00 +0000</pubDate><author>Boyuan Yang</author><guid>https://blog.hosiet.me/posts/2024/10/16/sendmail-compat-msmtp-gmail-app-password/</guid><description><![CDATA[<p>实验室新添加的服务器需要一个基本的邮件通知功能，也就是在某些事件发生时能够向外发送电子邮件进行通知。众所周知，配置电子邮件的基础设施通常会很麻烦。因此，我在寻找解决方案时有以下三点考虑：</p>
<ul>
<li>服务器程序发送电子邮件的接口应该通用。因此，我优先考虑使用提供了兼容<a href="https://wikipedia.org/wiki/Sendmail" target="_blank" rel="noopener noreffer "><code>/usr/sbin/sendmail</code></a>命令的软件。</li>
<li>避免额外注册邮箱账号的麻烦。因此我选择重复利用我已有的 GMail 账号。</li>
<li>考虑 GMail 的特有限制。由于使用 Google 主密码进行 SMTP 发信身份认证的操作已经被 GMail 认为不安全而禁用了，所以这次必须变相使用用户名和密码完成 SMTP 配置。Google 提供了一个名为 <code>App passwords</code> 的特别功能，能够根据需要创建一个起替代作用的纯文本密码。</li>
</ul>
<p>我最后选择的解决方案是 <code>msmtp</code> 配合 <code>msmtp-mta</code> 以及 GMail <code>SMTP + App Passwords</code> 组合。整个过程基本是遵循<a href="https://shallowsky.com/blog/tech/email/gmail-app-passwds.html" target="_blank" rel="noopener noreffer ">Gmail with an App Password</a>这篇英文博客文章来部署的。 本文的配置在2024年10月有效，但无法保证永远生效。请在进行配置之前先行验证方法的有效性。</p>
<h2 id="基本流程">基本流程</h2>
<ul>
<li>第零步：为自己的 Google 账号启用两步验证功能。</li>
<li>第一步：访问<a href="https://myaccount.google.com/apppasswords" target="_blank" rel="noopener noreffer ">App passwords</a>管理页面创建一个新的 <code>App password</code>。完成整个步骤，得到的应当是16位固定长度的密码。</li>
<li>第二步：在服务器上安装 <code>msmtp</code> 和 <code>msmtp-mta</code> 软件包。前者是核心组件，后者提供了 <code>sendmail</code> 命令的兼容接口。</li>
<li>第三步：在服务器上按照正常方式配置 msmtp GMail SMTP 发信。用户名仍然使用 GMail 电子邮箱地址，密码部分直接填入16位 <code>App password</code> 即可。</li>
<li>第四步：测试发信。</li>
</ul>
<h3 id="msmtp配置文件etcmsmtprc示例debianubuntu-系统"><code>msmtp</code>配置文件<code>/etc/msmtprc</code>示例（Debian/Ubuntu 系统）</h3>
<pre><code>defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt

account gmail
host smtp.gmail.com
port 465
tls_starttls off
from XXXXXX@gmail.com
user XXXXXX@gmail.com
password 1111222233334444

port 465
tls on
tls_starttls off

syslog LOG_MAIL

account default: gmail
</code></pre>
<p>对于基于 Debian 和 Ubuntu 的服务器，在写入配置之后，考虑按照<code>/usr/share/doc/msmtp/README.Debian</code>的建议执行下列命令以确保配置文件并非所有人可读：</p>]]></description></item></channel></rss>