メール移行
さくらのVPS乗り換え前半戦の続き。
まずはメールサーバPostfixとdovecot、spf
yano@www12293ue:~$ sudo apt-get install postfix dovecot-postfix postfix-policyd-spf-perl libmail-spf-perl
とspamassassin関連のパッケージ
yano@www12293ue:~$ sudo apt-get install nkf dovecot-antispam spamassassin spamassassin-rules-ja procmail
を導入。maildirmake.dovecotで
yano@www12293ue:~$ sudo maildirmake.dovecot /etc/skel/Maildir
てな風にMaildirなユーザースケルトンを構築してから
yano@www12293ue:~$ sudo useradd -m -d /home/mailbox -g owner -k /etc/skel -s /bin/bash mailbox
yano@www12293ue:~$ sudo useradd -m -d /home/yoko -g family -k /etc/skel -s /bin/bash yoko
yano@www12293ue:~$ sudo useradd -m -d /home/natsumi -g family -k /etc/skel -s /bin/bash natsumi
とユーザーアカウントを作成すれば準備完了。
昨年に続いて2度目なので、大胆にもいきなりbravotouring.comとexample.comの複数ドメインで構成し、yano@example.com宛にテストメールを送信してみたところ、
<yano@example.com>: mail for example.com loops back to myself
というエラーでrejectされてしまった。
bravotouring.comの記述を止めてexample.comだけだとうまくいったので、/etc/postfix/main.cfの設定が鍵なのはすぐにわかったのだがvirtual_alias_domainsやvirtual_alias_mapsへの設定はおろか、mydestinationに書いてもダメだったのでホトホト困り果ててしまった。
八方塞がりになった挙句、現mail.bravotouring.comではなく他のメールサーバ経由で送ってみたところ、すんなり受信できてしまったので、結局/etc/postfix/main.cfには
virtual_alias_domains = example.com
を追加するだけで良かったという事になる。但し、これだとbuiltinアカウントの宛先まで自動的に有効になってしまうので、設定でアカウントを絞り込む事にして、/etc/postfix/main.cfはvirtual_alias_domainsではなく
virtual_alias_maps = hash:`/etc/postfix/virtual`
を追加し、/etc/postfix/virtualを
example.com anything
yano@example.com yano
yoko@example.com yoko
とする。
設定変更後は
yano@www12293ue:~$ postmap `/etc/postfix/virtual`
を忘れずに。
builtinアカウントとして存在するuucpやcron宛のspamを**“user unknown”で返す為、/etc/postfix/aliasesに太字**箇所を追記。
# See man 5 aliases for format
MAILER-DAEMON: postmaster
postmaster: root
webmaster: root
**undisclosed-recipients: |"exit 67"
cron: |"exit 67"
uucp: |"exit 67"
news: |"exit 67"
ntp: |"exit 67"
nsd: |"exit 67"
postfix: |"exit 67"
dovecot: |"exit 67"
**
root: yano
mail: mailbox
/etc/postfix/aliasesを変更した後は、newaliasesコマンドでインデックスファイルを再構築し、念の為Postfixをreload。
yano@www12293ue:~$ sudo newaliases
yano@www12293ue:~$ sudo postfix reload
拡張メールアドレス対応は/etc/postfix/main.cfを編集。
# for extended mail account by YANO
## An extended mail address delimiter is changed into '-'.
**recipient_delimiter** = -
**propagate_unmatched_extensions** = alias
~/.forwardにも拡張アドレス部分を含めて展開するようpropagate_unmatched_extensionsの設定がポイント。
【参考】Postfix manual - aliases(5)
~/.forwardと
"|exec /usr/bin/procmail -f- || exit 75"
~/.procmailrcはこんな感じ。
PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir
LOGFILE=$MAILDIR/procmail.log
LOCKFILE=$HOME/.lockmail
FORMAIL=/usr/bin/formail
DEFAULT=$MAILDIR/
:0fw
*!^X-Spam-Checker-Version: SpamAssassin
| /usr/bin/spamc --max-size=1000000
:0
*^X-Spam-Status: Yes
$MAILDIR/.Spam/
:0
*^X-Spam-Status: No
{
:0 c
!account@pdx.ne.jp
}
最後に/etc/logrotate.d/procmailでlogrotateの設定を追加して終了。
/home/*/Maildir/procmail.log {
weekly
rotate 2
missingok
nocreate
notifempty
}
参照
さくらインターネット http://www.sakura.ad.jp/
VPS(仮想専用サーバ)のさくらインターネット http://vps.sakura.ad.jp/
Postfixのぺーじ http://www.postfix-jp.info/
Dovecot 翻訳プロジェクト http://www.dovecot.jp/