Debian GNU/Linux 7.1.0 サーバに SMTP サーバ Postfix を構築する方法についての記録です。

SMTP サーバは Simple Mail Transfer Protocol の略で、現在最も普及している電子メール送信プロトコルに対応したサーバのことです。

以前古いバージョンでの作業時に残していた記録を参考に作業を行い、今回更新した作業記録を貼付する形式の内容となっています。

0. 前提条件

  • Debian GNU/Linux 7.1.0 での作業を想定。
  • 接続元のマシンは Linux Mint 14(64bit) を想定。
  • 接続可能なマシンのネットワークは 192.168.11.0/24 を想定。
  • ドメイン名は mk-mode.com、サーバホスト名は mail を想定。

1. Postfix インストール

SMTP サーバ Postfix を以下のようにしてインストールする。
途中でどの設定を選択するか確認されますが、後で設定を行うので “設定なし” を選択する。

1
# aptitude -y install postfix sasl2-bin

2. 設定ファイル編集

設定ファイル “main.cf” を所定のディレクトリへ移動後、編集する。

1
# cp /usr/lib/postfix/main.cf /etc/postfix/main.cf

File: /etc/postfix/main.cf

 1 mail_owner = postfix                   # <= メール所有者
 2 
 3 myhostname = mail.mk-mode.com          # <= ホスト名
 4 
 5 mydomain = mk-mode.com                 # <= ドメイン名
 6 
 7 myorigin = $mydomain                   # <= ローカルからのメール送信時の送信元メールアドレス@以降にドメイン名を付加
 8 
 9 inet_interfaces = all                  # <= 外部からのメール受信を許可
10 
11 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain  # <= 自ドメイン宛メールを受信できるようにする
12 
13 local_recipient_maps = unix:passwd.byname $alias_maps  # <= サーバにアカウントがあれば、その人宛に届く
14 
15 mynetworks = 127.0.0.0/8, 192.168.11.0/24  # <= 自ネットワーク
16 
17 alias_maps = hash:/etc/aliases         # <= 受信メールの再転送先ファイル
18 
19 alias_database = hash:/etc/aliases     # <= newaliasesコマンドの実行対象
20 
21 home_mailbox = Maildir/                # <= メールボックス形式を Maildir 形式に
22 
23 #smtpd_banner = $myhostname ESMTP $mail_name (@@DISTRO@@)
24 smtpd_banner = $myhostname ESMTP       # <= メールサーバーソフト名の隠蔽化
25 
26 sendmail_path = /usr/sbin/postfix      # <= Postfix sendmail コマンドの場所
27 
28 newaliases_path = /usr/bin/newaliases  # <= Postfix newaliases コマンドの場所
29 
30 mailq_path = /usr/bin/mailq            # <= Postfix mailq コマンドの場所
31 
32 setgid_group = postdrop                # <= set-gid Postfix コマンドおよびグループ書き込み可能な Postfix ディレクトリを所有するグループ
33 
34 #html_directory =                      # <= コメント化
35 
36 #manpage_directory =                   # <= コメント化
37 
38 #sample_directory =                    # <= コメント化
39 
40 #readme_directory =                    # <= コメント化
41 
42 # 最終行へ追加
43 message_size_limit = 10485760          # <= 送受信メールサイズを10Mに制限
44 mailbox_size_limit = 1073741824        # <= メールボックスサイズを1Gに制限
45 
46 # SMTP-Auth用
47 smtpd_sasl_type = dovecot
48 smtpd_sasl_path = private/auth
49 smtpd_sasl_auth_enable = yes
50 smtpd_sasl_security_options = noanonymous
51 smtpd_sasl_local_domain = $myhostname
52 smtpd_client_restrictions = permit_mynetworks,reject_unknown_client,permit
53 smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject

3. Postfix 再起動

設定を反映させるためにエイリアスの変更を反映させ、 Postfix を再起動する。

1
2
3
4
# newaliases
# /etc/init.d/postfix restart
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.

4. ファイアウォール(iptables)設定

実際に運用する場合は、ポートを開放する必要がある。

File: /etc/iptables/rules.v4

1 # 外部からのTCP25番ポート(SMTP)へのアクセスを許可
2 -A INPUT -p tcp --dport 25 -j ACCEPT

そして、設定を反映させるために iptables-persistent を再起動する。

1
2
# /etc/init.d/iptables-persistent restart
Loading iptables rules... IPv4... skipping IPv6 (no rules to load)...done.

5. メール転送設定

root や postmaster 等宛に届いたメールを一般ユーザに転送するには “/etc/aliases” を編集する。
以下は一例。(最初から postomaster を root に転送するようになっているかも知れない。root を一般ユーザに転送するようにしている)

File: /etc/aliases

1 # See man 5 aliases for format
2 postmaster: root
3 root:       masaru

この設定を有効にするために以下のようにする。

File: /etc/aliases

1 # newaliases                   # <= エイリアスの即時反映
2 # /etc/init.d/postfix restart  # <= Postfix の再起動

“/etc/postfix/main.cf” 内で説明されているとおり、 newaliases の代わりに postalias /etc/aliases でもよい。

6. root 宛メールの転送

システムから root 宛に届くメールを一般ユーザに転送するよう “/etc/aliases” を編集する。 (サーバ上の一般ユーザではなく別のメールアドレスに転送したければ、そのままメールアドレスを指定すればよい)

File: /etc/aliases

1 root: masaru

“/etc/aliases” を編集したら以下を実行して反映させる。

1
# newaliases

以上。