CentOS6.5でやっているLinuxサーバー設定関連の続き記事。
今度はメール関連の設定について残していきます。最初はPostfixの導入から。
ページの目次
当サイトでのPostfix導入目標について
PostfixというのはSMTP(Simple Mail Transfer Protocol)サーバでSMTPとしては有名なsendmailとの置き換えを目的に開発されたソフトウェアです。
今回のPostfixの導入では外部(宅内ルーターの外)からメール送信用のサーバとしてのアクセスは目的としません。
簡単に言ってしまうと、Redmineからの連絡メールを送信(受け取る場所を用意)したいね。っていうのが導入しようとしたキッカケになります。そのため、OP25Bとか一切意識していないのであしからず。
(そのうち気が向いたら外部へのメール送信ぐらいは可能にするかもしれません)
インストールと起動設定
いつも通りのyumコマンドでインストール(CentOS 6.5の場合はアップデートでもOK)を行います。
# yum install postfix
普段ならサービスの自動起動設定などを行う所ですが、Postfixはインストールした時点で自動起動されます。念のため確認しておきます。
# chkconfig --list postfix postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off
基本設定
Postfixの主要な設定は「/etc/postfix/main.cf」で行います。
長いのでコメント部分は省きます。
queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix data_directory = /var/lib/postfix mail_owner = postfix myhostname = smtp.cross-ring.org ・・・・・・ (1) mydomain = cross-ring.org inet_interfaces = all ・・・・・・ (2) inet_protocols = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ・・・・・・ (3) unknown_local_recipient_reject_code = 550 mynetworks = 192.168.1.0/24, 127.0.0.1 ・・・・・・ (4) alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases home_mailbox = Maildir/ ・・・・・・ (5) debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.6.6/samples readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES # SPAM config ・・・・・・ (6) smtpd_soft_error_limit = 5 smtpd_error_sleep_time = 30 smtpd_hard_error_limit = 10 smtpd_client_connection_count_limit = 10 anvil_rate_time_unit = 1d smtpd_client_connection_rate_limit = 60 smtpd_client_recipient_rate_limit = 60 smtpd_client_message_rate_limit = 20 smtpd_client_event_limit_exceptions = $mynetworks
※前後行に空白を入れている個所は「# SPAM config」の行以下以外はコメントアウトされている設定です。
(1) コメントアウトされている myhostname と mydomain を有効化し、ホスト名とドメイン名を指定します。実際にドメインを持っていない場合はコメントアウトのままで運用します。その場合、ドメインはlocalhostで運用します。
(2) メールを受け取る事を許可するアドレスを指定します。外部からも受け取れるようにするには「all」を指定します。(LANポートが複数あり、特定のLANポートからのメールを受け取りたくない場合は受け取り許可するIPを設定します。)
(3) 受信アドレスの設定を行います。こちらで設定したドメイン宛へのメールを受け取った場合メールを内部のファイルへ書き出します。
(4) メールのリレー(中継)を許可するアドレスを指定します。サーバー自身と宅内からのメールのみ転送を許可します。
(5) ローカルへのメール配送設定を行っています。
- 初期設定(設定が無効な状態)では「/var/spool/mail/<username>」か「/var/mail/<username>」というファイルへメールが配送されます。(ファイルはユーザー毎に全メールが1ファイルで管理される)
- 最後に’/’を付けない場合は、各ユーザーのhomeディレクトリに その名称のファイルが作成され全メールが1ファイルで管理されます。
- 最後に’/’を付けた場合は、各ユーザーのhomeディレクトリにその名称のディレクトリが作成され、1メール1ファイルとして管理されます。
(6) SPAMメール送信対策用の設定です。
smtpd_soft_error_limit | 指定した回数のエラーが発生したときに応答遅延を行います。 |
smtpd_error_sleep_time | smtpd_soft_error_limitで指定した回数のエラーが発生したときの応答遅延の時間をを秒数で設定します。 |
smtpd_hard_error_limit | 指定した回数のエラーが発生するとSMTP接続を切断します。 |
smtpd_client_connection_count_limit | 同じメール送信元からの同時接続数の制限を行います。 デフォルト(未設定時)は50になっています。 |
anvil_rate_time_unit | クライアントの使用率を測定するための期間を設定します。 値に次の文字を付ける事で、s:秒、m:分、h:時間、d:日、w:週単位で指定できます。 |
smtpd_client_connection_rate_limit | anvil_rate_time_unitで指定した期間に同じ接続元からの接続回数を指定します。 デフォルト(未設定時)は0(無制限)になっています。 |
smtpd_client_recipient_rate_limit | anvil_rate_time_unitで指定した期間に同じ接続元から送信可能な宛先数を指定します。 デフォルト(未設定時)は0(無制限)になっています。 |
smtpd_client_message_rate_limit | anvil_rate_time_unitで指定した期間に同じ接続元から送信可能なメール数を指定します。 デフォルト(未設定時)は0(無制限)になっています。 |
smtpd_client_event_limit_exceptions | 上記で設定した制限の除外対象となるアドレスを指定します。 デフォルト(未設定時)は$mynetworksになっています。 |
設定が完了した後はPostfixを起動 or 再起動します。
# service postfix restart
起動に失敗した場合は「/var/log/maillog」を確認します。
# vi /var/log/maillog
内容を確認して原因を探ります。
ファイアーウォールの設定
SMTPはTCP 25番ポートを使います。ファイアウォールの設定を行います。
変更するファイルは「/etc/sysconfig/iptables」です。
# Firewall configuration written by system-config-firewall # Manual customization of this file is not recommended. *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
設定が完了した後はiptablesの再起動を行います。
# service iptables restart
動作確認
メール受け取りユーザーの作成
メールを受け取るユーザーを作成します。「user_name@cross-ring.org」というメールアドレスを作ろうとすると「user_name」というユーザーを作成する必要があります。
# useradd -s /sbin/nologin user_name # passwd user_name Changing password for user user_name. New password: <パスワード入力> Retype new password: <パスワード入力> passwd: all authentication tokens updated successfully.
ローカルからのメール送信
メール送信テストを行います。
# yum install mail ・・・・・・ (7) ・・・(略)・・・ # mail user_name@cross-ring.org ・・・・・・ (8) Subject: Test mail I write the contents of the e-mail here. . EOT # cat /home/user_name/mailbox/new/* ・・・・・・ (9) Return-Path: <root@cross-ring.org> X-Original-To: user_name@cross-ring.org Delivered-To: user_name@cross-ring.org Received: by cross-ring.net (Postfix, from userid 0) id ~~~ Date: ~~~ To: user_name@cross-ring.org Subject: Test mail User-Agent: Heirloom mailx 12.4 7/29/08 MIME-Version: 1.0 Content-Type: text/plain: charset=us-ascii Content-Transfer-Encoding: 7bit Message-Id: <~~~@cross-ring.org> From: root@cross-ring.org (root) I write the contents of the e-mail here.
(7) mailコマンドが実行できなければインストールを行います。
(8) mailを送ります。応答形式でメールの内容を入力できるので適当に入力を行います。
内容部分の終わりは’.’だけを入力してEnterキーで終了になります。
(9) 届いたメールの確認を行っています。
ただ、現状は誰でもメールを送れてしまうので次回、認証設定を行います。
トラックバック & ピンバック