我有一个脚本需要发送电子邮件来通知系统事件和状态 - 我认为这是一个非常常见的用例 - 我选择mailx
在我的 Fedora 服务器系统上使用此功能(为什么我不再记得)。
一切都很好,直到最近的一次升级,我开始每发送一封邮件就会收到一封额外的电子邮件。第一行标识邮件系统主机。第二行写着:
Enclosed is the mail delivery report that you requested.
Run Code Online (Sandbox Code Playgroud)
只是我并没有故意或自愿要求电子邮件发送报告!他们在升级后才开始出现。(或者是我的客户端垃圾邮件过滤器 - Thunderbird)正在为我杀死它们,我想?!很奇怪,有时做得很好,然后突然什么也没抓到?!-耸肩-)
我想我可以在邮件阅读器的“过滤器”中使用明确的指令来摆脱这些,但我宁愿首先不要生成它们 - 发送的电子邮件是有价值的,我只是不需要或者想要这些“交付报告”。
我从 mailx 的手册页开始。那里没有任何有用的东西,或者,至少,我不认识这种类型的任何设置。mailx
我强烈怀疑这是由和的相互作用以某种方式产生的Postfix
,尽管这只是一种预感。每次调用 时,我都会收到一份邮件状态报告mailx
,但当我通过相同的安装通过同一帐户发送邮件alpine
或Thunderbird
从同一帐户发送邮件时,我不会收到一份邮件状态Postfix
报告。
这是代码使用的模式:
/bin/mailx -n -s "subject" -s from=from_address to_address < content
Run Code Online (Sandbox Code Playgroud)
这-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> …
Run Code Online (Sandbox Code Playgroud)