在 ubuntu 16.10 上调试 sendmail AUTH 设置
debugging sendmail AUTH settings on ubuntu 16.10
我一直在尝试强化 sendmail 服务器,试图确保用户必须使用 TLS 连接登录到 smtp 邮件服务器。我的证书是自签名的。
我可以说(其中 foobar 是服务器的名称)
ELHO foo
250-foobar Hello public [xx.xx.xx.xx], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP
AUTH PLAIN AGRwNDJAc2VydmVyLmRwMjY0Mi5mb3JjZTkuY28udWsAdmFkZXI0Mg==^M
535 5.7.0 authentication failed
授权字符串由
生成
perl -MMIME::Base64 -e 'print encode_base64("[=12=]0use\@foobar[=12=]0password")enter code here
我已经使用复制和粘贴来确保字符串没有输入错误。
TLS 握手正常,支持 auth 命令。用户代码和密码正确。我正在尝试找出它不起作用的原因。
我的sendmail.mc
define(`confAUTH_OPTIONS',`A p')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl
define(`CERT_DIR', `MAIL_SETTINGS_DIR`'certs')dnl
define(`confCACERT_PATH', `CERT_DIR')dnl
define(`confCACERT', `CERT_DIR/cacert.pem')dnl
define(`confSERVER_CERT', `CERT_DIR/sendmail-cert.pem')dnl
define(`confSERVER_KEY', `CERT_DIR/sendmail-key.pem')dnl
define(`confCLIENT_CERT', `CERT_DIR/sendmail-cert.pem')dnl
define(`confCLIENT_KEY', `CERT_DIR/sendmail-key.pem')dnl
任何尝试连接都被报告为
Jun 11 18:32:23 server sm-mta[30179]: STARTTLS=server, relay=public [84.92.92.26], version=TLSv1.2, verify=NOT, cipher=ECDHE-RSA-AES256-GCM-SHA384, bits=256/256
关于出了什么问题或我如何从 sendmail 获得任何额外输出的任何建议?
看来我设置sasl2失败了
要找出发生了什么,请执行
关闭 sendmail 服务器
service sendmail stop
使用下面的命令
/usr/sbin/sendmail -d95.99 -bD -X /tmp/test.log
这将转储整个 sendmail 对话
在我的例子中,我使用 strace 来找出正在访问的 sendmail 资源,它似乎在 sasl 上运行,但没有安装。
安装sasl2-bin包,编辑/etc/default/saslauthd开机自启动,修改认证方式为shadow。完成后,sendmail 很乐意做我想让它做的事。
我一直在尝试强化 sendmail 服务器,试图确保用户必须使用 TLS 连接登录到 smtp 邮件服务器。我的证书是自签名的。
我可以说(其中 foobar 是服务器的名称)
ELHO foo
250-foobar Hello public [xx.xx.xx.xx], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP
AUTH PLAIN AGRwNDJAc2VydmVyLmRwMjY0Mi5mb3JjZTkuY28udWsAdmFkZXI0Mg==^M
535 5.7.0 authentication failed
授权字符串由
生成perl -MMIME::Base64 -e 'print encode_base64("[=12=]0use\@foobar[=12=]0password")enter code here
我已经使用复制和粘贴来确保字符串没有输入错误。
TLS 握手正常,支持 auth 命令。用户代码和密码正确。我正在尝试找出它不起作用的原因。
我的sendmail.mc
define(`confAUTH_OPTIONS',`A p')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl
define(`CERT_DIR', `MAIL_SETTINGS_DIR`'certs')dnl
define(`confCACERT_PATH', `CERT_DIR')dnl
define(`confCACERT', `CERT_DIR/cacert.pem')dnl
define(`confSERVER_CERT', `CERT_DIR/sendmail-cert.pem')dnl
define(`confSERVER_KEY', `CERT_DIR/sendmail-key.pem')dnl
define(`confCLIENT_CERT', `CERT_DIR/sendmail-cert.pem')dnl
define(`confCLIENT_KEY', `CERT_DIR/sendmail-key.pem')dnl
任何尝试连接都被报告为
Jun 11 18:32:23 server sm-mta[30179]: STARTTLS=server, relay=public [84.92.92.26], version=TLSv1.2, verify=NOT, cipher=ECDHE-RSA-AES256-GCM-SHA384, bits=256/256
关于出了什么问题或我如何从 sendmail 获得任何额外输出的任何建议?
看来我设置sasl2失败了 要找出发生了什么,请执行
关闭 sendmail 服务器service sendmail stop
使用下面的命令
/usr/sbin/sendmail -d95.99 -bD -X /tmp/test.log
这将转储整个 sendmail 对话
在我的例子中,我使用 strace 来找出正在访问的 sendmail 资源,它似乎在 sasl 上运行,但没有安装。
安装sasl2-bin包,编辑/etc/default/saslauthd开机自启动,修改认证方式为shadow。完成后,sendmail 很乐意做我想让它做的事。