2006/10/29追記: 以下の内容はイマイチ不正確なので[修正版][memo] postfix + dovecotでSMTP AUTH & IMAPなメールサーバを立ち上げるで書き直しています。

Gentooではいきなりpostfixを入れようとしても、デフォルトでssmtpが入っていてblockされるのでssmtpを消すのが先決。

# emerge -C ssmtp

んでGentooの基本だけど、emergeするときはemerge -pvでどんなフラグが有効になるか必ず確認。postfixにmysqlがついちゃうので、必要ないならpackage.useで外す。あとsaslが必要なのでこれは付けておく。あとなんでかわからないけどpostfixにsaslを付けるとついてくるcyrus-saslで、gdbmやcryptをUSEするとコンパイルに失敗したので外した。

# echo "mmail-mta/postfix -mysql sasl" >> /etc/portage/package.use
# echo "dev-libs/cyrus-sasl -mysql -java -gdbm -crypt" >> /etc/portage/package.use
# emerge -v postfix

postfixの設定は /etc/postfix/main.cf で行う。以下のように設定した。

soft_bounce = no
myhostname = 普通はmyhostnameから最初の要素を取ったもの
mydomain = gethostname()から得られるFQDN
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, $mydomain, mail.$mydomain, localhost
mynetworks_style = subnet
mynetworks = 192.168.0.0/24, 127.0.0.0/8
relay_domains = $mydestination
alias_maps = hash:/etc/mail/aliases
alias_database = hash:/etc/mail/aliases
home_mailbox = .Maildir/
header_checks = regexp:/etc/postfix/header_checks
smtpd_banner = mail.$mydomain ESMTP $mail_name ($mail_version)
smtpd_helo_required = yes
disable_vrfy_command = yes
strict_rfc821_envelopes = yes
allow_percent_hack = yes
swap_bangpath = yes
allow_untrusted_routing = no
message_size_limit = 1024000
smtpd_recipient_restrictions = permit_sasl_authenticated,
                             permit_mynetworks,
                             reject_unauth_destination
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = no
allow_mail_to_commands = alias,forward,include
smtpd_client_restrictions = permit_mynetworks,
                        reject_invalid_hostname,
                        reject_non_fqdn_sender,
                        reject_non_fqdn_recipient,
                        reject_unknown_sender_domain,
                        reject_unknown_recipient_domain,
                        reject_rbl_client bl.spamcop.net,
                        reject_rbl_client blackholes.mail-abuse.org,
                        reject_rbl_client dynablock.wirehub.net,
                        reject_rbl_client korea.services.net,
                        reject_rbl_client opm.blitzed.org,
                        reject_rbl_client relays.ordb.org,
                        reject_rbl_client relays.visi.com,
                        reject_rbl_client sbl.spamhaus.org,
                        reject_rbl_client sbl-xbl.spamhaus.org,
                        permit

hostnameとかdomainnameは適宜読み替えること。デフォルトから変えていないところは割愛した。
次に/etc/postfix/master.cfの以下の部分のコメントアウトを外す。

submission inet n     -     n     -     -     smtpd
        -o smtpd_etrn_restrictions=reject
        -o smtpd_client_restrictions=permit_sasl_authenticated,reject

smtpd_client_restrictionsはmain.cfで書いてあるので消していいかも。あとデフォルトで有効になっているsmtpの行をコメントアウト。

次は/etc/sasl2/smtpd.confを以下のようにする。

pwcheck_method: saslauthd

ここまで出来たら送信は可能になったはずなので

# /etc/init.d/postfix start
# /etc/init.d/saslauthd start
# rc-update add postfix default
# rc-update add saslauthdd default

として、クライアントのメーラなどで、今使ってるメールアドレスに送信テストしてみるのを忘れずに。上手く行かないときはmyhostnameとかmydomainの設定がおかしいか、ルータでフィルタされてるか、587番か143番が該当サーバにIPマスカレードされていない。メーラではIMAPでアカウント作って、TLSを使うようにすればOKなはず。

次にdovecotだが、こっちは設定簡単。まずお約束でemerge -pv dovecotして、フラグを確認。何のフラグかわからないときはeuse -i フラグ名で調べること。付けるフラグがデフォルトと違うなら、postfixのときと同じように/etc/portage/package.useに書いて、emerge -av dovecot。とりあえずpamとsslだけでいいと思われる。設定ファイルは/etc/dovecot.confにあるのでそれを編集。

protocols = pop3 imap
default_mail_env = maildir:%h/.Maildir

設定したらルータで110番を開けて、以下のお約束を行う。

# /etc/init.d/dovecot start
# rc-update add dovecot default

俺の場合dovecot startしたら”dovecot: Warning: Fixing permissions of /var/run/dovecot to be world-readable”とwarnがでたので以下のようにして回避した。バグっぽい。

# chmod 755 /var/run/dovecot
# chmod 750 /var/run/dovecot/login

メーラで受信しようとするとパスワードを聞かれるはずなので、入れないと弾かれることと、入れて受信できることの両方を確認して終了。

, , ,

Leave a Reply