下記ページでは、Postfixのバーチャルユーザー宛てメールを、
ヴァーチャルトランスポート機能を用いて、dovecot-ldaコマンドへ転送することで、
受信者のローカルメールボックスに保存できるようにした。
http://akira-arets.blogspot.jp/2016/05/postfix-dovecot-lda-instead-of-virtual.html
ここでは、これをさらに改造し、
ヴァーチャルトランスポート機能を用いて、
いったんprocmailを経由して、そこから同様にdovecot-ldaコマンドへ転送する方法について記載している。
procmailの詳しい設定は扱っていないが、procmailを用いることによって、
たとえば、受信メールをdovecot-ldaへ転送する前に、何か処理を加えることが可能になる。
これによって、受信メールの複製を別の所へ転送したり、
迷惑メールを予め処理したりすることも可能になる。
[root@test postfix]# vim /etc/postfix/master.cf
(略)
procmail unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/bin/procmail -t -m SENDER=${sender} RECIPIENT=${recipient} /etc/procmailrc.dovecot-lda
(略)
[root@test etc]# vim /etc/procmailrc.dovecot-lda
SHELL=/bin/bash
PATH=/usr/sbin:/usr/bin
#MAILBASEDIR=/home/VMAIL/DOMAIN
#DEFAULT=$MAILBASEDIR/postmaster
LOGFILE=/home/VMAIL/LOG/procmail.dovecot-lda.log
LOG=""
VERBOSE=yes
# Pass to dovecot-lda
:0
| /usr/libexec/dovecot/dovecot-lda -f $SENDER -d $RECIPIENT
[root@test etc]# mkdir -p /home/VMAIL/LOG/
[root@test etc]# touch /home/VMAIL/LOG/procmail.dovecot-lda.log
[root@test etc]# chown vmail.vmail /home/VMAIL/LOG/procmail.dovecot-lda.log
[root@test postfix]# vim /etc/postfix/main.cf
(略)
#virtual_transport = dovecot
virtual_transport = procmail
dovecot_destination_recipient_limit = 1
procmail_destination_recipient_limit = 1
(略)
■ Postfixを再起動した
[root@test postfix]# service postfix restart
Shutting down postfix: [ OK ]
Starting postfix: [ OK ]
Postfixが受信したヴァーチャルユーザー宛てのメールが、
procmailを経て、dovecot-ldaに転送され、メールボックスに保存されるようになった。