Postfix のインストール(mysqlで管理)
Debianではexim4がすでに標準でインストー ルされているので、そのまま使ってもいいのですが、SPAM対策やユーザーの利便性も考えると、わりとメージャーsendmailやqmail、 postfixを使うことになります。どのMTAも試してきましたが、現時点ではPostfixが一番バランスがいいので、PostfixでMTAを構築しました。
● postfixのインストール
(1)バーチャルアカウント用のユーザー、グループを作成する。# groupadd -g 5000 virtual
# useradd -g virtual -u 5000 virtual
# mkdir /var/mail/virtual
# chown virtual.virtual /var/mail/virtual
# chmod 771 /var/mail/virtual
(2)postfixをパッケージでインストール
# apt-get install postfix postfix-tls (postfix-2.3.8)
# apt-get install postfix-mysql (2.3.8-2+b1)
(3)postfixの設定
# vi /etc/postfix/main.cf
-----------------------------myhostname = mail.fulldigit.net
myorigin = fulldigit.net
→localhostなどから送信した場合、ドメイン名が付かないので、@以下のドメインを自動負荷するように設定しておく。
mydestination = →virtual_mailbox_domainsで指定したドメインが処理されるので未指定にする。relay_domains = $mydestination →リレーを許可するドメイン
local_transport = virtual
virtual_mailbox_base = /var/mail/virtual
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_alias_domains = $virtual_alias_maps
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
mailbox_size_limit = 51200000message_size_limit = 10240000
virtual_mailbox_limit = 51200000
virtual_mailbox_limit_maps = hash:/etc/postfix/virtual_quota
virtual_mailbox_limit_override = yes
virtual_overquota_bounce = yesvirtual_mailbox_limit_inbox = yes
データベース(Postfix.adminでの設定)からアカウントを参照できるようにDB情報を登録する
# vi /etc/postfix/mysql_virtual_alias_maps.cf
--------------------------
user = postfix
password = abcdefg01
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s'
# vi /etc/postfix/mysql_virtual_domains_maps.cf
--------------------------
user = postfix
password = abcdefg01
hosts = localhost
dbname = postfix
query = SELECT description FROM domain WHERE domain='%s'
# vi /etc/postfix/mysql_virtual_mailbox_maps.cf
--------------------------
user = postfix
password = abcdefg01
hosts = localhost
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s'
・上記ファイルのパーミッション変更
・ドメインやユーザー毎に上限を設定(main.cfのvirtual_mailbox_limitを超えないように..)
# vi /etc/postfix/virtual_quota
--------------------------@fulldigit.net 40960000
・virtual_quota.dbを更新する。
# postmap virtual_quota
(3)メールボックス
Debianのpostfixはchrootを利用しており、MySQLへ接続する際にSocket(/var/run/mysqld/mysqld.sock)を使うのでそれを参照できないというエラーが発生する。# vi /etc/postfix/master.cf
--------------------------------------------------# ======================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (50)
# ======================================================
smtp | inet | n | - | n | - | - | smtpd |
cleanup | unix | n | - | n | - | 0 | cleanup |
rewrite | unix | - | - | n | - | - | trivial-rewrite |
ついでにサブミッションとsmtpsのコメントを外す
submission | inet | n | - | n | - | - | smtpd |
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
smtps | inet | n | - | n | - | - | smtpd |
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
--------------------------------------------------------------
(4)SMTP認証のためのアカウントを作成する
# saslpasswd2 -u fulldigit.net fulldigit_user (********)
【重要】認証用のアカウント追加後、必ず実行
→パッケージインストールでは、chrootして実行されるので、コピーが必要ちなみに、postfixユーザーでread権限が必要なので、640のグループをpostfixにしておく
# chgrp postfix /etc/sasldb2
# chmod 640 /etc/sasldb2
# cp -pr /etc/sasldb2 /var/spool/postfix/etc
sasldbの確認
# sasldblistusers2
・saslauthがサーバ起動時に自動起動するように設定する
# vi /etc/default/saslauthd
------------------------------START=yes
・saslauthを起動
# /etc/init.d/saslauthd start
これで、SMTPサーバのインストールができましたが、受信はPOPやIMAPのインストールが別に必要です。
POPサーバの場合、受信するMUA(メーラー)の種類によって、何が最適か決めることになりますが、概ねOutlookExpressが使われている場合はSSL通信、OutlookExpressが使われていない場合はAPOPが簡単でセキュアな環境が作れます。
(1)SSLで受信するためにcourier-sslをインストールしてみました。 詳しくはこちらのページ
(2)APOPに対応したPOPサーバとしてteapopをインストールしてみました。 詳しくはこちらのページ