如何配置 exim4 以通过受密码保护的 ssl smtp 邮件服务器发送邮件?

Ste*_*ler 20 email mta cron smtp

我希望我的 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'
Run Code Online (Sandbox Code Playgroud)

但是,在家里,我的 ISP 阻止了直接通过防火墙发送的邮件。我有一个受密码保护的 ssl smtp 服务器,我可以通过它来路由邮件,但是我在弄清楚如何配置 exim4 以使其工作时没有成功。我希望有人能给我一个配置示例,我可以在其中插入主机名、用户名、密码和“使用 ssl”以使其通过单个 smtp 服务器发送邮件。

Ste*_*ler 27

我终于找到了一组由 Tony Scelfo 提供的实际有效详细说明。看来您必须在端口 587 上使用传输层安全性 (TLS)。我还没有让 SSL SMTP 工作。

首先运行sudo dpkg-reconfigure exim4-config并使用这些配置选项:

  • 邮件配置的一般类型: smarthost发送的邮件;通过 SMTP 或 fetchmail 收到
  • 系统邮件名称: <您的主机名>
  • 侦听传入 SMTP 连接的 IP 地址: 127.0.0.1
  • 接受邮件的其他目的地: <您的主机名>
  • 中继邮件的机器: <留空>
  • 外发智能主机的 IP 地址或主机名: mail.example.com :: 587
  • 在外发邮件中隐藏本地邮件名称?
    • 是 - 所有外发邮件似乎都来自您的 Gmail 帐户
    • 否 - 使用有效发件人姓名标头发送的邮件将保留发件人姓名
  • 保持最少的 DNS 查询数量(按需拨号)?
  • 本地邮件投递方式: <选择你喜欢的一种>
  • 将配置文件拆分成小文件?是(接下来您需要编辑其中一个文件)

然后运行sudo vi /etc/exim4/passwd.client并为您的邮件主机及其所有别名(通过 找到nslookup)添加以下行。将 <email address> 和 <password> 替换为您要通过其路由邮件的帐户):

mail.example.com:<email address>:<password>
mail.yourhosting.provider:<email address>:<password>
Run Code Online (Sandbox Code Playgroud)

编辑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意味着邮件是通过传输层安全发送的,这正是您想要的。

  • 无需“将配置文件拆分为小文件”,因为无论哪种方式,`/etc/exim4/passwd.client` 都是一个单独的文件。 (2认同)

dob*_*bey 7

如果您的 ISP 需要身份验证,您应该将 dc_smarthost 设置为您的 ISP 使用的邮件服务器主机名和端口组合,并将 dc_eximconfig_configtype 设置为“smarthost”,如下所示:

dc_eximconfig_configtype='smarthost'
dc_smarthost='mail.example.com::587'
Run Code Online (Sandbox Code Playgroud)

然后,您可以添加您的凭据,/etc/exim4/passwd.client如下所示:

mail.example.com:username:password
Run Code Online (Sandbox Code Playgroud)

然后,通过您的 exim4 服务器发送的任何邮件都将通过此邮件主机路由。

  • 在 update-exim4.conf 中,我为 smarthost 行添加了两个冒号,就像在 `dc_smarthost='mail.example.com::587'` 中一样,这让一切变得不同!终于开始发邮件通了。 (11认同)