Debian 環境セットアップ

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 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
cleanupunixn-n-0cleanup
rewriteunix--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をインストールしてみました。 詳しくはこちらのページ