mimedefangのエラー

sendmailのmilterとしてmimedefangをつかってSpamAassasinを組み合わせてスパムフィルタをしてるんですが、まれにエラーをはいてメールをリターンしていることに気がつきました。ログはこんなの。

Jun 12 05:29:47 hoge mimedefang[22954]: [ID 738095 mail.warning] mxxxxxxxxxxxxx: smfi_chgheader returned MI_FAILURE
Jun 12 05:29:47 hoge mimedefang[22954]: [ID 738095 mail.warning] mxxxxxxxxxxxxx: smfi_addheader returned MI_FAILURE
Jun 12 05:31:37 hoge mimedefang[22954]: [ID 738095 mail.warning] mxxxxxxxxxxxxx: smfi_chgheader returned MI_FAILURE
Jun 12 05:31:37 hoge mimedefang[22954]: [ID 738095 mail.warning] mxxxxxxxxxxxxx: smfi_addheader returned MI_FAILURE

最初は単位時間あたりの到着メール数が多くてmimedefangが対処しきれないせいかと思っていたのですが、どうも違うみたい。mimedefang.cのソースをみるとこのエラーはメールになにかヘッダを追加または、変更しようとしてそこでエラーになっている。たとえばこんなところ。

        case 'M':
            if (!rejecting) {
                /* New content-type header */
                percent_decode(rptr+1);
                if (strlen(rptr+1) > 0) {
                    MD_SMFI_TRY(smfi_chgheader, (ctx, "Content-Type", 1, rptr+1));
                }
                MD_SMFI_TRY(smfi_chgheader, (ctx, "MIME-Version", 1, "1.0"));
            }
            break;

このMD_SMFI_TRYマクロのところです。
sendmailからmimedefangへの通信はちゃんとできていて、mimedefangがなんらかのエラーをはいてそこでsendmailがメールをエラーリターンしているみたい。その時間帯にCPUが大忙しだったり、メモリが足りなくなってるってことはないみたい。

とりあえずはsendmailでmilterを読んでいる設定のところでmimedefangがエラー返したら、無視してSMTPコネクションをそのまま継続するように。

(変更前) Xmimedefang, S=:/var/spool/MIMEDefang/mimedefang.sock,F=T,T=S:180s;R:240s;E:5m
(変更後) Xmimedefang, S=:/var/spool/MIMEDefang/mimedefang.sock,T=S:180s;R:240s;E:5m

Fフラグの意味は

sendmail 第3版〈VOLUME1〉運用編

sendmail 第3版〈VOLUME1〉運用編

の372ページあたり参照。