我有一个脚本需要发送电子邮件来通知系统事件和状态——我认为这是一个非常常见的用例——我选择mailx
在我的 Fedora 服务器系统上使用它(为什么我不再记得了)。
一切都很好而且很花哨,直到最近的一次升级之后,我开始每发送一封电子邮件就收到一封额外的电子邮件。第一行标识邮件系统主机。第二行内容如下:
Enclosed is the mail delivery report that you requested.
除了我没有故意或自愿要求电子邮件发送报告!他们刚刚开始出现在升级后。(或者我的客户端垃圾邮件过滤器 - 雷鸟)正在为我杀死他们,我想?!很奇怪,有时候做得很好,然后突然什么都没抓到?!-耸耸肩-)
我想我可以在我的邮件阅读器的“过滤器”中使用一个明确的指令来摆脱这些,但我宁愿它们不是首先生成的——发送的电子邮件是有价值的,我只是不需要或想要这些“交付报告”。
我从mailx 的手册页开始。那里没有什么用处,或者,至少,我不认识这种类型的东西的任何设置。mailx
我强烈怀疑这是由and的交互产生的Postfix
,尽管这只是一种预感。每次调用 时,我都会得到一份邮件状态报告,但是当我通过相同的安装通过或从同一帐户mailx
发送邮件时,却没有。alpine
Thunderbird
Postfix
这是代码使用的模式:
/bin/mailx -n -s "subject" -s from=from_address to_address < content
该-n
方法不读取任何本地配置。表示设置一个“-S
变量”,在这种情况下指定一个发件人地址。
我取了 Postfix 队列 ID 并使用 grep 在以下位置找到它/var/log/maillog
:
Aug 11 12:14:32 fs1 postfix/pickup[233386]: C834918E658F: uid=nnnn from=<SystemUsername>
Aug 11 12:14:32 fs1 postfix/cleanup[237953]: C834918E658F: message-id=<5f32ee18.AXOWyPor64xZtCVH%From@EmailAddress>
Aug 11 12:14:32 fs1 postfix/qmgr[4780]: C834918E658F: from=<SystemUsername@PostfixsPrimaryFQDN>, size=1511, nrcpt=1 (queue active)
Aug 11 12:14:32 fs1 postfix/local[237956]: C834918E658F: to=<Recipient@EamilAddress>, relay=local, delay=0.14, delays=0.05/0/0/0.08, dsn=2.0.0, status=sent (delivered to mailbox)
Aug 11 12:14:32 fs1 postfix/bounce[238851]: C834918E658F: sender delivery status notification: E2BC718E6D06
Aug 11 12:14:32 fs1 postfix/qmgr[4780]: C834918E658F: removed
我注意到有时送货地址会扩大,有时则不会。因此,我认为,这将排除已知的怪癖,即Postfix
当被要求进行扩展验证时发送状态电子邮件,“这是否存在”检查。
在这种情况下,所有交付都是本地的,但它们可能是远程的——我只是现在没有现场发生这种情况——这是一个生产中的服务器。
我一直在努力寻找在哪里可以找到它们,但大多数我的网络搜索都指向我讨论退回状态消息的材料。不对,错了!
系统:
Fedora Server 32 (booted into 31 presently)
mailx 12.5 7/5/10
postfix-3.5.4-2.fc32.x86_64
啊哈,我终于能够重现您的问题了。
如果您使用其(详细)选项,
mailx
传家宝邮件命令将请求传递状态通知。-v
不幸的是,这种行为似乎没有记录。手册页只说:除了请求 DSN 之外,此选项仅将详细状态消息打印到标准输出,无论如何您都不太可能使用它。
-v
在这种情况下打印的唯一消息是:您应该可以
-v
从命令行中删除。