Postfixの設定もろもろ

思い込み多々あり。

http://www.postfix-jp.info/trans-2.3/jhtml/postconf.5.html

<再送まわり>

 
 minimal_backoff_time
 maximal_backoff_time
 maximal_queue_lifetime
 bounce_queue_lifetime
 queue_run_delay

ここらへんの設定がいる模様。

たとえば、

 
 minimal_backoff_time = 60s
 maximal_backoff_time = 600s
 maximal_queue_lifetime = 1800s
 bounce_queue_lifetime = 1800s
 queue_run_delay = 60s
 ※「s」は秒

した場合、


最初再送に失敗したら、defferedキューに入って、queue_run_delayごとにdefferedキューがキューをスキャン。
スキャンしたときにキューにあるメールの時間がminimal_backoff_timeをこえてたら再送。


再送失敗してしまったら、今度はdefferedキュースキャンしたとき、minimal_backoff_timeの倍の時間後に再送開始。
再送失敗してしまったら、今度はdefferedキュースキャンしたとき、minimal_backoff_timeの倍の倍の時間後に再送開始。
再送失敗してしm(ry


って感じでmaximal_backoff_timeをこえるまで繰り返し。
こえた後はmaximal_backoff_timeの間隔で再送。


最終的にmaximal_queue_lifetimeをこえたら再送終了、bounce_queue_lifetimeの時間をこえたらBounce扱いで送信者にエラーメールで返る、っという感じ。


実際にテストした結果はこのような感じ。

 May 29 18:47:16 testserver postfix/qmgr[4833]:
      9D7FE1D0051:from=<root@test.hogehoge>,
      size=293, nrcpt=1 (queue active)
 May 29 18:47:16 testserver postfix/smtp[4847]:
      9D7FE1D0051:to=<test@hogehoge.jp>, 
      relay=none, delay=107, delays=107/0.01/0/0, 
      dsn=4.4.3, status=deferred 
      (Host or domain name not found. 
       Name service error for name=hogehoge.jp 
         type=MX: Host not found, try again)
 May 29 18:49:16 testserver postfix/qmgr[4833]: 
      9D7FE1D0051:from=<root@test.hogehoge>, 
      size=293, nrcpt=1 (queue active)
 May 29 18:49:16 testserver postfix/smtp[4854]: 
      9D7FE1D0051:to=<test@hogehoge.jp>, 
      relay=none, delay=227, delays=227/0.01/0/0,
      dsn=4.4.3, status=deferred 
      (Host or domain name not found.
       Name service error for name=hogehoge.jp 
        type=MX: Host not found, try again)
 May 29 18:53:16 testserver postfix/qmgr[4833]: 
      9D7FE1D0051:from=<root@test.hogehoge>, 
      size=293, nrcpt=1 (queue active)
 May 29 18:53:16 testserver postfix/smtp[4865]: 
      9D7FE1D0051:to=<test@hogehoge.jp>, 
      relay=none, delay=467,delays=467/0.01/0/0,
      dsn=4.4.3, status=deferred 
      (Host or domain name not found.
       Name service error for name=hogehoge.jp 
        type=MX: Host not found, try again)
 May 29 19:01:16 testserver postfix/qmgr[4833]: 
      9D7FE1D0051:from=<root@test.hogehoge>, 
      size=293, nrcpt=1 (queue active)
 May 29 19:01:16 testserver postfix/smtp[4885]: 
      9D7FE1D0051:to=<test@hogehoge.jp>, 
      relay=none, delay=947, delays=947/0.01/0/0, 
      dsn=4.4.3, status=deferred 
      (Host or domain name not found. 
       Name service error for name=hogehoge.jp 
        type=MX: Host not found, try again)
 May 29 19:11:16 testserver postfix/qmgr[4833]: 
      9D7FE1D0051:from=<root@test.hogehoge>, 
      size=293, nrcpt=1 (queue active)
 May 29 19:11:16 testserver postfix/smtp[4907]: 
      9D7FE1D0051:to=<test@hogehoge.jp>, 
      relay=none, delay=1547, delays=1547/0.01/0/0, 
      dsn=4.4.3, status=deferred 
      (Host or domain name not found. 
       Name service error for name=hogehoge.jp 
        type=MX: Host not found, try again)
 May 29 19:21:16 testserver postfix/qmgr[4833]:
      9D7FE1D0051:from=<root@test.hogehoge>, 
      size=293, nrcpt=1 (queue active)
 May 29 19:21:17 testserver postfix/smtp[4928]:
      9D7FE1D0051:to=<test@hogehoge.jp>, 
      relay=none, delay=2147, delays=2147/0.01/0/0, 
      dsn=4.4.3, status=deferred 
      (Host or domain name not found. 
       Name service error for name=hogehoge.jp 
        type=MX: Host not found, try again)
 May 29 19:21:17 testserver postfix/qmgr[4833]: 
      9D7FE1D0051: from=<root@test.hogehoge>, 
      status=expired, returned to sender
 May 29 19:21:17 testserver postfix/qmgr[4833]: 
      9D7FE1D0051: removed

18:47:16⇒配信開始 minimal_backoff_time(60s)すでに2倍から開始
↓ +2
18:49:16⇒再送1回目
↓ +4
18:53:16⇒再送2回目
↓ +8
19:01:16⇒再送3回目 maximal_backoff_time(600s)をこえたので、これ以降600sずつ
↓ +10
19:11:16⇒再送4回目
↓ +10
19:21:17⇒再送5回目 maximal_queue_lifetime(1800s)をこえたので
          Bounce扱いでキューから削除


<配送まわり>

 smtp_destination_concurrency_limit
  配送先ごとの並列送信数

 smtp_destination_recipient_limit
  1セッション内に配送するメールの数

特定のあて先ドメインごとに上記設定を反映も可能。
たとえば、docomo.ne.jp宛てのメールだけ並列送信なしで1セッション1通のみ送信とかしたい場合。

master.cfに

 docomo-smtp unix - - n - 1 smtp
    -o smtp_destination_concurrency_limit=1
    -o smtp_destination_recipient_limit=1

とか追加。
で、transportファイルなどを用意

  docomo.ne.jp docomo-smtp:

# postmap transport

っと実行したら、transport.dbが更新(新規作成)される。

main.cf内に、

  transport_maps = hash:/etc/postfix/transport

を記述

で、リロード

 /etc/rc.d/init.d/postfix reload

とか。

ちなみに、docomo.ne.jpあてのメールを別サーバーにリレーさせたいのなら、

 docomo.ne.jp docomo-smtp:

を、

docomo.ne.jp docomo-smtp:[192.168.0.100]
IPやホストを書く場合、[]で囲ってあげにゃだめ。

とかとか。