You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure中Ubuntu VM配置SendMail 587端口后如何发送认证测试邮件?

在Azure Ubuntu虚拟机上配置SendMail 587端口认证并测试邮件发送

一、补全SendMail的SMTP认证配置

你已经配置了587端口,现在需要完善认证相关设置,确保SendMail能通过第三方SMTP服务器的身份验证:

  1. 编辑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记录解析。

  2. 创建认证信息文件/etc/mail/authinfo,写入你的邮箱账号和密码(如果是Gmail/Outlook这类服务商,建议用应用专用密码,而非普通登录密码):

    AuthInfo:[smtp.example.com] "U:your-email@example.com" "P:your-app-password" "M:PLAIN"
    
  3. 生成认证数据库文件:

    makemap hash /etc/mail/authinfo.db < /etc/mail/authinfo
    
  4. 重新编译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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 18:51:04