2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

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

以上

コメント