Debian(Ubuntu)で postfix を使ってみる では、Debian/UbuntuへのPostfixの対応について書きました。
今回は、CentOS / Scientific Linux の対応についてです。
CentOS / Scientific Linux では、バージョン 6 からデフォルトのMTAとして使用されるようになったことから、
Postfixを普通に利用している方も多いと思います。(バージョン 5 までは、SednmailがデフォルトのMTAでした。)
そういう経緯もあって、この記事は、インストール関連はほとんどがバージョン 5 への対応であり、
初期設定については、すべてのバージョンに共通的な話となっています。
では、早速、Postfixのインストールからはじめてみましょう。
- 目次
- 履歴
2013年2月2日 初版
CentOS(Scientific Linux)で postfix を使ってみる
CentOS(Scientific Linux)で postfix をインストールし、簡単な設定を行った後、動作確認まで行ってみます。
- postfix をインストールする。
バージョン 6 以降では、デフォルトのMTAとなったので、ほとんどはインストール済ということもあります。
まずは、postfix がインストールされているか確認します。$ rpm -qa|grep postfix postfix-2.3.3-6.el5
上記の例では、既にインストールされています。
上記の出力結果で何も出力されないようなら、インストールされていませんから、postfix をインストールします。
インストール方法は、yumでインストールするだけです。
$ yum install postfix ... Install 1 Package(s) Upgrade 0 Package(s) Total download size: 3.6 M Is this ok [y/N]: y ... $
- 簡単な設定を行う
postfixは、大きく以下の2つのファイルにて設定することができます。
- /etc/postfix/main.cf : サイトごとの設定
- /etc/postfix/master.cf : デーモンプロセスの設定
ここでは、基本的な設定のみを行いますので、main.cf のみを扱います。
また、main.cf は、デフォルトの値を変更する分だけを設定します。
postfixのデフォルトの設定値は、postconfで確認できます。# デフォルトの値を全出力する場合は以下のようにします。 $ postconf -d ... # biff のデフォルトの値だけを確認したい場合は以下のようにします。 $ postconf -d biff biff = yes # 正確にパラメータ名を覚えていない場合は、単純に grep で出力するのも良いかもしれません。 $ postconf -d | grep bif biff = yes
以下は、main.cf の設定です。
/etc/postfix/main.cf
... # ここは、メールサーバーのホスト名を指定します。 #myhostname = host.domain.tld #myhostname = virtual.domain.tld myhostname = mail.exmaple.com ... # ここは、自ネットワークのIPアドレスを指定します。 # ここで指定したIPアドレスからのリレーメールは、全て許可されます。 # あえて許可したいサーバーやローカルエリアなどがあれば設定します。 # そうでない場合は、無理に設定する必要はありません。デフォルトのままでOKです。 # mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 11.22.33.44 55.66.77.88 ... # 以下は、ヘッダ情報に出力されるメールサーバー名なので、できるだけシンプルに変更します。 #smtpd_banner = $myhostname ESMTP $mail_name #smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) smtpd_banner = $myhostname ESMTP $mail_name # メーラーはpostfixという名前を非表示(unknown)にしておきます。 mail_name = unknown # 新着メール通知のためのbiffを停止します。 # biffは、今は、使われることはほとんどありませんが、 # 利用しているメールクライアントが、メールチェックにbiffを利用している場合、yesとします。 biff = no # ".domain" 情報のないアドレスに文字列 ".$mydomain" を付け加えないようにします。 # 一般的にな利用では、ローカルユーザ名だけでのメールやりとりは、ほとんどないと思います。 append_dot_mydomain = no ... # メールボックス配送に 外部の配送エージェントを使う場合に設定します。 #mailbox_command = /some/where/procmail #mailbox_command = /some/where/procmail -a "$EXTENSION" # procmail を使う場合 #mailbox_command = /some/where/procmail -a "$EXTENSION" # maildrop を使う場合 #mailbox_command = /some/where/maildrop -d "$USER" ... # メールボックスのサイズに制限を持たないようにしたい場合に0を設定します。 # デフォルト: 51,200,000 byte (約52MByte) mailbox_size_limit = 0 ... # ユーザ名と拡張アドレス (user+foo) の間の区切りを設定します。 # これを指定することで、ユーザを追加することなく、拡張メールアドレスをいくつでも作ることができます。 # 例) taro+hogehoge@exmapl.com , taro+other@exmapl.com いずれもtaroさん宛のメールアドレスです。 # ただし、 ~taro/.forward+hogehoge , ~taro/.forward+other のように別の配送ができるようになります。 recipient_delimiter = + ... # このメールシステムがメールを受け取るネットワークインターフェース アドレス。 # 外部からメールを受け取る場合は、all とします。 inet_interfaces = all #inet_interfaces = $myhostname #inet_interfaces = $myhostname, localhost # 以下の行をコメントアウトする #inet_interfaces = localhost ... # 仮想ドメインがある場合は、以下のようにドメインを列挙します。 virtual_alias_domains = exmaple.com, sample.net # 仮想メールアドレスを設定するファイル名を指定します。 virtual_alias_maps = hash:/etc/postfix/virtual ... # 迷惑メール対策として、最低でもHELOの応答がない場合は、破棄するようにします。 smtpd_helo_required = yes # HELO or ELO で応答したホスト名をファイルで検索し、該当する名前があれば、その指示に従うようにします。 smtpd_helo_restrictions = check_helo_access hash:/etc/postfix/helo,permit ... # Postfix サブシステムや機能に関する構築方法や設定方法、操作方法が 書かれた Postfix README ファイルの場所ですから # あえて公開する必要もないので、ここでは、コメントアウトします。 # readme_directory: The location of the Postfix README files. # # 以下の行をコメントアウトする #readme_directory = /usr/share/doc/postfix-2.3.3/README_FILES
変更箇所の文字色 箇所が編集したところです。
ここでの設定は、基本的で必要最小限の設定になっています。これでセキュアなメールサーバーとはなっていないので注意してください。
また、ここで新たに追加されたファイルが2つあります。
- /etc/postfix/virtual : 仮想ユーザの設定
以下は、仮想ドメインのsample.netのhogeユーザを定義したものです。 ここでは、hoge@example.comへ転送しています。
# sample.net hoge@sample.net hoge@example.com
- /etc/postfix/helo : helo の制御
以下は、heloであたかもメールサーバーと同じであるかのようにメールサーバーと同じIPアドレスを名乗るスパムサーバーがあります。 その場合は、破棄するように指定したものです。最低限、これくらいはやっておくとスパムは半減します。
# own reject 11.22.33.44 REJECT
上記のコマンドで、拡張子にdbを持つファイルがそれぞれ作成されます。$ postmap /etc/postfix/virtual $ postmap /etc/postfix/helo
- postfixのテストをしてみましょう
postfixの設定を終えたら、postfixを起動し、簡単テストを行ってみましょう。
ただし、CentOS/Scientific Linuxの場合、Sendmailが動作している場合があります。
まずは、Sendmailが動作している場合は、Sendmailを停止します。
$ ps aux|grep sendmail root 896 0.0 0.1 9372 1888 ? Ss 14:08 0:00 sendmail: accepting connections smmsp 898 0.0 0.1 8284 1520 ? Ss 14:08 0:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue root 2185 0.0 0.0 5112 808 pts/0 S+ 20:38 0:00 grep sendmail
上の例では、Sendmailが動作していますので、Sendmailを停止します。
$ /etc/init.d/sendmail stop sm-client を停止中: [ OK ] sendmail を停止中: [ OK ]
続けて、postfixを起動します。
$ /etc/init.d/postfix start postfix を起動中: [ OK ]
ここで、ドメインのDNS設定でmxの先をメールサーバーのIPアドレスへ変更します。以下はその1例です。
a mail 11.22.33.44 mx mail 10
あとは、確認するだけです。 内部からメールを送信するには、mail コマンドが簡単です。
シェルから、以下のようにコマンドでテストメールを送信してみましょう。$ mail test-taro@yahoo.co.jp Subject: test test mail from postfix. . Cc: $
もちろん、宛名は、適当に編集してください。
また、本文の最後は、ピリオド “.” のみの行 + Enter キー で終了となります。
さあ、yahooメールを確認してみてください。ちゃんとメールは届きましたか?
続けて、yahooメールからメールサーバーへメールを送信してみてください。
メールが正しく届けばOKです。
- postfixをデフォルトのMTAとします
postfixが正しく動作した場合、Sendmailと共存している場合は、デフォルトのMTAをどちらにするか 以下のようにalternativesコマンドと使って、決めておきます。
$ alternatives --config mta 2 プログラムがあり 'mta' を提供します。 選択 コマンド ----------------------------------------------- *+ 1 /usr/sbin/sendmail.sendmail 2 /usr/sbin/sendmail.postfix Enter を押して現在の選択 [+] を保持するか、選択番号を入力します: 2
alternativesで再起動時の自動起動設定までを行ってくれますので、chkconfigによる起動設定は必要ありません。
どうしてもSendmailの設定は、他のアプリケーションの設定と比較しても独特な面がありますから、とっつきにくいのは確かですよね。
その点だけでも、Postfixへの移行は、メリットがあるのかもしれません。
CentOS 6/Scientific Linux 6では、デフォルトのMTAがPostfixになったことも良いきっかけかもしれません。 上記のインストールおよび設定例は、CentOS 5 でもOKなので、切り替えてみられてはいかがでしょうか。
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
コメントを投稿 :