30 January 2008

PostfixとDovecotの設定 on Fedora 8

サーバ管理用に、メールシステムを整備する。
プロバイダのSMTPサーバを経由して、インターネット上のアドレスへもメールを送信できるようにする。

Postfix SMTPサーバのインストール

[root@localhost ~]# yum install postfix

設定ファイルの編集

/etc/postfix/main.cf
queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix mail_owner = postfix ← インストーラが自動的に作成したユーザ myhostname = localhost.localdomain ← ホスト名.ドメイン名を設定 mydomain = localdomain ← ドメイン名を設定 myorigin = $myhostname ← メール送信時 From欄に設定されるホスト名.ドメイン名を設定 inet_interfaces = all ← 受信制限(今回はFW内で運用する個人サーバのため、allのまま mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases home_mailbox = Maildir/ ← 個人ディレクトリ下に、自動的にMailDirディレクトリが作成される #mail_spool_directory = /var/spool/mail ← sendmailで使っていたUNIX形式ディレクトリには格納しない(コメントアウト) smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) ← 他のユーザが使う場合は、バージョン名など隠したほうがいいかも sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop

念のために、Postfix専用ユーザが作られているか確認。(Dovecotのインストール後の状態で、Dovecotユーザも作成されている)

/etc/passwd
postfix:x:89:89::/var/spool/postfix:/sbin/nologin dovecot:x:97:97:dovecot:/usr/libexec/dovecot:/sbin/nologin

メールサーバの切り替え

[root@localhost ~]# /usr/sbin/alternatives --config mta 2 プログラムがあり 'mta' を提供します。 選択 コマンド ----------------------------------------------- *+ 1 /usr/sbin/sendmail.sendmail 2 /usr/sbin/sendmail.postfix Enter を押して現在の選択 [+] を保持するか、選択番号を入力します: 2

サービスの自動起動を念のため確認

[root@localhost ~]# chkconfig --list | grep -e postfix postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off

Dovecot IMAP/POP3 サーバのインストール

[root@localhost ~]# yum install dovecot

設定ファイルの編集

/etc/dovecot.conf
protocols = pop3 ← 今回は内部管理用なのでPOP3しか使わない mail_location = maildir:~/Maildir

サービスの自動起動設定を行う

[root@localhost var]# chkconfig dovecot on [root@localhost var]# chkconfig --list | grep -e dovecot dovecot 0:off 1:off 2:off 3:off 4:off 5:off 6:off

rootあてのメールを、POP3でアクセス可能なユーザに転送

rootのメールボックスはPOP3で開くことができないので、管理用のユーザにメールを全て転送する。

設定ファイルの編集

/etc/aliases
root: 転送先のユーザ名

インターネット宛てのメールを、プロバイダのSMTPサーバに転送する設定

プロバイダのSMTPサーバは、ユーザ名:パスワードでの認証に加えて、メールのFROM欄が有効なユーザのアドレスかをチェックしている。
その方式に対応した設定を行う。

設定ファイルの編集

/etc/postfix/main.cf
queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix mail_owner = postfix myhostname = localhost.localdomain mydomain = localdomain myorigin = internet-provider.ne.jp ← 実際のプロバイダのホスト.ドメイン名をFROM欄に設定する inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, internet-provider.ne.jp ← 内部宛のメールも、ドメイン名が付くことへの対策 relayhost = [smtp.internet-provider.ne.jp]:587 ← プロバイダのSMTPサーバとポート番号 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases home_mailbox = Maildir/ #mail_spool_directory = /var/spool/mail smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop smtp_sasl_auth_enable = yes ← SMTP認証の設定を追加 smtp_sasl_password_maps = hash:/etc/postfix/isp_auth ← SMTP認証のユーザ名:パスワードの格納されたファイル smto_sasl_security_options = noanonymous smtp_sasl_mechanism_filter = cram-md5, login, plain ← SMTP認証の方式

サブミッションポートの場合は、ポートを開く設定変更

/etc/postfix/master.cf
submission inet n - n - - smtpd ← この行を有効化

SMTP認証の方式は、telnetでプロバイダのSMTPサーバに接続してみて確認する。

[root@localhost ~]# telnet smtp.internet-provider.ne.jp 587 Trying 172.198.10.1... Connected to smtp.internet-provider.ne.jp. Escape character is '^]'. 220 smtp.internet-provider.ne.jp ESMTP Sendmail 8.13.6/8.13.6; Wed, 30 Jan 2008 23:23:05 +0900 (JST) ehlo localhost.localdomain 250-smtp.internet-provider.ne.jp Hello proxy.internet-provider.ne.jp [172.198.101.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-8BITMIME 250-SIZE 250-DSN 250-AUTH CRAM-MD5 DIGEST-MD5 LOGIN PLAIN ← SMTP認証の方式 250-STARTTLS 250-DELIVERBY 250 HELP quit 221 2.0.0 smtp.internet-provider.ne.jp closing connection Connection closed by foreign host.

ユーザ名とパスワードの格納されたファイルを作成する

/etc/postfix/isp_auth
[smtp.internet-provider.ne.jp]:587 user@internet-provider.ne.jp:password

データベースファイルに変換する

[root@localhost postfix]# /usr/sbin/postmap isp_auth

SMTPのクライアント認証を追加

そのマシン自体に着信するメール以外は、認証されないと送信できない設定。

/etc/postfix/main.cf
# SMTP Authorization with SASL # (incoming smtp access to this Postfix) smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $mydomain smtpd_recipient_restrictions = permit_sasl_authenticated,reject smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes

saslauthd の設定で、Linuxのユーザ名とパスワードで認証するよう設定する。
(CLAM-MD5で認証したい場合は、saslpasswd2でパスワードDBファイルを作り、それを利用する)

/usr/lib/sasl/smtpd.conf
# Authenticate with Linux user/password pwcheck_method: saslauthd # Authenticate with independant db made with saslpasswd #pwcheck_method: sasldb

saslauthdサービスを自動起動するよう設定する。