CentOS on X40:SMTPサーバPostfixの設定

ieServer.netでも設定ができそうなのでやってみます。
今回は定番SMTPサーバであるPostfixの設定を行ってみます。

参考サイトはこちら:

じめての自宅サーバー構築 – SMTPサーバの構築(Postfix) –

Postfixでメール
サーバ(MTA)

メールサーバを立てると、SPAMや不正中継に狙われる確立が格段とあがってしまうので構築の際は十分注意してください。
ここでは併せてメール送信時にパスワード認証を行うSMTP-Authも設定します。

※なお、今後構築する予定のWebメールやCMS、グループウェアでSMTP-Authが使えない場合、その設定だけ取り消すかもしれません。

postfixのインストール

# yum install postfix


に、postfixの設定ファイルを編集しますが、SPAMや不正中継を防ぐ設定を織り交ぜて記述していきます。
設定ファイル(main.cf)の編集

# vi /etc/postfix/main.cf
【68行目あたり】ホスト名の指定
myhostname
= ieServer.netで取得したホスト名(xxx.dip.jpなど、自ドメインがある場合はFQDN名)
【76行目あたり】ドメイン
名の設定
mydomain = ieServer.netで取得したドメイン名(xxx.dip.jpなど)
【92行目あたり、コメント
外し】送信者メールアドレスドメインの指定(@以降の文字)
myorigin = $mydomain
【106行目あたり、コメント外
し】通信を受け入れるインターフェイスを指定
inet_interfaces = all
【154行目あたり】内部ネットワーク受信の設

mydestination = $myhostname, localhost
【254行目あたり】信頼されたネットワーク中継の制

mynetworks = 168.100.100.0/24, 127.0.0.0/8 ※サーバと同じネットワークと、サーバ自身を指定
【286
行目あたり】中継を許可するドメインを指定
relay_domains = $mydestination
【409行目あたり】メール
ボックス形式をMaildirに指定
home_mailbox = Maildir/
【558行目あたり】メールソフト名を隠す
smtpd_banner
= $myhostname ESMTP unknown
【667行目あたり追記】接続相手にHELO要求
smtpd_helo_required
= yes
【668行目あたり追記】VRFYコマンドを使用不可にし、アドレス漏えいを防ぐ
disable_vrfy_command
= yes
【669行目あたり追記】逆引きできないアドレスは拒否
#smtpd_client_restrictions =
permit_mynetworks, reject_unknown_client, permit
※ieServer.netでドメイン取得
した場合、この条件に引っかかるのでいまのところコメントアウトしておく
【670行目あたり追記】HELO要求で間違った文法がきたら拒否
smtpd_helo_restrictions
= permit_mynetworks, reject_invalid_hostname, permit
【671行目あたり追記】
MAIL FROMコマンドで通知されるアドレスがなかったら拒否
smtpd_sender_restrictions =
permit_mynetworks, reject_unknown_sender_domain, permit


いて同じmain.cf設定ファイル上にSMTP-Authの設定も記述します。

【673行目あたり追記】
smtpd_sasl_auth_enable
= yes
smtpd_sasl_local_domain = $hostname
smtpd_recipient_restrictions
= permit_mynetworks, permit_sasl_authenticated,
reject_unauth_destination
【677行目あたり追記】受信メールサイズを制限(10M)
message_size_limit
= 10485760

SMTP認証をシステムの認証と同じにしたかったのですが、うまくいかなかったので手本どおり
にします。

#vi /usr/lib/sasl2/smtpd.conf
【1行目あたり】
pwcheck_method:
auxprop

新規ユーザ用にプロファイル初期に作成されるメール用ディレクトリを作成します。

#
mkdir -p /etc/skel/Maildir/new
# mkdir -p /etc/skel/Maildir/cur
#
mkdir -p /etc/skel/Maildir/tmp
# chmod -R 700 /etc/skel/Maildir/


存ユーザ用は個人ごとの権限で設定していきます(ユーザがやたらいるときはどうしたらいいんだろう?)。

$ mkdir
-p Maildir/new
$ mkdir -p Maildir/cur
$ mkdir -p Maildir/tmp
$
chmod -R 700 Maildir/

既存ユーザのSMTP用パスワード設定

#
saslpasswd2 -u ドメイン名 -c ユーザ名
Password:パスワード入力
Again (for
verification):確認用パスワード入力

saslデータベースのユーザグループ変更(初回1回だけ)

#
chgrp postfix /etc/sasldb2

設定したユーザの確認

#
sasldblistusers2
ユーザ名@ドメイン名: userPassword ※これが出ればOK


定が完了したら、postfixサービスを起動します。エラーが出た場合は、/var/log/maillogを参照して修正してください。

#service
postfix start

もしsendmailサービスが動いている場合は、サービスを停止して起動しないように
してください。

# service sendmail stop
# chkconfig sendmail
off

続いて、SMTP-Authのサービスも起動します。認証にはシステムのユーザ名とパスワードを使用します。

#
service saslauthd start

正常に起動が確認できたら、デフォルトのMTAを変更しま
す。

# alternatives –config mta
2 プログラムがあり ‘mta’を提供します。
選択   コマンド
—————————————–
*+
1    /usr/sbin/sendmail.sendmail
2    /usr/sbin/sendmail.postfix
Enter
を押して現在の選択[+]を保持するか、選択番号を入力します:2 ←「2」と入力しEnter

ここまででお
およその下準備は完了ですが、ルータ側でポートを閉じていた場合、外部への送信ができませんのでポート(25番)を空けておくようにしてください。ポート
の確認は ポートチェック【外部からポート開放確認】 から確認できます。

ポートが空いていたら、不正中
継できる状況であるかのテストを行います。
方法は二つあります。
一つ目は、Mail relay
testing
にアクセスし、「Address to test:」という所にドメイン名を入れて「Test for
relay」と書かれたボタンをクリックしてください。
16ほどのテストを行ったあと、「All tests performed, no
relays accepted.」とでれば不正中継はできないであろうということを表しています。
二つ目はLinux側から直接「telnet
relay-test.mail-abuse.org」を入力して不正中継検査用アドレスにアクセスし、20ほどのテストを行った後「System
appeared to reject relay
attempts」といったメッセージが出れば不正中継はできないであろうということを表しています。

テストも正常に完了したのであれ
ば、以下のコマンドを入力してサービスを常時起動できる状態にしておきます。

# chkconfig postfix
on
# chkconfig saslauthd on

これでSMTPの設定は完了です。実際の送受
信確認はPOPサーバも必要となるのでこれはまた後日設定します。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中