読者です 読者をやめる 読者になる 読者になる

postfixの勉強 #2

以下の続き.
postfixの勉強 #1 - NK5のノート

postfixでメールを送る際に
pickup→cleanup→qmgr→smtp→qmgr
というキャッチボールが行われているらしい,という話だったけど,
そもそもトリガとして使った「sendmail」自体が
postfixの提供するコマンドの1つだったりする.

Postfix manual - sendmail(1)

Sendmail」という,別のメール転送エージェントとの同じコマンドで
メール送れますよ,ということらしい.
ともあれ,アプリケーションからPostfixをキックするときは,
このsendmail(1)コマンドを用いることになる.

ちなみに末尾の(1)は「ユーザコマンド」の意だそうだ.
(5)が「ファイル書式」で(8)が「デーモン」なんだと.

メールはmaildropキューに投入される.
キューのパスはmain.cfのqueue_directoryで定義される.

# grep "queue_directory =" /etc/postfix/main.cf
queue_directory = /var/spool/postfix
# ll /var/spool/postfix/
total 0
drwx------ 2 postfix root       6 Mar 19 18:30 active
drwx------ 2 postfix root       6 Mar 19 18:30 bounce
drwx------ 2 postfix root       6 Jun 10  2014 corrupt
drwx------ 2 postfix root       6 Jun 10  2014 defer
drwx------ 2 postfix root       6 Jun 10  2014 deferred
drwx------ 2 postfix root       6 Jun 10  2014 flush
drwx------ 2 postfix root       6 Jun 10  2014 hold
drwx------ 2 postfix root       6 Mar 19 18:30 incoming
drwx-wx--- 2 postfix postdrop   6 Mar 19 18:30 maildrop
drwxr-xr-x 2 root    root     134 Mar 19 18:11 pid
drwx------ 2 postfix root     256 Mar 19 17:47 private
drwx--x--- 2 postfix postdrop  73 Mar 19 17:47 public
drwx------ 2 postfix root       6 Jun 10  2014 saved
drwx------ 2 postfix root       6 Jun 10  2014 trace

これを拾い上げるのが,pickup(8)デーモンなんだそうだ.

Postfix manual - pickup(8)

pickup(8)デーモンは,メールをcleanup(8)デーモンに引き渡す.
これは名前のとおり,メッセージを規約に沿った形に整形してくれる.
前回の俺の適当なsendmail(1)でもメールを送信できたのは,こいつのおかげ.

Postfix manual - cleanup(8)

また,ここでアドレスの置換なんかも出来るらしい.
とりあえず/etc/postfix配下に以下のようなものを作ってみた.

# cat /etc/postfix/canonicaltest
root 〇〇@yahoo.co.jp
oreore@oreore.com 〇〇@yahoo.co.jp

〇〇@yahoo.co.jpは,実在するyahooメールアドレスとなる.
で,main.cfに「canonical_maps」の設定を追加する.

# grep canonical_maps /etc/postfix/main.cf
canonical_maps = hash:/etc/postfix/canonicaltest

設定を読み込ませるために以下も実施.

# postmap /etc/postfix/canonicaltest
# postfix reload
postfix/postfix-script: refreshing the Postfix mail system
# postconf | grep canonical_maps
canonical_maps = hash:/etc/postfix/canonicaltest

さっそく,sendmail(1)でメールを送信し,確認.
確かに〇〇@yahoo.co.jp名義で送付されていたが,さすがに
送信サーバがおかしいよ,気を付けてね」
という旨の警告が表示されていた.まあ,そうだよね.

アドレスの置換には,もう1つ,virtual(5)という手段もあるらしいけど,
疲れてきたので今回はここまで.