複数relayhost、transport、relayhost+SMTP認証、virtual_mailbox


参考

設定

複数書くと下が優先される

relayhost = [smtp.gmail.com]:587
relayhost = [smtp.abc.com]:587
  • [hostname] のように、転送先ホスト名を [ ] で囲むと MX検索をしなくなる。

送信先アドレスで変更する

transport_maps = hash:/etc/postfix/transport
/etc/postfix/transport
example.com     :
abcdefg.co.jp   smtp:[smtp.gmail.com]:587
*               error: Local delivery only!
  • 1行目: リレーせず直接ローカル配信
  • 2行目: 特定のドメインをリレーさせる
    • relay_domains = example.com, abcdefg.co.jpでもよい。
  • 3行目: その他全てをリレーさせる。がerrorを書いておくとマッチしたものを送信させなくする。開発時便利
    • main.cfに default_transport = error でも同じ。
postmap /etc/postfix/transport

SMTP認証のパスワードを設定

  • relayhost に指定した宛先を全てについてSMTP認証のパスワードを設定します。
[smtp.gmail.com]:587 username:password
[smtp.abc.com]:587 username:password
設定反映
postmap /etc/postfix/relay_password
systemctl postfix restart

virtual_mailbox

main.cf
virtual_alias_maps = hash:/etc/postfix/virtual, pcre:/etc/postfix/pcre_alias

virtual_transport = vmail-procmail
vmail-procmail_destination_recipient_limit = 1
virtual_mailbox_base = /home/vmail
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_mailbox_domains = hash:/etc/postfix/vmaildomains

virtual_minimum_uid = 500
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

virtual_alias_maps

virtual
pcre_ailas
/^info_[\w_\-]+@local\.com$/    info

[email protected][email protected] に配送させる。

virtual_transport

master.cf
vmail-procmail unix - n n - - pipe
  flags=DORhq user=vmail:vmail argv=/usr/bin/procmail -t -m /home/vmail/.procmailrc ${recipient}

virtual_mailbox_base

  • HOMEディレクトリ指定。

virtual_mailbox_maps

virtual_mailbox_domains

virtual~uid

  • セキュリティ対策用にUIDをずらす

/home/vhost/.procmailrc

MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
SHELL=/bin/sh

_TO=$1

_DOMAIN=$(echo $_TO | awk -F@ '{print $2}' | tr '[:upper:]' '[:lower:]')
_USER=$(echo $_TO | awk -F@ '{print $1}' | tr '[:upper:]' '[:lower:]')
SWITCHRC=$HOME/$_DOMAIN/$_USER/.procmailrc

/home/vhost/$_DOMAIN/$_USER/.procmailrc

/home/vhost/local.com/user1/.procmailrc
MAILDIR=$HOME/local.com/user1/Maildir/
DEFAULT=$MAILDIR
LOGFILE=$HOME/local.com/user1/procmail.log

:0 c
! [email protected]