Mail
まずここを読もう!この二つを読めば設定は出来る
- /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=...の設定を
都度都度しないといけない。
- /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でも載ってなかったので、最新版では必要ない??
|