Exim4 SMTP服务器允许未经身份validation的用户发送电子邮件

我在专用服务器上使用Debian 7.x amd64 + Exim 4.82,在共享主机上也有一个可用的SMTP服务器。 我想在我的VPS上设置一个SMTP,它将包含一些特殊的交付脚本/filter(例如,为某些帐户发送所有即将发送的电子邮件的副本)

目前VPS的情况如下:

  • 它通过智能主机发送本地(入站)电子邮件,无需任何身份validation
  • 它通过智能主机发送所有出站电子邮件,而不进行任何authentication<==不需要的行为
  • 如果SMTP客户端的身份validationtypes设置为“正常密码”,则会要求input凭据并正确传送电子邮件
  • 以上所有情况下,在客户端启用或不启用TLSencryption的方式都是相同的

/etc/exim4/update-exim4.conf.conf

dc_eximconfig_configtype='smarthost' dc_other_hostnames='myhost.mycompany.com; localhost' dc_local_interfaces='127.0.0.1; xxx.xxx.xxx.xxx' <=== public IPv4 address dc_readhost='mycompany.com' dc_relay_domains='*' dc_minimaldns='false' dc_relay_nets='' dc_smarthost='smtp.external.com' CFILEMODE='644' dc_use_split_config='false' dc_hide_mailname='true' dc_mailname_in_oh='true' dc_localdelivery='maildir_home' 

/etc/exim4/passwd.client内容:

 *:smtp.external.com:secret 

我已经生成了自签名证书并启用了TLS /etc/exim4/exim4.conf.localmacros

 MAIN_TLS_ENABLE = 1 

我试图使用plan_text和plain_login,现在我正在使用saslauthd(我确定它的工作原理,因为我已经用postfixtesting过了)。

exim -bP authenticator_list输出:

 plain_saslauthd_server login_saslauthd_server cram_md5 plain login 

telnet myhost.mycompany.com 25输出:

 EHLO test 250-myhost.mycompany.com Hello xxxxxxxxx [xxx.xxx.xxx.xxx] 250-SIZE 52428800 250-8BITMIME 250-PIPELINING 250-STARTTLS 250 HELP ... AUTH PLAIN <random string> 503 AUTH command used when not advertised 

我认为这是因为没有公布authentication者(EHLO响应中没有250-AUTH …行),但是默认情况下所有的标准authentication者都有这种情况

 .ifndef AUTH_SERVER_ALLOW_NOTLS_PASSWORDS server_advertise_condition = ${if eq{$tls_in_cipher}{}{}{*}} .endif 

所以我假设我必须将AUTH_SERVER_ALLOW_NOTLS_PASSWORDS添加到我的/etc/exim4/exim4.conf.localmacros文件中,以便处理server_advertise_condition条件,但是如果客户端没有使用TLSencryption,则不会被视为已启用(I'对不对?)。

所以我现在有点困惑现在要做什么..我想我的configuration工作如下:

  • 本地fetchmail(邮件)请求在本地路由而不需要任何authentication(即cron作业)
  • 远程(普通或encryption,无所谓)请求应该从任何目的地(我的同事的笔记本电脑)通过外部SMTP(智能主机)路由到任何其他目的地(我们的客户)路由,并且必须要求用户authentication,否则它将拒绝/拒绝请求

dc_relay domains删除* 。 这允许任何人转播。 如果您正在中继本地networking,则将其IP范围置于dc_relay_nets

如果您希望允许经过身份validation的用户从任何地方发送邮件,则需要经过身份validation的用户的接受规则。 默认configuration应该包括适当的规则来绕过对已authentication用户的检查,以便他们可以像在本地networking上那样发送电子邮件。

如果将AUTH_SERVER_ALLOW_NOTLS_PASSWORDS添加到您的/etc/exim4/exim4.conf.localmacros ,您将能够在非安全连接上testing身份validation。 最好的做法是不要让任何可以嗅探networking的人都能获得您的证书。

您可能需要添加此macros以启用远程用户的提交端口。 提交端口是远程提交的首选端口。

  daemon_smtp_ports = 25 : 587 

在我的默认configuration中,服务器端的validation器被注释掉了。 我已经成功地将它们用于纯文本和md5身份validation。 用户名和密码是第二和第三个字段。