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
メーラで受信しようとするとパスワードを聞かれるはずなので、入れないと弾かれることと、入れて受信できることの両方を確認して終了。
gentoo, mail, memo, server
Leave a Reply