如何设置邮件传输代理?

我打算在我的Ubuntu服务器上发生特定事件时,使用mutt通过cron或附件向我的gmail地址发送自动电子邮件。 目前, mutt无法向外部电子邮件地址发送电子邮件,我相信这是因为我需要设置邮件传输代理。 如何选择合适的MTA以及如何设置它以执行我需要它做的事情?

选择要安装的MTA时,有几个选择; 第一个是你是否想要一个只发送 MTA,或者你需要一个完全成熟的邮件服务器。

这个Unix.SEpost提供了一个可用的只发送MTA的综合列表; 所有这些都已经为Ubuntu 10.10打包了。 选择仅发送MTA时,您可能需要考虑以下几点:

  1. 是否可以在发生故障时对电子邮件进行排队以便以后交付:IIRC,只有nullmailer可以执行此操作。

  2. 是否将替换系统邮件传递代理(在apt-cache show package的输出中查找一行Provides: mail-transport-agent )。 如果是,则所有来自系统的邮件(包括来自cron作业的报告,流行度统计等)将由您安装的MTA处理:如果您没有为root和其他用户设置正确的邮件别名,则电子邮件最终可能会在错误的地址(通常是您的ISP的某些系统管理员)交付。 目前,软件包nullmaileresmtp-run (但不是esmtp )和ssmtp都属于这一类。

  3. 所有仅发送MTA只会将您的电子邮件转发到另一台服务器(称为“中继主机”或“smarthost”;通常是您的ISP的SMTP服务器),然后让它处理真实Internet邮件传递的所有详细信息。 您需要确定连接到ISP服务器是否有任何特殊要求(例如,某种身份validation或TLS)并选择支持所需function的MTA(例如, ssmtp不支持任何类型的身份validation或SSL / TLS)。

完全成熟的邮件服务器包括exim , postfix和sendmail 。 Debian / Ubuntu的安装后安装脚本可以很好地为一些常见的设置生成工作配置(仅向本地系统发送邮件;通过“smarthost”发送电子邮件 – 即,您通过漏斗的邮件服务器您的所有电子邮件,通常是您的ISP的SMTP主机;具有完整入站和出站连接的Internet站点)。 恕我直言,postfix是最容易运行和配置的,但由于它function强大,其配置手册比任何仅发送的MTA都要长。

此外,设置邮件服务器的真正风险在于,如果您在本地配置中出错,最终会将邮件传送到错误的位置(读取:丢失)或使用开放式中继系统可以被垃圾邮件发送者使用(并且,相信我,他们可以在您意识到您的服务器之前找到一个开放的中继)。

我的建议是从只发送MTA开始,然后只有在你看到需要它时才升级到完整的邮件服务器(如果你只想发送电子邮件到你的GMail地址则不是这种情况)。

我推荐msmtp 。 设置其他邮件系统,例如sendmail ,肯定是非常麻烦的。 一旦你有msmtp设置,你可以将它与mutt一起使用,你也可以将它伪装成sendmail这样程序就不会知道两个MTA之间的区别。 网站上提供了完整的详细信息。

根据您的Ubuntu版本,下面的链接提供了您可以选择的所有MTA选项:

http://packages.ubuntu.com/precise/mail-transport-agent(12.04
http://packages.ubuntu.com/trusty/mail-transport-agent(14.04

就个人而言,我发现ssmtp很容易设置和运行,只需2个命令即可:

 $ sudo aptitude install mailutils ssmtp $ sudo dpkg-reconfigure ssmtp