wiki:TipAndDoc/network/mail/Postfix

Version 14 (modified by mitty, 11 years ago) (diff)

--

  • Postfix manual - postqueue(1)

    -f キューをフラッシュします: キューにある全てのメールの配送を試みます。

    • 一般ユーザ権限でも実行できる模様

backup server

  • MXを複数記述しておき、メインのSMTPdが死んでいるときにメールを貯めておく
  • ex)
    • mail2.mitty.jp:/etc/postfix/main.cf (backup server)
      (snip)
      
      relay_domains = /etc/postfix/relay_domains
      relay_transport = smtp:mail1.mitty.jp
      
    • /etc/postfix/relay_domains
      mitty.jp
      test.mitty.jp
      
      (snip)
      
  • 「relayhost」を使うと、外向きの転送が全て「relayhost」を通るように指定されるため、open relayとして拒否される
    Apr 30 06:32:00 www27070u postfix/pickup[8562]: 83C8C40DC5D2: uid=1000 from=<mitty>
    Apr 30 06:32:00 www27070u postfix/cleanup[8703]: 83C8C40DC5D2: message-id=<20110429213200.83C8C40DC5D2(*)www27070u.sakura.ne.jp>
    Apr 30 06:32:00 www27070u postfix/qmgr[8563]: 83C8C40DC5D2: from=<mitty(*)www27070u.mitty.jp>, size=465, nrcpt=1 (queue active)
    Apr 30 06:32:00 www27070u postfix/smtp[8706]: 83C8C40DC5D2: to=<s0711489(*)coins.tsukuba.ac.jp>, relay=www5085u.mitty.jp[59.106.180.123]:25, delay=0.14, delays=0.02/0.01/0.05/0.06, dsn=5.7.1, status=bounced (host www5085u.mitty.jp[59.106.180.123] said: 554 5.7.1 <s0711489(*)coins.tsukuba.ac.jp>: Relay access denied (in reply to RCPT TO command))
    
    • local MTAでの外への送信も出来なくなるので注意

merge domains conf and maps db

  • main.cfで指定出来る「virtual_mailbox_domains」と「virtual_alias_domains」は、それぞれデフォルトで「$virtual_mailbox_maps」「$virtual_alias_maps」が指定されているため、受け取るドメインの一覧と、受け取るアドレスの一覧をそれぞれ一つのファイルにまとめることが可能
    • virtual_alias_maps」については、The table format and lookups are documented in virtual(5).と書かれているが、「virtual_mailbox_maps」についてはそのような記述はない。が、実際に試した限りでは同じように記述出来る模様。
    • どちらの説明にも、The default value is backwards compatible with Postfix version 1.1.とあるので、推奨されない設定の可能性がある。
    • main.cf
      (snip)
      
      # virtual_mailbox_domains = $virtual_mailbox_maps (default)
      virtual_mailbox_base = /PATH/TO/virtual_mailbox_base
      virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_maps
      
      (snip)
      
      # virtual_alias_domains = $virtual_alias_maps (default)
      virtual_alias_maps = hash:/etc/postfix/virtual_alias_maps
      
    • /etc/postfix/virtual_mailbox_maps
      mitty.jp            accept
      SOMEHOST.mitty.jp   accept
      
      USER1@SOMEHOST.mitty.jp mitty.jp/USER1/
      USER2@SOMEHOST.mitty.jp mitty.jp/USER2/
      
      (snip)
      
    • /etc/postfix/virtual_alias_maps
      ALIASE.mitty.jp     accept
      
      webmaster@ALIASE.mitty.jp   USER1@SOMEHOST.mitty.jp
      admin@ALIASE.mitty.jp       mitty@SOMEHOST.mitty.jp
      
  • 上記設定で、virtual配送、alias配送ともに正常に行われる
  • 「accept」の部分を書き忘れるとpostmapから「expected format: key whitespace value」と警告される(実際「Relay access denied」になる)
  • ドメインの行そのものを省略することは出来ない(「Relay access denied」) (see #virtual.5)

virtual.5

Support for a virtual alias domain looks like:

/etc/postfix/main.cf:

           virtual_alias_maps = hash:/etc/postfix/virtual

Note: some systems use dbm databases instead of hash. See the output from "postconf -m" for available database types.

/etc/postfix/virtual:

           virtual-alias.domain     anything (right-hand content does not matter)
           postmaster@virtual-alias.domain  postmaster
           user1@virtual-alias.domain       address1
           user2@virtual-alias.domain       address2, address3

The virtual-alias.domain anything entry is required for a virtual alias domain. Without this entry, mail is rejected with "relay access denied", or bounces with "mail loops back to myself".

  • 特定のドメインに来たメールを、ユーザに関わらず全て別のドメインの同じユーザ名のアドレスに配送する場合
    • virtual_alias_maps = hash:/etc/postfix/virtual_alias_maps
      @ALIASE.example.jp    @ALIASE.mitty.jp
      
    • ex: any_name_user@ALIASE.example.jp -> any_name_user@ALIASE.mitty.jp

postfix/anvil

  • /var/log/mail.logにおけるpostfix/anvilのstatistics間隔を延ばすには、流入するメッセージの流量が少ないSMTPサーバでは/etc/postfix/main.cfでanvil_rate_time_unitやanvil_status_update_timeを大きくするだけでは不十分
    • 一定時間(デフォルト100秒)接続がないと、anvilプロセスは終了し、その際にstatisticsを出力するため
    • max_idleを延ばす必要がある
      • 起動してから終了するまでの時間ではないことに注意
  • Postfix manual - anvil(8)

    診断

    問題や処理は syslogd(8) に記録されます。

    終了時および anvil_status_update_time 秒ごとに、サーバは 測 定された最大のカウントと速度を (service, client) 情報やそのイベントに対 応する時刻とともにログに記録します。不必要なオーバーヘッドを避 け る た め、同時制限や速度制限されていない活動の測定はおこなわれません。

  • Gentoo Forums :: View topic - postifix, anvil and unwanted statistics [SOLVED]
  • postfix-users : Message: Re: anvil logging

    Am I limited to setting anvil_status_update_time to something high? (~1 week)

    That would suck up an insane amount of memory when you get hit by a backscatter wave.

  • Dave's Brain - Browse - computer tips - postfix less anvil logging

    In main.cf set this:

    anvil_status_update_time = 1d

    That's once per day. And in master.cf add:

    anvil unix - - n - 1 anvil

    -o max_idle=1d

    This is needed because Anvil will log each time its restarted (which is determined by max_idle).

docomo

  • 環境によっては、2セッション以上connectionを張ろうとすると、問答無用でrefuseされる模様
    Oct  5 10:36:08 www2472ue postfix/smtp[7774]: connect to mfsmax.docomo.ne.jp[203.138.180.240]:25: Connection refused
    Oct  5 10:36:08 www2472ue postfix/smtp[7773]: connect to mfsmax.docomo.ne.jp[203.138.180.240]:25: Connection refused
    Oct  5 10:36:08 www2472ue postfix/smtp[7775]: connect to mfsmax.docomo.ne.jp[203.138.180.240]:25: Connection refused
    Oct  5 10:36:08 www2472ue postfix/smtp[7776]: connect to mfsmax.docomo.ne.jp[203.138.180.240]:25: Connection refused
    
    • 「$ telnet mfsmax.docomo.ne.jp 25」すると、2セッション目から「telnet: Unable to connect to remote host: Connection refused」といわれる
  • 同じpostfix設定でエラーが起きない環境もある?
  • [postfix-jp:02140 Re: : postfix とDOCOMO]

    その結果、Postfix から DoCoMo に対して確実にメールが送信出来るパターンは、 2通一組で、5秒間隔なら確実に送信可能でした。 sendmail では、特に特別な事をすることなく、アドレスさえ合っていたら、いくらでも 送信できました。

  • Postfixの設定もろもろ - 偽じ日報

    たとえば、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やホストを書く場合、[]で囲ってあげにゃだめ。 とかとか。

  • なんちゃってアイ○ンポート2 - 偽じ日報

    3.ちょこっとPostfixチューニング

    master.cfとtransportファイルに宛て先ドメインごとの配信制御設定を追加。

    # vi /etc/postfix/transport

     ~
     docomo.ne.jp   docomo-smtp:n  .docomo.ne.jp  docomo-smtp:n  yahoo.co.jp   yahoo-smtp:n  ybb.ne.jp     yahoo-smtp:n  ~
    # postmap /etc/postfix/transport
    
    # vi /etc/postfix/master.cf
     ~
     docomo-smtp unix -      -       n       -       1       smtp
          -o smtp_destination_concurrency_limit=1 -o smtp_destination_recipient_limit=1
     yahoo-smtp unix -      -       n       -       10       smtp
          -o smtp_destination_concurrency_limit=1 -o smtp_destination_recipient_limit=4
     ~
    
    # postfix reload