MTA (Mail Transport Agent)を設定していこうと思う。メールサーバにはSendMailやPostFixがあるけと、今回はPostfixを使うことにしょうと思う。
PostFixはSMTPサーバなので、受信するには別途POP3やIMAPサーバが必要になるよ。
受信するサーバーとしては、複数のPCやスマートフォンからメールを見れるようにしたいんで、IMAPを使うよ!
今回の設定の方針
・SMTPサーバは「postfix」を使用する
・IMAPサーバは「Courier-IMAP」を使用する
・メールはMaildir形式にする
・メールユーザと、Linuxログインユーザのパスワードを切り分ける。
(メールユーザを追加する場合は「saslpasswd2 -c -u <ドメイン> <ユーザー名>」で作成する)
・Spamメールの不正中継をさせないようにSMTP認証を使う
・前準備
Debian(lenny)にはMTAとして「exim4」がインストール済みなのでこれを削除してからPostFixをインストールします。
・exim4のサービスをSTOPする
sudo -s /etc/init.d/exim4 stop |
.exim4を削除
aptitude purge exim4 |
・Postfixのインストール
aptitude update aptitude install postfix |
・/etc/aliasesを編集し、postfix: rootを追加する。
通常はrootではログインしてないのでrootのメールをメインユーザーにリダイレクトする
vi /etc/aliases postfix: root root: hoge |
・aliasesの設定を反映させる
newaliases |
・Postfixの設定
設定ファイル /etc/postfix/main.cfを以下のように編集します。
・設定の前にバックアップを取る
cd /etc/postfix cp main.cf main.cfBAK |
・設定ファイルを編集
vi main.cf 37 mailbox_command = procmail -a "$EXTENSION" 38 mailbox_size_limit = 0 ↓ 37 #mailbox_command = procmail -a "$EXTENSION" # mailboxをMaildir形式にするのでコメントアウト 38 mailbox_size_limit = 0 home_mailbox = Maildir/ # mailboxをMaildir形式にする。 |
・自分のホームディレクトリで、Maildir形式のディレクトリを作成する
maildirmake Maildir |
※Maildirは「maildirmake」コマンドで作成するとパーミッションを設定してくれるのでらくちん
・Postfixの再起動
/etc/init.d/postfix restart |
・Courier-IMAPのインストール
IMAP(Internet Message Access Protocol)はサーバ上にあるメールにアクセスするための方法で
サーバ上に受信・送信・その他のメールを保存し、どのクライアントからでもメールを読む事ができるようになります。
(POPはメールをPCにダウンロードして見ることになります。今回の設定ではIMAPを使用することにします。)
aptitude install courier-imap |
・ユーザの追加にメールも使えるようにする
ユーザを追加した場合にメールも使えるように「/etc/skel」ディレクトリにMaildirを作成しておく
cd /etc/skel maildirmake Maildir |
・SASL2の設定方法
不正中継の踏み台にならないようにメール送信時にSMTP認証(SASL2)をする
・SASL2のインストール
aptitude install libsasl2-modules sasl2-bin |
・インストールされたかパッケージを確認
dpkg -l|grep sasl2 |
・SASL2の設定ファイルの編集
vi /etc/default/saslauthd 6 # Should saslauthd run automatically on startup? (default: no) 7 START=no ↓ 6 # Should saslauthd run automatically on startup? (default: no) 7 START=yes |
・saslauthdを再起動する
/etc/init.d/saslauthd start |
・Postfix側の設定(main.cf)
vi /etc/postfix/main.cf 43 # SASL2(SMTP-Auth) 44 smtpd_sasl_auth_enable = yes 45 smtpd_sasl_local_domain = $myhostname 46 smtpd_sasl_application_name = smtpd 47 smtpd_recipient_restrictions = 48 permit_mynetworks, 49 permit_sasl_authenticated, 50 reject_unauth_destination 51 smtp_sasl_security_options = noanonymous 52 brocken_sasl_auth_clients = yes |
を最後に追加する
・Postfix側の設定(master.cf)
vi /etc/postfix/master.cf 11 smtp inet n - - - - smtpd 12 #submission inet n - - - - smtpd ↓ 11 smtp inet n - - - - smtpd 12 submission inet n - - - - smtpd |
・smtp.confの設定
smtp.confファイルを新規作成する(SASL用パスワードファイルを利用する)
vi /etc/postfix/sasl/smtp.conf 1 pwcheck_method: auxprop 2 auxprop_plugin: sasldb 3 mech_list: cram-md5 digest-md5 plain login |
・sasl2の再起動、postfixの再起動
/etc/init.d/saslauthd restart /etc/init.d/postfix restart |
・認証ユーザーの登録
saslpasswd2 -c -u <ドメイン.com> <ユーザ名> Password: ******* (パスワードを入力) Again (for verification): ******* (パスワードを再入力) |
・登録したユーザーを確認
sasldblistusers2 |
・登録したユーザーを削除する場合
saslpasswd2 -d -u <ドメイン> <ユーザー名> |
・SMTP Authの動作確認
認証機能が設定されているかどうかをテスト
/usr/sbin/testsaslauthd -u <ユーザ> -p <パスワード> 0: OK "Success." |
と出ればOK
・Postfixがsaslの設定ファイルを読み込めるようにする
chgrp postfix /etc/sasldb2 chmod 640 /etc/sasldb2 ln /etc/sasldb2 /var/spool/postfix/etc |
・sasl2の再起動、postfixの再起動
/etc/init.d/postfix restart /etc/init.d/saslauthd restart |
・telnetでのメール送信の確認
telnet localhost 25 : helo localhost : mail from: xxxx@xxxx.org : rcpt to: xxxx@xxxx.org : data aaaa aaaa aaaa . quit |
・不正中継をさせないようになっているかチェックする
以下のサイトにアクセスして第三者中継の可能性をチェックする
数パターンのチェックを行い、
最後に「no relays accepted.」と出れば、とりあえずOK
・IMAPをSSL化する
・courier-imap-sslのインストール
aptitude install courier-imap-ssl |
・courierIMAPの設定
vi imapd-ssl 89 IMAP_TLS_REQUIRED=0 ↓ 89 IMAP_TLS_REQUIRED=1 : 262 263 TLS_CERTFILE=/etc/courier/imapd.pem 264 |
・再起動
/etc/init.d/courier-imap-ssl restart |
・クライアント側の設定
ポート=993
セキュリティ設定=SSLを使用する
・IMAP(SSL版ではない方)「courier-imap」を自動起動させないようにする
IMAP(SSL版)をインストールして、使えるようになったので、
IMAP(SSL版ではない方)を止めてしまおう。
SSL版ではない方は使わないし、ポート=143番を開けてしまうので、サービスを起動させないようにしておく。
サービス自動起動の削除
update-rc.d -f courier-imap remove |
※courier-imapをアップグレードした場合、サービスも復活してしまうので、ここは注意
一応、ポート143はiptablesでどうにかする(破棄する)。
これは別枠(ファイアウォール構築)で書こう。。
・メーラの設定(Thunderbird)
【(受信)IMAPメールサーバ】
サーバ設定:ポート=993
セキュリティー設定:接続の保護=SSL/TLS
認証方式:通常のパスワード認証(とりあえず今は)
【(送信)SMTPサーバ】
ポート番号:587
接続の保護:STARTTLS
認証方式:暗号化されたパスワード認証
・緊急時のpostfix停止方法
もし万が一緊急停止を行う場合、通常の「stop」パラメータではなく
「abort」で停止させなくてはならない。
「stop」パラメータではメールスプールに貯まっているものが全て送信され続けてしまうので。
/etc/init.d/postfix abort |
・メール、ホームページ付きユーザーの作成
(Apacheの設定を行っている場合は、ホームページ、メールアドレスを付与したユーザを作成することができるヨ)
#/etc/skelに設定しているディレクトリを配置したり、パスワードの設定をしてくれる
sudo adduser <ユーザ> |
#メールユーザ、パスワードを設定する
sudo saslpasswd2 -c -u <ドメイン.com> <ユーザ> |
・メール、ホームページ付きユーザーの削除
#/homeディレクトリ、グループなど全て削除してくれる
sudo userdel <ユーザ> |
#メールユーザを削除する
sudo sudo saslpasswd2 -d -u <ドメイン.com> <ユーザ> |