• 使用 postfix 发送邮件神坑之无法收到邮件


    .

    .

    .

    .

    .

    先说一下在 Linux 下使用命令行发送邮件的方法。

    安装 mail 命令:

    >$ sudo apt install mailutils

    安装 mail 命令的同时会安装 postfix 软件包。实际上 mail 命令就是调用 postfix 进行发邮件的。

    然鹅,一定要注意,在配置 postfix 的时候填写主机名,一定得写成域名的格式,例如:

    我的主机名是 user-desktop,那么配置要写为 user-desktop.com。当然名字叫什么都可以,只要符合域名的规范就可以了。详细参考这里:https://www.rfc-editor.org/

    接下来使用 mail 命令发送邮件:

    >$ mail -s "user-desktop ${TIMESTAMP} daily" my_email@126.com < ${FILE_MAIL}

    然后发生了奇怪的现象,收到了系统退信:

    >$ sudo tail /var/log/mail.log
    Mar 20 16:01:22 user-desktop postfix/pickup[8725]: D387611E0252: uid=1000 from=<user@user-desktop>
    Mar 20 16:01:22 user-desktop postfix/cleanup[10165]: D387611E0252: message-id=<20210320080122.D387611E0252@user-desktop.com>
    Mar 20 16:01:22 user-desktop postfix/qmgr[8726]: D387611E0252: from=<user@user-desktop>, size=857, nrcpt=1 (queue active)
    Mar 20 16:01:22 user-desktop postfix/smtp[10167]: D387611E0252: to=<my_email@126.com>, relay=126mx02.mxmail.netease.com[220.181.15.152]:25, delay=0.14, delays=0.08/0/0.05/0.01, dsn=5.0.0, status=bounced (host 126mx02.mxmail.netease.com[220.181.15.152] said: 550 MI:IMF 126 mx35,z8mowACXjV3Sq1Vgc4C2FA--.2378S2 1616227283 http://mail.163.com/help/help_spam_16.htm?ip=114.245.117.98&hostid=mx35&time=1616227283 (in reply to MAIL FROM command))
    Mar 20 16:01:23 user-desktop postfix/cleanup[10165]: 00AEB11E0253: message-id=<20210320080123.00AEB11E0253@user-desktop.com>
    Mar 20 16:01:23 user-desktop postfix/qmgr[8726]: 00AEB11E0253: from=<>, size=3139, nrcpt=1 (queue active)
    Mar 20 16:01:23 user-desktop postfix/bounce[10570]: D387611E0252: sender non-delivery notification: 00AEB11E0253
    Mar 20 16:01:23 user-desktop postfix/qmgr[8726]: D387611E0252: removed
    Mar 20 16:01:23 user-desktop postfix/local[10571]: 00AEB11E0253: to=<user@user-desktop>, relay=local, delay=0.06, delays=0.03/0/0/0.03, dsn=2.0.0, status=sent (delivered to mailbox)
    Mar 20 16:01:23 user-desktop postfix/qmgr[8726]: 00AEB11E0253: removed

    仔细看我标红了的两个地方,一个是网易的服务器返回的消息:

    550 MI:IMF

    我先去查了一下网易的文档,在这里

    根据文档中的说明:

    •550 MI:IMF 发信人电子邮件地址不合规范。请参考http://www.rfc-editor.org/关于电子邮件规范的定义;

    说明我们的发件人地址有问题呀,于是继续看 log,发现发件人 from 字段是这样的:

    from=<user@user-desktop>

    奇怪了,竟然没有域名后缀,安装 postfix 的时候明明配置了域名的呀。

    于是打开 postfix 的配置文件:

    >$ sudo vim /etc/postfix/main.cf

    发现里面的主机配置确实是 user-desktop.com。

    没办法,只能仔细找找配置文件,看看有没有什么可疑的配置。

    于是找到了这样一个字段:

    append_dot_mydomain = no

    no 改为 yes,重新装载配置文件,再发一次邮件试试。

    >$ sudo postfix reload
    postfix/postfix-script: refreshing the Postfix mail system
    
    >$ mail -s "user-desktop ${TIMESTAMP} daily" my_email@126.com < ${FILE_MAIL}

    再去看 log:

    >$ sudo tail /var/log/mail.log
    Mar 20 16:04:07 user-desktop postfix/pickup[11106]: 69A2211E0253: uid=1000 from=<user@user-desktop>
    Mar 20 16:04:07 user-desktop postfix/cleanup[11147]: 69A2211E0253: message-id=<20210320080407.69A2211E0253@user-desktop.com>
    Mar 20 16:04:07 user-desktop postfix/qmgr[11107]: 69A2211E0253: from=<user@user-desktop.com>, size=20748, nrcpt=1 (queue active)
    Mar 20 16:04:07 user-desktop postfix/smtp[11149]: 69A2211E0253: to=<my_email@126.com>, relay=126mx02.mxmail.netease.com[220.181.15.155]:25, delay=0.21, delays=0.06/0/0.06/0.09, dsn=2.0.0, status=sent (250 Mail OK queued as mx38,1MmowAAXRLV3rFVgrkajFA--.15878S2 1616227447)
    Mar 20 16:04:07 user-desktop postfix/qmgr[11107]: 69A2211E0253: removed

    这次 from 字段确实是 user@user-desktop.com,网易服务器返回的消息是:250 Mail OK queued as mx38

    去网易邮箱里检查,果然收到了邮件。

    =================吐槽分割线=================

    折腾的期间还试过使用 mutt 命令来发送邮件。

    奇怪的是,在修改 postfix 配置文件之前,mutt 命令发送邮件的 from 字段就是正确的,网易的响应码也是 250,可是网易邮箱死活收不到邮件,而且也没有收到系统退信。

    mutt 命令发送邮件的参数与 mail 命令一样:

    >$ mutt -s "user-desktop ${TIMESTAMP} daily" my_email@126.com < ${FILE_MAIL}
    >$ sudo tail /var/log/mail.log
    Mar 20 16:26:14 user-desktop postfix/pickup[20219]: A3EA911E0255: uid=1000 from=<user>
    Mar 20 16:26:14 user-desktop postfix/cleanup[23967]: A3EA911E0255: message-id=<20210320082614.GA23946@user-desktop.com>
    Mar 20 16:26:14 user-desktop postfix/qmgr[20218]: A3EA911E0255: from=<user@user-desktop.com>, size=20438, nrcpt=1 (queue active)
    Mar 20 16:26:21 user-desktop postfix/smtp[23970]: A3EA911E0255: to=<my_email@126.com>, relay=126mx02.mxmail.netease.com[220.181.15.147]:25, delay=6.7, delays=0.09/0.01/6.1/0.48, dsn=2.0.0, status=sent (250 Mail OK queued as mx22,08mowAAHs0yrsVVgDYCnFA--.33253S2 1616228781)
    Mar 20 16:26:21 user-desktop postfix/qmgr[20218]: A3EA911E0255: removed

    在邮箱里检查,收不到此邮件   ┓( ´∀` )┏   实乃未解之谜。。

    不过用 mutt 命令查看邮件确实挺方便的。

    作者:dybai
    出自:http://www.cnblogs.com/0xcafebabe
    赞赏:3Ky9q5HVGpYseBPAUTvbJBvM3h3FQ3edqr
    本作品采用知识共享署名-相同方式共享 3.0 中国大陆许可协议进行许可。
    欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

  • 相关阅读:
    Spring总结(三)
    lucene全文检索
    知识点
    postman本地测试post接口
    第一份任务,写接口验证接口写文档
    spring Date JPA的主要编程接口
    springmvc之格式化要显示的小数或者日期。
    限制action所接受的请求方式或请求参数
    正则表达式映射
    Url通配符映射
  • 原文地址:https://www.cnblogs.com/0xcafebabe/p/14561024.html
Copyright © 2020-2023  润新知