Postfix設定(SMTP Auth編)


「Postfix」のバーチャルドメイン環境ででSMTP Authを利用できるように設定します。

(1)バーチャルドメインで受信したメールを処理するユーザーを作成する。
[root@mail1 ~]# groupadd -g 10000 vuser ← # グループIDを10000に設定
[root@mail1 ~]# useradd -g vuser -u 10000 vuser ← # ユーザIDを10000に設定
[root@mail1 ~]# cd /home/
[root@mail1 home]# chmod 771 vuser/ ← # 「vuser」ディレクトリのパーミッション変更

(2)「Postfix」が「MySQL」にアクセスするための設定ファイルを作成する。
[root@mail1 ~]# vi /etc/postfix/mysql_virtual_alias_maps.cf
user = postfixadmin
password = postfixadmin
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
#expansion_limit = 100

[root@mail1 ~]# vi /etc/postfix/mysql_virtual_domains_maps.cf
user = postfixadmin
password = postfixadmin
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'

[root@mail1 ~]# vi /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfixadmin
password = postfixadmin
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'

[root@mail1 ~]# vi /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
user = postfixadmin
password = postfixadmin
hosts = localhost
dbname = postfix
query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'

[root@mail1 ~]# vi /etc/postfix/mysql_sender_login_maps.cf
user = postfixadmin
password = postfixadmin
hosts = localhost
dbname = postfix
query = SELECT username FROM mailbox WHERE username='%s'

(3)(2)で作成したファイルのパーミッションを変更する。
[root@mail1 ~]# chmod 640 /etc/postfix/mysql_virtual_alias_maps.cf
[root@mail1 ~]# chmod 640 /etc/postfix/mysql_virtual_domains_maps.cf
[root@mail1 ~]# chmod 640 /etc/postfix/mysql_virtual_mailbox_maps.cf
[root@mail1 ~]# chmod 640 /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
[root@mail1 ~]# chmod 640 /etc/postfix/mysql_sender_login_maps.cf
[root@mail1 ~]# chown root:postfix /etc/postfix/mysql_virtual_alias_maps.cf
[root@mail1 ~]# chown root:postfix /etc/postfix/mysql_virtual_domains_maps.cf
[root@mail1 ~]# chown root:postfix /etc/postfix/mysql_virtual_mailbox_maps.cf
[root@mail1 ~]# chown root:postfix /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
[root@mail1 ~]# chown root:postfix /etc/postfix/mysql_sender_login_maps.cf

(4)「Postfix」の設定を行う。
[root@mail1 ~]# vi /etc/postfix/main.cf
myhostname = mail.mail1.com
mydomain = mail.com
myorigin = $mydomain
inet_interfaces = all
mydestination =
relay_domains = $mydestination
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP unknown

----------最終行に追加----------
local_transport = virtual
virtual_transport = virtual
virtual_mailbox_base = /home/vuser
virtual_mailbox_limit = 0
virtual_minimum_uid = 10000
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf,
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf,
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes

----------SMTP Auth設定追加----------
smtpd_sasl_auth_enable = yes ← # SASLによるSMTP_AUTHを有効にする設定
smtpd_sasl_type = dovecot ← # 認証に、DovecotSASLを使用
smtpd_sasl_path = private/auth ← # SASLパスを変更
smtpd_sender_restrictions = reject_sender_login_mismatch ← # SASLでログインしない場合は受付拒否
smtpd_sender_login_maps = mysql:/etc/postfix/mysql_sender_login_maps.cf ← # DBアクセスファイル

----------以下は任意設定----------

maximal_backoff_time = 800s ← # 遅延メッセージの配送を試行する最大の時間間隔
minimal_backoff_time = 100s ← # 遅延メッセージの配送を試行する最小の時間間隔
bounce_queue_lifetime = 60m ← # 配送できないと見なすまでに、バウンスメッセージがキューに入っている最大の時間

maximal_queue_lifetime = 60m ← # 配送できないものとして送り返すまでに、メッセージがキューに入っている最大の時間

message_size_limit = 10485760 ← # 最大送信可能メールサイズ設定

(5)「saslauth」の設定を変更する。
[root@mail1 ~]# vi /etc/sysconfig/saslauthd
# Directory in which to place saslauthd's listening socket, pid file, and so
# on. This directory must already exist.
SOCKETDIR=/var/run/saslauthd

# Mechanism to use when checking passwords. Run "saslauthd -v" to get a list
# of which mechanism your installation was compiled with the ablity to use.
MECH=pam
↓変更
MECH=rimap

# Additional flags to pass to saslauthd on the command line. See saslauthd(8)
# for the list of accepted flags.
FLAGS=
↓変更
FLAGS="-r -O 127.0.0.1"

[root@mail1 ~]# vi /usr/lib/sasl2/smtpd.conf ← 64bit OSの場合は「/lib64」に変更
pwcheck_method: saslauthd
mech_list: plain login

(6)「Postfix」を再起動する。
[root@mail1 ~]# /etc/rc.d/init.d/postfix restart
postfix を停止中:                                          [  OK  ]
postfix を起動中:                                          [  OK  ]

Comments are closed.