YANO's digital garage

Copyright ©YANO All rights reserved. https://www.bravotouring.com/~yano/

Last-modified: 2024-04-10 (水)


[一語一絵/IT系]

メール移行 / 2012-05-28 (月)

さくらのVPS乗り換え前半戦の続き。

まずはメールサーバPostfixdovecotspf

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_domainsvirtual_alias_mapsへの設定はおろか、mydestinationに書いてもダメだったのでホトホト困り果ててしまった。

八方塞がりになった挙句、現mail.bravotouring.comではなく他のメールサーバ経由で送ってみたところ、すんなり受信できてしまったので、結局/etc/postfix/main.cfには

virtual_alias_domains = example.com
を追加するだけで良かったという事になる。但し、これだとbuiltinアカウントの宛先まで自動的に有効になってしまうので、設定でアカウントを絞り込む事にして、/etc/postfix/main.cfvirtual_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の設定がポイント。
【参考】[External]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/procmaillogrotateの設定を追加して終了。

/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/