Postfixの導入について説明する。ここで説明する方法は、ソースからコンパイルするやり方である。Postfixは一部のディストリビューションで標準的にバンドルされているMTAまで成長した。sendmailに互換性があり、sendmailより設定関係が簡素となった。そのため、メールサーバを構築する初心者には最適なMTAで有るのではないだろうか。ここで導入説明は、Postfixのインストールから起動まで説明しているが、細かい設定内容及びパラメータの説明等は割愛している。”とにかく動く!”のポリシーで説明を進めるので了解の上、観覧していただきたい。
動作確認環境:
マシン : PC/AT互換機
OS : RedHat系Linux2.4カーネル
1.準備
● まずは、ソースを ここ でゲットする。執筆時点最新、postfix-1.1.11-20020822.tar.gzであった。
● Postfix運用のための、グループとユーザを作る。
# groupadd maildrop
# useradd -M postfix
注意 : ちなみに、-Mパラメータを用いるのはホームディレクトリを作らないようにする為である。
コラム:
FreeBSDの場合のユーザ作成の方法。
# /stand/sysinstall
で、
Login ID : postfix
Full name : Postfix Owner
Home Directory : /nonexistent
Login shell : /sbin/nologin
のように登録すればよい。これはホームディレクトリが無く、ログインしないユーザを作ることを意味している。
2.インストール
● 適当な、フォルダに展開してコンパイルを行う。
# tar -zxvf postfix-1.1.11-20020822.tar.gz
# cd postfix-1.1.11-20020822
# make
# make install
● sendmailからPostfixへ移行のため、sendmailをぶっ殺す!sendmailが動いてる場合は、sendmailを止めて、以下の処理を行う。
# mv /usr/sbin/sendmail /usr/sbin/sendmail.OLD
# mv /usr/bin/mailq /usr/bin/mailq.OLD
# mv /usr/bin/newaliases /usr/bin/newaliases.OLD
# chmod 755 /usr/sbin/sendmail.OLD /usr/bin/mailq.OLD /usr/bin/newaliases.OLD
3.main.cfの編集
● インストールが終わると、通常/etc/postfixに設定ファイルが置かれる。この中の、main.cfを編集する。この設定は、とりあえずこれで大丈夫だよ設定です(笑)。
# cd /etc/postfix
# vi main.cf
途中を略す。
# Postfix Configuration
# Postfix Mail Owner postfix only
mail_owner = postfix ← メールオーナーはpostfixにする
# Postfix Mail Owner Group
setgid_group = maildrop ← setuidグループはmaildropにする
# Postfix Secound Owner
default_privs = nobody ← セカンドオーナーはnobodyにする
# This Server Name(FQDN)
myhostname = sub2.kozupon.com ← このホスト名つまりメールサーバ(FQDN)
# This Network Domain Name
mydomain = kozupon.com ← ここのドメイン名
# The sending domain of all the mail
myorigin = $mydomain ← Postfixから送信される全ての発信元アドレスは、発信元はこのネットワークのユーザからなのでmydomainを指定する
# The name of an interface to watch
inet_interfaces = all ← 着信メッセージを監視するインターフェースは、all(全て)にする
# The host who accepts it as an address of the message
mydestination = $myhostname, localhost.$mydomain $mydomain ← Postfixサーバがメッセージの宛先として受け付けるホストを定義する。通常は、このように設定する
# The limitation of the mail relay※1 mynetworks = 192.168.255.0/24, 127.0.0.0/8 ← Postfixサーバを中継できるクライアントを制限する。ネットワークアドレス/サブネットと、IPアドレスが定義できる。複数設定の場合は、”,”で区切る
# The host who permits a mail relay, and address
※1 relay_domains = $mydestination, michan.co.jp ← Postfixサーバを中継できる外部ドメインを定義する。通常は、このようにmydestinationを定義してから、”,”で区切りドメインを指定する。ここでは、michan.co.jpのドメインのホストからの中継を許可している
alias_maps = hash:/etc/postfix/aliases ← 別名定義の所在を指定する
alias_database = hash:/etc/postfix/aliases ← 同上
mail_spool_directory = /var/spool/mail ← メールのユーザスプールディレクトリの所在を指定する
debug_peer_level = 2 ← ホストと通信するときのデバッグレベル。通常は、2を指定する。ログの詳細レベルが2段階アップされる
debugger_command =
PATH=/usr/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5 ← 特にデフォルトのままでよい。メール管理者はデバッガを使用できる。もっとも一般的なのは、GNUのgdbとxxgdbである
mailq_path = /usr/libexec/postfix ← メールキューコマンドの所在指定
queue_directory = /var/spool/postfix ← メールキューディレクトリの所在指定
command_directory = /usr/sbin ← Postfixのコマンド所在指定
daemon_directory = /usr/libexec/postfix ← Postfixのデーモンモジュールディレクトリの所在指定
# manpage_directory: The location of the Postfix on-line manual pages.
manpage_directory = /usr/local/man ← manディレクトリの所在指定
# sample_directory: The location of the Postfix sample configuration files.
sample_directory = /etc/postfix ← サンプルコンフィグレーションファイルディレクトリの所在指定
readme_directory = no
# Need by Mailling List aliases Setting
allow_mail_to_commands = alias,forward,include ← aliasesファイルに必要な設定コマンドを定義する。このセクションはデフォルトでは記載がないので必ず追加する。特に、fml等のメーリングリストを構築する場合必要
# Message Size Limit
※2 mailbox_size_limit = 102400000
※2 message_size_limit = 51200000
注意:
1) Postfixで勘違いやすいのは、中継の許可・不許可である。これは、当然のごとくセキュリティに関係するので絶対に間違えないこと。上記のmain.cfのポリシーで記述すれば間違いなく不正中継を防ぐことが出来る。
2) ※1印は、中継許可の設定を行っている。
3) ※2印は、送信メッセージのサイズを規定している。どうも、Postfixはデフォルトでは5MB程度のLimitらしい。以前、このパラメータ無しに8MB程度のファイルを添付して送信したらエラーになった覚えがある。一応、俺の設定はmailboxに100MB占有してメッセージ送信のLimitは50MBとしている。ただし、つじつまの合わない極端に大きい値を入れてもエラーになるので注意が必要。エラーが出ないかmaillogを観察しながら作業しよう。
● 設定の記述ミスがないか、チェックする
# postfix check
● main.cfの中身の表示
# postconf -n
4.Postfixの起動・停止
● Postfixの起動
# postfix start
注意:
起動できない場合は、フルパスで指定!
● 起動プロセスの確認
# ps -axw | more
1426 ? S 0:01 /usr/libexec/postfix/master
1499 ? S 0:26 qmgr -l -t fifo -u
13741 ? S 0:00 pickup -l -t fifo -u
● Postfixの再起動
# postfix reload
● Postfixの停止
# postfix stop
5.配送テスト
● Mailコマンドを使ったテスト
$ echo “This is Postfix test.” | Mail -s test 適当なメールアドレス
# tail /var/log/maillog
略
日時 mail postfix/pickup[5005]: E875A16481: uid=0 from=<root>
日時 mail postfix/cleanup[5013]: E875A16481: message-id=…
日時 mail postfix/qmgr[5006]: E875A16481: from=…
日時 mail postfix/local[5015]: E875A16481: to=… relay=local, delay=1, status=sent (mailbox)
略
6.キュー操作
MTAで必ずと言って必要となるのは、キュー操作コマンドである。Postfixの場合、ほとんどがpostsuperコマンド、postqueueコマンドの2つを使って行う。
● 停滞キューの強制排出(糞づまりの場合)
# postfix flush
もしくは、
# postqueue -f
● 停滞キューの削除
postsuper -d <キューID>
● キューを全て削除
postsuper -d ALL
7.停滞キューを貯めない方法
Postfixがステータスでデファードを出力した場合に、送信メールはキューに停滞してリトライを続ける。
しかし、不適切なアドレスに何時までもリトライを続けるのは、メールサーバとしては効率が悪い。そこでPostfixでは、キューの中のメッセージの停滞期間をmain.cfファイルに設定できる。何も指定しなかった場合、デフォルトでは5日間になっている。単位は、(日)である。
bounce_queue_lifetime = 2
場合によっては、1日では問題が有る場合が多いので、2日程度が良いかと個人的には思ってる。
以上
コメント