Kozupon.com    
 
 Postfixの導入!


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日程度が良いかと個人的には思ってる。

以上


 
 
 



Copyright 2009 Kozupon.com.