さくらの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/etc/postfix/aliasesを変更した後は、newaliasesコマンドでインデックスファイルを再構築し、念の為Postfixをreload。
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
yano@www12293ue:~$ sudo newaliases
yano@www12293ue:~$ sudo postfix reload
拡張メールアドレス対応は/etc/postfix/main.cfを編集。
# for extended mail account by YANO~/.forwardにも拡張アドレス部分を含めて展開するようpropagate_unmatched_extensionsの設定がポイント。
## An extended mail address delimiter is changed into '-'.
recipient_delimiter = -
propagate_unmatched_extensions = alias
【参考】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/