Qmail+RAZOR v2+SpamAsassin 3.3.2+Qmail-Scannerな環境で、
添付ファイルに日本語名のdocxなどがある場合、
メールははじかれてしまい、送信者にはエラー
(451 qq temporary problem (#4.3.0))が届いていました。
/var/log/maillogを見ると以下の様なログが出ていました
Oct 3 19:15:04 xxxxxxx spamd[21333]: spamd: Unknown encoding: cp50221 at /usr/local/lib64/perl5/Encode/Guess.pm line 119, <GENxx> line xxx. Oct 3 19:15:04 xxxxxxx X-Qmail-Scanner-2.11:[xxxxxxx.xxxxxxx.jpxxxxxxxxxxxxxxxx]: spamd not returning valid content - try again
http://xoops.fens.net/modules/wiki/?Linux%2Fcfg%2FMail-SpamAssassin-3.3.2
によれば、decodeに失敗するとリストから除外してしまうとのこと。
上記を参照し、PerlのGuess.pmのコードを書き換えることで暫定対応しています。
# Perl修正
vi /usr/local/lib64/perl5/Encode/Guess.pm
[before]
117 my %try = %{ $obj->{Suspects} }; 118 for my $c (@_) { 119 my $e = find_encoding($c) or die "Unknown encoding: $c"; 120 $try{ $e->name } = $e; 121 DEBUG and warn "Added: ", $e->name; 122 }
[after]
my %try = %{ $obj->{Suspects} }; for my $c (@_) { my $e = find_encoding($c); #my $e = find_encoding($c) or die "Unknown encoding: $c"; if (defined $e) { $try{ $e->name } = $e; DEBUG and warn "Added: ", $e->name; } }
# spamd再起動
/etc/init.d/spamd stop
/etc/init.d/spamd status
/etc/init.d/spamd start
/etc/init.d/spamd status
# qmail再起動
initctl stop svscan
initctl start svscan
/var/qmail/bin/qmailctl stat
上記設定後、数万通のメールを受けていますが、問題は再発していません。
ひとまず良しとしています。
※バッドノウハウっぽくて上記を残すことに躊躇もあったのですが、
あくまで最終手段として、何かの参考になればと思い、残しておきます。上記参考URLには非常に助けられましたので。。。
「こんなのを広めるな!正解はこれだ!」というのがあれば
ぜひお教えくださいませ……