0

我在 server1 和 server2 上都安装了 sendmail。它们使用相同的配置文件:sendmail.mc。我可以使用 PC 上的电子邮件客户端向/从同一服务器上的用户发送/接收邮件。但我无法向另一台服务器上的用户发送电子邮件。例如,我无法使用电子邮件客户端从 aaa@server1domain.com 向 bbb@server2domain.com 发送电子邮件。我已将我的 PC 的 IP 地址添加到 server1 上的 /etc/mail/access(连接:zz.zz.zz.zz RELAY)并重建了 access.db。查看 /var/log/maillog,server1 上的 sendmail 成功接受了 PC 的邮件,但连接 server2 时等待了很长时间

4 月 3 日 07:21:06 server1 sendmail[19771]: v33BKxfr019769: server1.xxxxx.com 上的 SMTP 传出连接

然后超时:

4 月 3 日 07:26:06 server1 sendmail[19771]:v33BKxfr019769:等待来自 server2domain.com 的输入超时。在客户问候期间

4 月 3 日 07:26:06 server1 sendmail[19771]: v33BKxfr019769: to=, ctladdr= (501/501), delay=00:05:04, xdelay=00:05:00, mailer=esmtp, pri=121178,中继=server2domain.com。[yy.yy.yy.yy],dsn=4.0.0,stat=Deferred:与 server2domain.com 的连接超时。

在 server2 上,日志为:

4 月 3 日 07:18:02 server2 sendmail[20121]: v33BI2Os020121: 分配的 id

4 月 3 日 07:18:02 server2 sendmail[20121]:NOQUEUE:从 [xx.xx.xx.xx] 连接

4 月 3 日 07:18:02 server2 sendmail[20121]: AUTH: 可用 mech=ANONYMOUS,允许 mech=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5

4 月 3 日 07:18:02 server2 sendmail[20121]: v33BI2Os020121: Milter: 没有主动过滤器

4 月 3 日 07:23:02 server2 sendmail[20121]: STARTTLS=server, info: fds=6/4, err=5

4 月 3 日 07:23:02 server2 sendmail[20121]:STARTTLS=server,错误:accept failed=0,SSL_error=5,errno=0,retry=-1,relay=[xx.xx.xx.xx]

4 月 3 日 07:23:02 server2 sendmail[20121]:v33BI2Os020121:断开级别 1

4 月 3 日 07:23:02 server2 sendmail[20121]:v33BI2Os020121:在后台,pid=20121

Apr 3 07:23:02 server2 sendmail[20121]: v33BI2Os020121: [xx.xx.xx.xx] 在连接到 MTA-SSL 期间未发出 MAIL/EXPN/VRFY/ETRN

我可以使用 openssl 命令成功地向 server1 上的 server2 发送电子邮件,并且不需要输入用户名/密码。sendmail.mc 是:

divert(-1)dnl
include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for linux')dnl
OSTYPE(`linux')dnl
define(`confDEF_USER_ID', ``8:12'')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST', `True')dnl
define(`confDONT_PROBE_INTERFACES', `True')dnl
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
define(`confCACERT_PATH', `/etc/pki/tls/certs')dnl
define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')dnl
define(`confSERVER_CERT', `/etc/pki/tls/certs/sendmail.pem')dnl
define(`confSERVER_KEY', `/etc/pki/tls/certs/sendmail.pem')dnl
define(`confCRL', `/etc/pki/tls/certs/revoke.crl')
define(`confCLIENT_CERT', `/etc/pki/tls/certs/sendmail.pem')
define(`confCLIENT_KEY', `/etc/pki/tls/certs/sendmail.pem')
define(`confTO_IDENT', `0')dnl
FEATURE(`no_default_msa', `dnl')dnl
FEATURE(`smrsh', `/usr/sbin/smrsh')dnl
FEATURE(`mailertable', `hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
EXPOSED_USER(`root')dnl
DAEMON_OPTIONS(`Family=inet, Port=465, Name=MTA-SSL, M=s')dnl
CLIENT_OPTIONS(`Family=inet')dnl
FEATURE(`accept_unresolvable_domains')dnl
LOCAL_DOMAIN(`localhost.localdomain')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 465')
define(`ESMTP_MAILER_ARGS', `TCP $h 465')
MAILER(smtp)dnl
MAILER(procmail)dnl

两个 sendmail 都侦听端口 465。我怀疑问题与身份验证有关,但不知道原因。

请帮忙,谢谢!

采纳 Andrzej A. Filip 的建议,去掉 sendmail.mc 中的这两行后,server1 的日志出现如下错误:

Apr 3 13:02:25 server sendmail[19927]: v33BKxfr019769: makeconnection (server2domain.com. [yy.yy.yy.yy]) 失败:连接被 server2domain.com 拒绝。Apr 3 13:02:25 server sendmail[19927]: v33BKxfr019769: makeconnection (server2domain.com. [yy.yy.yy.yy]) 失败:连接被 server2domain.com 拒绝。Apr 3 13:02:25 服务器 sendmail[19927]: v33BKxfr019769: to=, ctladdr= (501/501), delay=05:41:23, xdelay=00:00:01, mailer=esmtp, pri=301178,中继=server2domain.com。[yy.yy.yy.yy],dsn=4.0.0,stat=Deferred:连接被 server2domain.com 拒绝。

server2 上没有记录任何消息。

我认为如果没有这两行,server1 上的 sendmail 将尝试通过端口 25 连接 server2,而不是 sendmail 正在侦听的端口 465。

4

1 回答 1

1

sendmail 和 OUTGOING smtps (465) 连接

smtps (465) 在任何 SMTP 级别通信之前启动 SSL 会话。AFAIR sendmail 本身不支持传出连接。
删除以下两行,将您的 sendmail.mc 重新编译为 sendmail.cf,重新启动或(发送信号)HUP 您的 sendmail 守护程序。

define(`RELAY_MAILER_ARGS', `TCP $h 465')
define(`ESMTP_MAILER_ARGS', `TCP $h 465')
于 2017-04-03T15:33:40.967 回答