DeleGateを使った送信メールのフィルタリング
こんばんは、牧野です。
4月下旬から3週間ほど、ヨーロッパに行っていました。初めての海外一人旅で、
ドイツ(フランクフルト、マイセン、ドレスデン)
チェコ(プラハ)
オーストリア(ウィーン)
イタリア(ローマ)
フランス( パリ、モンサンミシェル)
イギリス(ロンドン)
と回ってきたのですが、どこもそれぞれがいいところで…将来ヨーロッパで生活したくなりました!
下の写真はモンサンミシェルです。夕焼けなのに、夜の9時半くらいです。
さて、今日はDeleGateを使ってメール送信を中継するやり方を紹介します。
DeleGateは、メール送信に限らず、様々な通信、プロトコルを中継するプロキシ機能を持つソフトウェアです。
今回は、メールサーバー -> DeleGate -> 外部 という形で、メールサーバーから外部にメール送信する場合にdelegateをはさむようにすることを考えます。
こうすると、外部に送信するメールをDeleGateで限定することができ、開発環境から不用意に外部にメール送信されないようにしたい場合などに便利です。
■DeleGateのインストール
DeleGateのサイトからソースをダウンロードしてmakeします。
(サーバーはCentOSを使用しています。)
tar xzf delegate9.9.7.tar.gz
cd delegate9.9.7
make
これで、src内にdelegatedが作成されるので、/usr/local/sbin等にコピーして使用します。
■DeleGateの起動
delegated に適宜必要なオプションを追加して実行します。
メール送信の中継では、
/usr/local/sbin/delegated -P2525 SERVER=smtp
のようにオプションを指定してdelegatedを実行します。
-Pで待ち受けポート番号、SERVERでプロトコルを指定しています。
メールサーバー側では、DeleGateを動かしているサーバー、-Pで指定したポートを経由するようにします。
postfixの場合では、例えば
/etc/postfix/main.cf
...
relayhost = xxx.xxx.xxx.xxx:2525
...
のように、relayhostで指定できます。
■アドレスを指定して送信制御する
・特定アドレス宛のメールはそのまま送信する。
MOUNT="aaaaa@asial.co.jp smtp://aaaaa@asial.co.jp"
・特定アドレス宛のメールを別のアドレスに転送する
MOUNT="xxxxx@asial.co.jp smtp://yyyyy@asial.co.jp"
・特定アドレス宛のメールを別のアドレスに転送する(まとめて指定)
...@... .asial.co.jpのメールを全てzzzzz@asial.co.jpに
MOUNT="*%S@%S.asial.co.jp smtp://zzzzz@asial.co.jp"
*%を書くと、その部分でscanfに似た書き方で複数マッチングが使えるようになります。上の例の「%S@」は、(@以外の文字列)@を、「%S.」は(.以外の文字列).を表します。
・デ フォルトで送信しない
MOUNT="* smtp://-"
MOUNTオプションは複数指定できて、上から適用されていきます。
これで、アドレスに応じて自由にメール送信可否、転送先を指定できます。
■delegatedの停止、再起動
delegatedのプロセス番号を指定してkillしても止められますが、停止は
delegated -P2525 -Fkill
再起動は
delegated -P2525 -Fkill -HUP
でできます。
■その他
・ログの指定
CentOS、Debianにインストールすると、デフォルトでは
/var/spool/delegate-nobody/log
ディレクトリ内にログが格納されますが、LOGDIRオプションを指定すれば変更できます。
LOGDIR=/var/log/delegate
・設定ファイルにまとめる
設定が長くなったらファイルにまとめる方がいいと思います。
/etc/delegate.conf
-P2525
SERVER=smtp
MOUNT="aaaaa@asial.co.jp smtp://aaaaa@asial.co.jp"
MOUNT="*%S@%S.asial.co.jp smtp://zzzzz@asial.co.jp"
MOUNT="* smtp://-"
LOGDIR=/var/log/delegate
起動時は、以下のように設定ファイルを指定します。
/usr/local/sbin/delegated +=/etc/delegate.conf
今回はSMTPの中継を紹介しましたが、DeleGateには本当に色んな機能があります。
皆さんも機会があったら使ってみて下さい。