Top | Wiki | Blog | Github  

Postfix

某サーバへのPostfixのインストールログです.今後の参考のためのメモ程度ですので,参考程度で.

手順

  1. Postfix のインストール
  2. Postfix の設定
  3. ファイヤーウォールの更新
  4. アカウントの移行(/home を含む)
  5. 踏み台対策と確認
  6. 迷惑メール対策
  7. 起動スクリプトの確認
  8. ログ解析ツールのインストール

インストール

今回のシステムは,Vine Linux 4.1 なので,単純に apt-get を利用してインストールする.

# apt-get install postfix

設定

設定確認には次のコマンドを利用する.

# postconf

設定を書き込む実ファイルは,main.cf で,/etc/postfix/main.cf にある.

  • ホスト名を設定する
myhostname = mail.hoge.jp
  • どのドメインのメールを受け取るのか設定する
mydomain = hoge.jp
  • メールアドレスにホスト名を入れずに使用できるようにする
myorigin = $myhostname
> myorigin = $mydomain
  • どんなメールをこのホストで扱うのかを宣言します
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

  * 信頼するネットワークを指定する(ローカル配信だけなら,これで十分か?)

> mynetworks_style = host



===== アカウントの移行 =====

最も注意しなければならいのは,/home と /var/spool/mail にある各アカウント用のファイルが持つ UID と GID が整合性を保っているのかを確認することである.もし,新旧ユーザの UID と GID が重なっていると正しくメールが配信されない可能性がある.

チェックするべきファイルリスト:

  * /home/hoge
  * /var/spool/mail/hoge
  * /etc/postfix/aliases
  * /etc/passwd
  * /etc/shadow
  * /etc/group

aliases を更新したら,newaliases の発行を忘れずに行うこと.

===== ログ解析ツール =====

ログ解析ツールとして,[[http://jimsun.linxnet.com/postfix_contrib.html|pflogsumm]] を利用する.

Vine Linux 4.1 の場合,Perl モジュールの Date::Calc を求められるので,必要に応じてインストールする必要がある.

<code sh>
$perl -MCPAN -e shell

cpan> install Date::Calc </code>

cron に登録しておけば,一日一回の定時レポートをメール配信させることもできる.

詳細は,下記リンクより.

Submission ポートで接続

外部からSubmissionポートを利用してSMTP接続を許可する場合,SMTP AUTH か POP before SMTP の認証をする必要がある.前者は,Posftfix のリビルドが必要になり,後者は qpopper のリビルドが必要になる.今回は,drac を利用した POP before SMTP で認証をかける.

インストール作業

drac と dracd へのIP通知に対応した qpopper が必要.

  • dracd
$apt-get install dracd

rc.dracd を編集(see below)して起動.

  • qpopper (src)
$apt-get source qpopper
$rpm -ivh qpopper-XXX.src.rpm
vi /usr/src/vine/SPECS/qpopper.spec

qpopper.spec の最初の行のフラグを0から1に変える

%define USE_DRACD 1
$cd /usr/src/vine/SPECS
$rpm -ba qpopper.spec
$apt-get instal pam-devel
$apt-get install gdbm-devel
$apt-get install openssl-devel
$cd /usr/src/vine/RPMS/386

rpm をインストールする.

rc.dracd

/usr/sbin/rpc.dracd -i -e 10 &

起動時にデータベースをクリアし,10分ごとにリフレッシュする.

動作テストは,

$testdrac localhost XXX.XXX.XXX.XXX
$db_dump -p /etc/mail/dracd.db

として,データベースにIPが記録されることを確認して,そのIPからメールを投げてみればよい.なお,db_dump コマンドは,db4-utils をインストールすることで使えるようになる.

main.cf

mynetworks に,btree:/etc/mail/dracd を付け加える.drac は,hash, dbm, btree のうち btree を利用している.

master.cf

#submission inet n - n - - smtpd

のコメントアウトを外し,

-o smtpd_client_restrictions=check_client_access,btree:/etc/mail/dracd,permit_sasl_authenticated,reject

を書き加えて postfix を restart する.

/etc/services に次のエントリーがあることを確認.

submission 587/tcp msa # mail message submission
submission 587/udp msa # mail message submission

また,iptables で 587 を通しておく必要がある.

注意点

  • リレーサーバにおける存在しないユーザの対処
local_recipient_maps = 

と空設定を明示する必要がある.明示しない場合,User unknown in localrecipient table というメッセージが表示され,転送されない.

  • メールボックスの容量を無制限にする
mailbox_size_limit = 0

デフォルトでは,エントリーそのものが存在せず,値としては 51200000 が利用される.無制限もしくは具体的な制限容量を与えるためには,上記の mailbox_size_limit を main.cf に追加する必要がある.

  • メールの容量制御を制御する

20[MB] に限定するなら,以下を main.cf に追記する.

message_size_limit = 20480000

デフォルトでは,エントリーそのものが存在せず,値としては 10240000 が利用される.無制限もしくは具体的な制限容量を与えるためには,上記の message_size_limit を main.cf に追加する必要がある.