Azure中Ubuntu VM配置SendMail 587端口后如何发送认证测试邮件?
在Azure Ubuntu虚拟机上配置SendMail 587端口认证并测试邮件发送
一、补全SendMail的SMTP认证配置
你已经配置了587端口,现在需要完善认证相关设置,确保SendMail能通过第三方SMTP服务器的身份验证:
编辑SendMail主配置文件
/etc/mail/sendmail.mc,添加或确认以下配置段:# 指定要中继的SMTP服务器(替换成你的邮箱服务商SMTP地址,比如smtp.office365.com) define(`SMART_HOST',`[smtp.example.com]')dnl # 强制使用587端口 define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl # 启用支持的认证机制 define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl # 指定认证信息存储位置 FEATURE(`authinfo',`hash -o /etc/mail/authinfo.db')dnl注意:SMTP服务器地址要用方括号括起来,避免SendMail做MX记录解析。
创建认证信息文件
/etc/mail/authinfo,写入你的邮箱账号和密码(如果是Gmail/Outlook这类服务商,建议用应用专用密码,而非普通登录密码):AuthInfo:[smtp.example.com] "U:your-email@example.com" "P:your-app-password" "M:PLAIN"生成认证数据库文件:
makemap hash /etc/mail/authinfo.db < /etc/mail/authinfo重新编译SendMail配置并重启服务:
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf systemctl restart sendmail
二、测试邮件发送
方式1:用sendmail命令(带详细日志)
在终端执行以下命令,替换成实际的发件人和收件人邮箱:
sendmail -v recipient@test.com <<EOF From: your-email@example.com Subject: SendMail 587端口测试 这是测试邮件内容,验证SendMail认证发送是否正常。 EOF
-v参数会输出完整的交互日志,发送成功的话会看到250 2.0.0 Ok: queued as XXXXX的提示;如果失败,日志里会明确说明原因(比如认证失败、服务器拒绝)。
方式2:用mail命令(更简洁)
先安装mailutils(如果没装的话):
apt update && apt install -y mailutils
然后发送测试邮件:
echo "测试邮件内容" | mail -s "SendMail 587测试" -a "From:your-email@example.com" recipient@test.com
三、常见问题排查
- 查看SendMail日志定位问题:
tail -f /var/log/mail.log,日志是排查发送失败的核心依据。 - 确认Azure虚拟机的网络安全组(NSG)已放行出站TCP 587端口,默认Azure允许这个端口,但最好检查一下。
- 部分邮箱服务商(如Gmail)需要开启两步验证后生成应用专用密码,或者在账号设置里允许“不太安全的应用访问”(不推荐,优先用应用专用密码)。
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

