问题描述
我希望我的 cronjobs 能够从我的家用计算机发送邮件。我的服务器配置 exim4 如下:
dc_eximconfig_configtype='internet'
dc_other_hostnames=''
dc_local_interfaces='127.0.0.1'
dc_readhost=''
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='maildir_home'
然而,在家里,我的 ISP 会阻止直接通过防火墙发送的邮件。我有一个受密码保护的 ssl smtp 服务器,我可以通过它路由邮件,但我一直未能成功地弄清楚如何配置 exim4 来完成这项工作。我希望有人能给我一个配置示例,我可以在其中插入主机名、用户名、密码和 “use ssl”,以使其通过单个 smtp 服务器发送邮件。
最佳方法
我终于找到了 detailed set of instructions by Tony Scelfo that actually work 。看来您必须在端口 587 上使用传输层安全性 (TLS)。我还没有让 SSL SMTP 工作。
首先运行 sudo dpkg-reconfigure exim4-config
并使用以下配置选项:
-
邮件配置通用类型:smarthost发送邮件;通过 SMTP 或 fetchmail 接收
-
系统邮件名称:
-
IP地址 用于侦听传入 SMTP 连接:127.0.0.1
-
接受邮件的其他目的地:
-
转发邮件的机器:
-
传出智能主机的 IP 地址或主机名:mail.example.com::587
-
在外发邮件中隐藏本地邮件名称吗?\n
-
是 – 所有发出的邮件都将显示为来自您的 Gmail 帐户
-
否 – 使用有效发件人姓名标头发送的邮件将保留发件人姓名
-
-
保持 DNS-queries 的数量最小(Dial-on-Demand)?不
-
本地邮件投递方式:
-
将配置文件拆分成小文件?是(接下来您需要编辑其中一个文件)
然后运行 sudo vi /etc/exim4/passwd.client
并为您的邮件主机添加以下行及其具有的任何别名(通过 nslookup
找到)。替换 和与您要通过其路由邮件的帐户):
mail.example.com:<email address>:<password>
mail.yourhosting.provider:<email address>:<password>
编辑 passwd.client
文件后,运行 sudo update-exim4.conf
,这会将您的更改集成到 Exim4 配置中。
运行 sudo /etc/init.d/exim4 restart
并确保服务正确停止和启动。如果服务无法重新启动,则可能是您编辑 passwd.client
文件时出现问题。
如果 Exim4 重新启动,请继续运行 sudo tail -f /var/log/exim4/mainlog
以查看邮件日志。在另一个窗口中,从您的系统发送一封电子邮件,并确保您看到其中包含 R=smarthost T=remote_smtp_smarthost H=gmail-smtp-msa.l.google.com ... X=TLS-1.0:RSA_ARCFOUR_MD5:16
的记录。 X=TLS
表示邮件正在使用传输层安全性发送,这正是您想要的。
次佳方法
如果您的 ISP 需要身份验证,则应将 dc_smarthost 设置为 ISP 使用的邮件服务器主机名和端口组合,并将 dc_eximconfig_configtype 设置为 “smarthost”,如下所示:
dc_eximconfig_configtype='smarthost'
dc_smarthost='mail.example.com::587'
然后,您可以将凭据添加到 /etc/exim4/passwd.client
,如下所示:
mail.example.com:username:password
然后,通过 exim4 服务器发送的任何邮件都将通过此邮件主机进行路由。
第三种方法
这对我来说非常有效。我的 ISP 使用端口 25 和 dc_smarthost='myisp.mail.server:25'
\n更改此文件并发出命令后:
-
update-exim4.conf
-
/etc/init.d/exim4 restart
在我进行了通过 exim4 经典示例发送电子邮件的测试后,例如:
echo "content of mail body with pt-br chars ação avião língua é essa em 1609." | mail -s "Confirmar 16DOM" my-user-in-isp@my-domain-url
这些流可以正常发送到 my-domain-url
中的 my-user
收件箱。