わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

メールサーバのリプレース

もはや先月末のことですが,1台,サーバを取り替えました.IPアドレスは変更なく,それに結びつけられるLinuxマシンの取り替えです.古いほうはUbuntuの11.04,新しいのはUbuntuの11.10です.
そのサーバは,メールサーバとしても機能しており,ここ数年の自分あてのメールを転送するようにしています.今回,

  • サーバはpostfix, dovecot, saslauthdで新規設定
  • メールの移行はMailStore Homeを使用

とすることで,リプレースを試みました.

サーバ設定

uayeb » メールサーバの設定(postfix, dovecot, sasl2=saslauthd)を見ながら,進めていきました.なおすべて,rootになって実行します.
パッケージのインストールは:

root# apt-get install postfix dovecot-common dovecot-pop3d dovecot-imapd sasl2-bin

postfixが起動して,外からメールがやって来ると困るので,止めておきます.今どきは,/etc/init.d/postfix stopではなさそうで…

root# service postfix stop

さて準備です.上記ページにならい,dovecotpostfix,saslauthdの順に行います.
dovecotの設定ファイルですが,/etc/dovecot/dovecot.confは変更しなくてもよさそうです.
というのも,うしろのほうに「!include conf.d/*.conf」という指示があり,/etc/dovecot/conf.d/*.confを取り込むようになっているためです.
以前の設定と同じにするために,/etc/dovecot/conf.d/10-mail.confに,次の指示を入れます.

mail_location = maildir:~/Maildir

次はpostfixの準備です.設定ファイルは/etc/postfix/main.cfでして,上記ブログと,古いサーバの設定を見比べ,次のとおり書き加えました.サーバのホスト名を実際のものから「my_mail_server」に,ドメイン名を「do.ma.in」に,それぞれ書き換えています.

myhostname = my_mail_server.do.ma.in
mydestination = my_mail_server.do.ma.in, localhost.localdomain, localhost
home_mailbox = Maildir/
mydomain = do.ma.in
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_application_name = smtpd
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
relayhost = relayserver.do.ma.in
allow_mail_to_commands = alias,forward,include

それから,/etc/postfix/master.cfも編集します.

#submission inet n - - - - smtpd

となっているところの行頭の「#」を取り除き,保存します.
最後はsaslauthdによる認証です./etc/default/saslauthdを開き,

# Should saslauthd run automatically on startup? (default: no)
START=no

# Should saslauthd run automatically on startup? (default: no)
START=yes

に変更します.
postfixとsaslauthdの連携のため,次のコマンドを実行します.

root# mkdir /etc/postfix/sasl
root# echo pwcheck_method: auxprop > /etc/postfix/sasl/smtpd.conf

メール読み書きのためのユーザは,ログイン用ユーザと別に作ります.

root# saslpasswd2 -c -u do.ma.in takehikom

ここで,ユーザ情報は/etc/sasldb2に作られるのですが,chrootのしくみによって,/var/spool/postfix/etcに置き,postfixが読めるようにする必要があります.ハードリンク(lnコマンド)は同一パーティションで有効ですが,このサーバ,/etcと/varを別のパーティションにしています.シンボリックリンク(ln -s)ではどうもうまくいかず,結局コピーしました.

root# cp /etc/sasldb2 /var/spool/postfix/etc
root# chmod 640 /var/spool/postfix/etc/sasldb2
root# chgrp postfix /var/spool/postfix/etc/sasldb2

あとはサーバプロセスの再起動です.

root# service dovecot restart
root# service saslauthd restart
root# service postfix start

メールの移行

MailStore Homeを使用して,いったん旧サーバのメールを保存し(Archive),新サーバが機能するようになってから,送り込みました(Export).
「MailStore Home」のページは移転いたしましたhttp://geeks.artsjp.com/?p=9044も読みました.
保存には数時間かかりました.なお,Gmailの保存には,丸1日を要しました.

不具合

不具合(エラー・警告)のときに出たログメッセージを,書き残しておきます.サーバのホスト名は「my_mail_server」,ユーザ名は「takehikom」です.

  • /etc/dovecot/dovecot.confに「protocols = imap imaps pop3 pop3s」を書いていると,/var/log/mail.logに警告が出ていました.

Mar 31 13:37:14 my_mail_server dovecot: config: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:22: 'imaps' protocol is no longer necessary, remove it
Mar 31 13:37:14 my_mail_server dovecot: config: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:22: 'pop3s' protocol is no longer necessary, remove it

  • /etc/dovecot/conf.d/10-mail.confで「mail_location = maildir:~/Maildir」をするまでは,IMAPでメールを参照できませんでした./var/log/mail.errに,エラーメッセージが入っていました.

Mar 31 10:18:28 my_mail_server dovecot: imap(takehikom): Error: user takehikom: Initializat ion failed: mail_location not set and autodetection failed: Mail storage autodet ection failed with home=/home/takehikom

  • /var/spool/postfix/etc/sasldb2がpostfixから読めず,認証に失敗したとき,/var/log/mail.logにはエラーメッセージが書かれていました.

Mar 31 10:42:37 my_mail_server postfix/smtpd[4128]: warning: SASL authentication problem: unable to open Berkeley db /etc/sasldb2: Permission denied

(最終更新日時:Mon Apr 30 06:29:10 2012ごろ)