「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 ]