Home arrow Debian環境セットアップ arrow [Debianセットアップ]Postfix のインストール(mysqlで管理)
[Debianセットアップ]Postfix のインストール(mysqlで管理) プリント
Debian 環境セットアップ

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