Sendmail在DiskQuota情况下重复发邮件问题的解决

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

Solaris 8 下自带的 /usr/lib/mail.local 程序,只有两个参数, -d 和 -f 。 mail.local 的作用就是当 sendmail 接收到送往本地的邮件时,直接往 /var/mail/username Append。

然而,这个 Solaris 自带的早期版本的 mail.local 不能用 -b 参数让磁盘限额问题出现时,返回 Permenent 错误而停止发送。

所以,当 sendmail.cf 的 Mlocal 节不使用 -b 参数时 , sendmail 会重复往邮件接收人发邮件,当邮件接收人带有很多 CC 的抄送时,就会有大量的邮件发往“受害者”,原文的解释如下:

http://www.natur.cuni.cz/~mmokrejs/sendmail/#installation

The local mailer is the only commonly used non-SMTP mailer which

could fail for some recipients but succeed for others. By

comparison, an error from a UUCP mailer would normally be for all

recipients of that message with uucp addresses in the same

transaction.

But the local mailer can fail for an individual recipient. The

recipient might have messed up mailbox permissions. Or he/she might

be over disk quota. The interface with non-smtp (non-lmtp) mailers

does not allow individual identification of which recipient address

caused the error. If there is a temporary error for one recipient

(over quota, for example), sendmail treats it as a temporary error

for all local recipients from this transaction, and retries to all

addresses. If there is a permanent error, the error message suggests

that mail to all recipients failed. If the 'm' flag is not used,

there is only one recipient for the transaction and the problem does

not arise. Or, if an LMTP local delivery agent is used, then

individual response codes are given and the problem does not arise.

Sendmail 8.12.7 在 Solaris 8 环境下编译后,不会自动编译生成 /usr/lib/mail.local ,必须重新手工编译:

cd /usr/local/src/senmdail-8.12.7/mail.local

sh ./Build force-install

然后修改 /etc/mail/sendmail.cf 中添加

Mlocal 行中 mail.local -d 为 mail.local -bd 。

这样就解决了有抄送并且收件人之一有 Over Disk Quota 时,接收者收到重复邮件的困扰。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航