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 sasl2-bin libsasl2-modules (cyrus-sasl-2.1.22)
# 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 = 51200000
message_size_limit = 10240000
virtual_mailbox_limit = 51200000
virtual_mailbox_limit_maps = hash:/etc/postfix/virtual_quota
virtual_mailbox_limit_override = yes
virtual_overquota_bounce = yes
virtual_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'
・上記ファイルのパーミッション変更
# chmod 644 /etc/postfix/mysql_virtual*
・ドメインやユーザー毎に上限を設定(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_etrn_restrictions=reject
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
smtps inet
n
-
n
-
- smtpd
-o smtpd_tls_wrappermode=yes
-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をインストールしてみました。 詳しくはこちらのページ
|