QA@IT

procmailによる転送制御について

1789 PV

職場のメールサーバーを管理している者です。
上部組織より,ある組織から発信されたメールは所内秘であるので外部に転送することを禁止して欲しいという要請があり,procmailでの解決を試みているのですが,あと一歩のところで上手くいっておりません。

メールサーバーは10年ほど前に設置した solaris 2.6搭載機で,sendmail 8.3.16, procmail 3.22です(procmailは入っておりませんでしたのでUNIX PackagesよりSolaris2.6用を入手して導入しました)。

下記のように.forward ならびに .procmailrc を設置したところ,送信元アドレスのパターンマッチングまではうまくいっているようなのですが,肝心の転送が行われていないようです。

.forward

"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #私のユーザー名"

.procmailrc

VERBOSE=on
LOGFILE=$HOME/procmail.log
LOCKFILE=$HOME/.lockmail
:0 c
* ! ^From: .*xxx\.xx\.jp.*  ← 転送制限を掛けたい送信先ドメイン
! yyy@yyy.jp  ←転送先アドレス

procmail.logには下記のように記録されています。一つ目の例では転送制限設定をおこなっていないドメインからのメール,2つ目の例では転送制限設定を行なっているドメインからのメールになります。

procmail: Assigning "LOCKFILE=/home/labour/*****/.lockmail"
procmail: Locking "/home/labour/*****/.lockmail"
procmail: Match on ! "^From: .*xxx\.xx\.jp.*"
procmail: Executing "/usr/lib/sendmail,-oi,yyy@yyy.jp"
procmail: Assigning "LASTFOLDER=/usr/lib/sendmail -oi yyy@yyy.jp"
procmail: Locking "/var/mail/*****.lock"
procmail: Assigning "LASTFOLDER=/var/mail/*****"
procmail: Opening "/var/mail/*****"
procmail: Acquiring kernel-lock
procmail: Unlocking "/var/mail/*****.lock"
procmail: Notified comsat: "*****@6927580:/var/mail/*****"
From aaaaa@aaaaa.jp  Tue Nov 27 14:45:30 2012
 Subject: test
  Folder: /var/mail/*****                                                 1016
procmail: Unlocking "/home/labour/*****/.lockmail"


procmail: Assigning "LOCKFILE=/home/labour/*****/.lockmail"
procmail: Locking "/home/labour/*****/.lockmail"
procmail: No match on ! "^From: .*xxx\.xx\.jp.*"
procmail: Locking "/var/mail/*****.lock"
procmail: Assigning "LASTFOLDER=/var/mail/*****"
procmail: Opening "/var/mail/*****"
procmail: Acquiring kernel-lock
procmail: Unlocking "/var/mail/******.lock"
procmail: Notified comsat: "*****@6928596:/var/mail/*****"
From xxxxx@xxx.xx.jp  Tue Nov 27 14:54:54 2012
  Folder: /var/mail/xxxxx                                                 1588
procmail: Unlocking "/home/labour/xxxxx/.lockmail"

本来であれば,パターマッチングに合致した一つ目のメールは転送され,2つ目のメールは転送されない筈なのですが,実際にはどちらも転送されておりません。

参考までに,VERBOSE=on を記述しない場合のログの記録は下記のとおりです。

From xxxxx@xxx.xx.jp  Tue Nov 27 13:36:04 2012  ← 転送制限対象のアドレス
 Subject: =?ISO-2022-JP?B?dGVzdA==?=
  Folder: /var/mail/*****                                                1632
From yyyyy@yyyy.com  Tue Nov 27 13:38:47 2012  ← 転送制限対象外のアドレス
 Subject: test
  Folder: /var/mail/*****                                                 1805

なお,sendmail.cf(sendmail.mc)は下記のような記述となっております。
(今回のprocmail導入に伴い,末尾に MAILER(procmail)dnl の記述を加えました)。

OSTYPE(solaris2)dnl
DOMAIN(generic)dnl
Dwsvpost
Dm*.*****.**.**
define(`SMART_HOST', `esmtp:[***.***.***.**]')dnl
MASQUERADE_AS(`$m')dnl
MASQUERADE_DOMAIN(`$j')dnl
MASQUERADE_EXCEPTION(`******')dnl
FEATURE(`masquerade_envelope')dnl
FEATURE(`allmasquerade')dnl
FEATURE(`always_add_domain')dnl
FEATURE(`no_default_msa')dnl
FEATURE(`accept_unresolvable_domains')dnl
FEATURE(`access_db',`dbm -T<TMPF> /etc/mail/access')dnl
FEATURE(`mailertable', `dbm /etc/mail/mailertable')dnl
FEATURE(`nouucp', `reject')dnl
FEATURE(`nocanonify', `canonify_hosts')dnl
dnl DAEMON_OPTIONS(`Port=19000')dnl
define(`confUSE_ERRORS_TO', `True')dnl
define(`confPRIVACY_FLAGS',`goaway,noetrn')dnl
define(`confRECEIVED_HEADER',`$?sfrom $s $.by $j ($Z) id $i; $b')dnl
define(`confTO_IDENT', `0')dnl
define(`confTO_QUEUERETURN',`1h')dnl
MAILER(local)dnl
MAILER(smtp)dnl
MAILER(procmail)dnl

色々試行錯誤してみたのですが,手詰まりとなってしまいました。どのあたりに原因があると考えられるのか,またどのようなところを調べれば良いのかなど,教えて頂ければ幸いです。

ウォッチ

この質問への回答やコメントをメールでお知らせします。