qmail + qmail-scanner + spamassassin + clamav

| | コメント(0) | トラックバック(0)

qmailを利用したメールゲートウェイをテスト構築した時のメモ。

その内、ちゃんとした記事を書きますが、今回ハマったqmail-scannerの設定を書いときます。
spamassassinとclamavの導入、設定は他の構築サイトを参照してください。

[事象]
qmail-scannerのインストール時に、--notify recips と指定しているのに、受信先にメール通知が届かない。

[対応策]
今回の場合、外部SMTPサーバに上記設定をしました。
ドメインのMXレコードは外部SMTPサーバに向いていますが、外部SMTPでメールは受け取らずに、smtproutesで内部のSMTPサーバにリレーさせています。

外部SMTPではドメイン宛のメールは受け取らない(リレーするだけ) = /var/control/localsの中身もlocalhostのままでした。

qmail-scannerは、デフォルトで自身のドメイン宛のユーザーを処理するので--notify recips としても、元のメールの宛先@localhost宛てのメールとなり、内部SMTPサーバのユーザーに届かない。と言った事でした。

これを解決するには./configure時に、--local-domains 処理するドメイン名を指定する。

ちなみに、qmail-scannerの標準では「2byte文字(全角)」が含まれるメールを、通知メールとして処理すると文字化けしてしまうので、email_senderとemail_recipsにnkfを挟んでJISに変換する必要がある。

vi /var/qmail/bin/qmail-scanner-queue.pl

変更前
sub email_sender {
#Don't e-mail bounced mail messages/etc!
return if (&is_unreplyable_email('sender'));
my($addr_type)=@_;
my ($HDR,$hdr,$tmpsndrs,$tmpsubj,$polstring)='';
my ($tmpmsgid)= &uniq_id() . "-" . $V_FROM;
$polstring='policy' if (¬ify_addr('nmlvadm'));

open(SM,"|$qmailinject -h -f ''")||~~


sub email_recips {
my($recip)=@_;
return if ($recip eq "");
#Don't notify precips if this is NOT a "Policy block"
if (¬ify_addr('precips')) {
return if ($quarantine_event !~ /^(policy|perlscan)/i);
} else {
#From now on precips is the same as recips
$NOTIFY_ADDRS=~s/precips/recips/;
}
return if (!¬ify_addr('recips'));
my($HDR,$hdr,$tmprecips,$tmpsubj)='';
my($tmpmsgid)= &uniq_id() . "-" . $V_FROM;

open(SM,"|/usr/bin/nkf -j|$qmailinject -h -f ''")||~~


変更後
sub email_sender {
#Don't e-mail bounced mail messages/etc!
return if (&is_unreplyable_email('sender'));
my($addr_type)=@_;
my ($HDR,$hdr,$tmpsndrs,$tmpsubj,$polstring)='';
my ($tmpmsgid)= &uniq_id() . "-" . $V_FROM;
$polstring='policy' if (¬ify_addr('nmlvadm'));

open(SM,"|/usr/bin/nkf -j|$qmailinject -h -f ''")||~~   ←「|/usr/bin/nkf -j」を追加


sub email_recips {
my($recip)=@_;
return if ($recip eq "");
#Don't notify precips if this is NOT a "Policy block"
if (¬ify_addr('precips')) {
return if ($quarantine_event !~ /^(policy|perlscan)/i);
} else {
#From now on precips is the same as recips
$NOTIFY_ADDRS=~s/precips/recips/;
}
return if (!¬ify_addr('recips'));
my($HDR,$hdr,$tmprecips,$tmpsubj)='';
my($tmpmsgid)= &uniq_id() . "-" . $V_FROM;

open(SM,"|/usr/bin/nkf -j|$qmailinject -h -f ''")||~~   ←「|/usr/bin/nkf -j」を追加


2008/11/21 追記
qmail-scannerのconfigureのオプションを忘れたので、メモ"c⌒っo,,゚Д゚ )φ"

./configure --install --scanners clamdscan,verbose_spamassassin --local-do
mains 処理するドメイン --notify recips

トラックバック(0)

このブログ記事を参照しているブログ一覧: qmail + qmail-scanner + spamassassin + clamav

このブログ記事に対するトラックバックURL: http://jhh-style.homelinux.com/cgi-bin/mt/mt-tb.cgi/241

コメントする

2009年11月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

アーカイブ