问题描述
当我的 Ubuntu 服务器上发生特定事件时,我打算使用 mutt
通过 cron
或 at
发送带有附件的自动电子邮件到我的 Gmail 地址。目前,mutt
无法向外部电子邮件地址发送电子邮件,我相信这是因为我需要设置邮件传输代理。我该如何选择合适的 MTA 以及如何设置它来执行我需要它执行的操作?
最佳方法
选择要安装的 MTA 时需要做出几个选择;\n第一个是您是否需要 send-only MTA 还是需要 \nfully-fledged 邮件服务器。
This Unix.SE post \n提供可用的 send-only MTA 的完整列表;所有这些都已针对 Ubuntu 10.10 进行了打包。选择 send-only MTA 时\n您可能需要考虑以下几点:
-
是否可以在失败的情况下对 e-mails 进行排队以便稍后交付:IIRC,只有
nullmailer
可以执行此操作。 -
是否会替换系统邮件传递代理(在
apt-cache\nshow package
的输出中查找\n行Provides: mail-transport-agent
)。如果是这样,则来自系统的所有邮件(包括来自 cron 作业的报告、流行度统计信息等)都将由您安装的 MTA 处理:如果您没有为 root 和其他用户设置正确的邮件别名,电子邮件可能会\n最终发送到错误的地址(通常是\n您的 ISP 的某个系统管理员)。目前,包nullmailer
、esmtp-run
(但不包括esmtp
)和ssmtp
属于此类。 -
所有 send-only MTA 只会将您的电子邮件转发到另一台服务器\n(称为 “relay host” 或 “smarthost”;通常是您的 ISP 的 SMTP\n服务器),然后让它处理真正的 Internet\n邮件传送的所有细节。您需要弄清楚连接到 ISP 服务器是否有任何特殊要求(例如某种身份验证或 TLS),并选择支持所需功能的 MTA(例如
ssmtp
不支持任何类型)没有身份验证或 SSL/TLS)。
Fully-fledged 邮件服务器包括 exim 、\n postfix 和\n sendmail 。 Debian/Ubuntu 的\npost-installation 安装脚本\n可以很好地为某些常见设置生成工作配置\n(仅将邮件发送到本地系统;通过\n”smarthost” 发送电子邮件——即您的邮件服务器)将您的所有电子邮件集中到\n,通常是您的 ISP 的 SMTP 主机;具有完整\n入站和出站连接的互联网站点)。恕我直言,postfix 是最容易运行和配置的,但由于它功能强大,其配置手册比任何 send-only MTA 都要长。
此外,设置邮件服务器的真正风险在于,如果您在本地配置中犯了错误,您最终会将邮件发送到错误的地方(即:丢失),或者更糟糕的是,邮件将被发送到错误的地方(即丢失),或者更糟糕的是,邮件将被发送至错误的地方(即丢失),或者更糟糕的是,邮件将被发送到 nopen-relay垃圾邮件发送者可以使用的系统(并且,相信我,他们\n可以在您意识到您的服务器是一个开放中继之前找到一个开放中继)。
我的建议是从 send-only MTA 开始,然后\n仅在您认为需要时才升级到完整的邮件服务器(如果您只想将电子邮件发送到您的 GMail\n地址,则情况并非如此)。
次佳方法
我会推荐 msmtp
。设置其他邮件系统,例如 sendmail
,肯定是相当麻烦的。设置 msmtp
后,您可以将其与 mutt
一起使用,也可以将其伪装为 sendmail
,以便程序不会知道两个 MTA 之间的差异。完整详细信息请参见 the website.
第三种方法
下面的链接提供了您可以根据您的 Ubuntu 版本进行选择的所有 MTA 选项:
http://packages.ubuntu.com/precise/mail-transport-agent(适用于 12.04)\n http://packages.ubuntu.com/trusty/mail-transport-agent(适用于 14.04)
就我个人而言,我发现 ssmtp
非常容易设置和运行,只需 2 个命令即可:
$ sudo aptitude install mailutils ssmtp
$ sudo dpkg-reconfigure ssmtp