Mail

まずここを読もう!この二つを読めば設定は出来る

  1. /usr/share/doc/exim4-conf/README.system-aliases
    Using pipes in the /etc/aliases file is disabled by default in the 
    Debian exim 4 packages, because the program would run as the exim 
    admin-user Debian-exim, which might open up security holes.
    /etc/aliasesでpipeを使ってパッケージに受け渡すのはexim4ではdisableになっている。
    (理由はexim admin-userとDebian-eximのアカウントを使ってプログラムを走らせる為
    セキュリティーホールになる可能性がある。)
    
    Invoking pipes from /etc/aliases file is widely considered obsolete
    and deprecated. The Debian exim package maintainers would like to
    suggest using a dedicated router/transport pair to invoke local
    processes for mail processing. For example, the Debian mailman package
    contains a /usr/share/doc/mailman/README.EXIM file that gives a good
    example how to implement this. Using a dedicated router/transport
    pairs have the following advantages:
    その為Debian exim packageメンテナーは router/transportの機能を使ってメールを
    使った方がよいと代案を提案してくれた。~
    router/trasnportを使ったよい例が/usr/share/doc/mailman/README.EXIMに載っている
    
    router/transportを使ったメリットは:~
    The router/transport pair can be put in place by another package,giving a
    well-defined transaction point between exim4 and $PACKAGE.
    両セットを他のパッケージに宛行う事が出来る。exim4 <--> package間でやりとりが出来る
    
    Not allowing pipe deliveries from alias files makes it harder to 
    accidentally run programs with wrong privileges.
    /etc/aliasesからpipeを使った配送を禁止出来る。禁止する事によって、
    間違った権限でのプログラム起動などを防げる
    
    It is possible to run different pipe processes under different accounts.
    違うpipeを使ったプロセスを違うアカウントの下で走らせる事が出来る~
    
    Even if only invoking a single local program, it is easier to do with your
    dedicated router/transport since you won't need to change this file, making
    automatic updates of this file possible for future versions of the exim4
    packages. If you do local changes here, dpkg conffile handling will bother 
    you on future updates.
    
    If you insist on using /etc/aliases in the traditional way, you will need
    to activate the "pipe_transport = ..." entry manually for the
    system_aliases-router in /etc/exim4/exim4.conf.template (or if you are
    using split-configuration - dc_use_split_config='true' in
    /etc/exim4/update-exim4.conf.conf -
    /etc/exim4/conf.d/router/400_exim4-config_system_aliases).~
    もし/etc/aliasesを昔ながらのやりかたで運用するならば
    /etc/exim4/conf.d/router/400_exim4-config_system_aliases
    (ファイルを分割している場合)で、pipe_transportの為に、pipe_transport=...の設定を
    都度都度しないといけない。
  2. /usr/share/doc/mailman/README.EXIM
    http://www.exim.org/howto/mailman21.html
    Mailman configuration
    ---------------------
    The user and group settings for Mailman must match those 
    in the config fragments given below.
    Mailman用に設定されたuser/groupがconfigファイルで設定されているものと一致しないといけない。
    絶対ではないが/etc/mailman/mm_cfg.pyに下記のように設定するとよいかもしれない。 
    MTA=None
    
    Exim configuration
    ------------------
    Eximの設定ファイルはMailmanが追加でaliasesを作らなくてもよい作りになっている。
    しかに上記の設定はVirtualドメインではあまりうまく動かない(違うメールドメインを扱っている
    メールサーバーで)例えばMailman自身はVirtual Domain対応だが、同じリスト名で、違うドメイン名
    を一つのMailmanの設定ファイルだとうまくいかない。
    
    もし使おうとしているドメインがEximが設定しているドメインとは別のドメインだった場合:
    リストドメインを追加 -> "my.list.domain" to local_domains
    routerディレクトリにオプションを追加 ->"domains=my.list.domain"
    (オプション)他のroutersからドメインを除外するようにする
    
    ※Exim4ではdirectorという概念がなくなったので、もしdirectorsというキーワードを見たら
    routerの事だな、と思うこと
    
    Eximでの実際の設定
    ---------------------------
    /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefs 
     MAILMAN_HOME=/var/lib/mailman <-Mailmanがインストールされたホームディレクトリ
     MAILMAN_WRAP=MAILMAN_HOME/mail/mailman
     MAILMAN_USER=list <- --with-mail-gidと同じ物を入力
     MAILMAN_GROUP=daemon
    
    Routerに追加
    ---------------------------
     mailman_router:
       driver = accept
       require_files = MAILMAN_HOME/lists/$local_part/config.pck
       local_part_suffix_optional
       local_part_suffix = -bounces : -bounces+* : \
                           -confirm+* : -join : -leave : \
                           -owner : -request : -admin
       transport = mailman_transport
    追加する場所は、routerが始まった(begin routers)の後にどこか適当な場所に追加する
    追加した場所を覚えておく
    
    Transportに追加
    ---------------------------
     追加する場所は、transportが始まった(begin transport)の後にどこか適当な場所に追加する
      mailman_transport:
       driver = pipe
       command = MAILMAN_WRAP \
                 '${if def:local_part_suffix \
                       {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} \
                       {post}}' \
                 $local_part
       current_directory = MAILMAN_HOME
       home_directory = MAILMAN_HOME
       user = MAILMAN_USER
       group = MAILMAN_GROUP
    メモ
    --------------------
    max_recipientsを異常に低い数字にしない
    /etc/exim4/conf.d/main/01_exim4-config_listmacrosdefsで127からのrelayを許可する
    hostlist relay_from_hosts = 127.0.0.1 : ::::1 MAIN_RELAY_NETS
    問題と解決策
    -------------------
    Mailmanは無限にMAIL FROM/RCPT TOに必要なだけメールを送る。その結果、Eximの
    smtp_accept_queue_per_connectionのディフォルト値を越えてしまう
    越えてしまった時、Eximはキューモードにスイッチしてしまうので、
    メールの配信が送れてしまう結果になる。
    そうならない為には /etc/mailman/mm_cfg.pyでSMTP_MAX_SESSIONS_PER_CONNECTIONの値を
    /etc/exim4/conf.d/main/02_exim4-config_optionsでsmtp_accept_queue_per_connection
    よりも低くする必要がある
    (Mailman)SMTP_MAX_SESSIONS_PER_CONNECTION < (Exim4)smtp_accept_queue_per_connection
    
    Receiver Verification
    ---------------------
    受信者の確認は有効的な方法で、SMTP時に相手先を確認して(DNS lookup)配信先があるようであれば
    配信作業にはいる、 ので、塵つもでおくれが生じてしまう
    それを軽減する為には
    /etc/exim4/conf.d/acl$ lv 50_exim4-config_mailmanに
      accept  domains       = +local_domains
             endpass
             message       = unknown user
             verify        = recipient
    を追加する
    
    SMTP Callback
    -------------
    SMTP callbackは通常の送信者確認よりも有効で、偽の送信者の確認に使うことが出来る
    バウンスメールはそもそ存在しないメールから返ってくると永遠に偽メールを持つサーバーと
    ローカルのサーバーで行ったり来たりするので、出来たらMailmanに関してのバウンスメールは
    Mailman自身から貰いたい。というわけでMailmanのSMTP callbackは無効にする
    =>設定ファイルに追加したら、update-exim4.confではうまくいかなかったので、削除した。
    ウェブ上のHOWTOでも載ってなかったので、最新版では必要ない??

Last-modified: 2012-03-12 (月) 17:05:12 (166d)