Ric*_*d T 1 postfix mailx fedora-32
我有一个脚本需要发送电子邮件来通知系统事件和状态 - 我认为这是一个非常常见的用例 - 我选择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>
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
Run Code Online (Sandbox Code Playgroud)
我注意到有时会扩大送货地址,有时则不会。因此,我认为,这将排除已知的怪癖,即Postfix
当被要求进行扩展验证时发送状态电子邮件,“这是否存在”检查。
在这种情况下,所有交付都是本地的,但它们可能是远程的 - 我只是现在没有实时发生 - 这是一个生产中的服务器。
我努力寻找在哪里可以找到它们,但大多数网络搜索都指向讨论退回状态消息的材料。不,错了!
系统:
Fedora Server 32 (booted into 31 presently)
mailx 12.5 7/5/10
postfix-3.5.4-2.fc32.x86_64
Run Code Online (Sandbox Code Playgroud)
啊哈,我终于能够重现你的问题了。
如果您使用其(详细)选项, Heirloom Mail命令mailx
将请求传递状态通知。-v
不幸的是,这种行为似乎没有记录。手册页只说:
-v Verbose mode. The details of delivery are displayed on the
user's terminal.
Run Code Online (Sandbox Code Playgroud)
除了请求 DSN 之外,此选项仅将详细状态消息打印到 stdout,无论如何您都不可能对其执行任何操作。
在这种情况下打印的唯一消息-v
是:
Mail Delivery Status Report will be mailed to <sender>.
Run Code Online (Sandbox Code Playgroud)
您应该可以-v
从命令行中删除。
归档时间: |
|
查看次数: |
2632 次 |
最近记录: |