wiki:TipAndDoc/network/mail/Postfix

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

--

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を大きくするだけでは不十分
    • 一定時間(デフォルト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).