>> HOME >> FC5 MENU >> SMTPサーバー (Postfix)
メールサーバーは、送信(SMTP)メールサーバーと受信(POP/IMAP)メールサーバーで構成されます。
ここでは、送信メールサーバーには Postfix、受信メールサーバーには Dovecot を採用します。
なお、Postfix は、迷惑メールの不正中継防止に対応させるため、SMTP-AUTH 機能(送信認証機能)をもたせます。
また、受信(POP/IMAP)メールサーバーの導入には、『POP/IMAP サーバー (Dovecot)』を参照してください。
メールアカウントの作成とクライアントの設定は、『メールアカウントの作成 & クライアントの設定』を参照してください。

1. Postfix インストール
2. Postfix 設定
1 ) Postfix 設定ファイル /etc/postfix/main.cf の編集
2 ) Postfix 設定ファイル /etc/postfix/header_checks の編集
3. メールボックスの設定
1 ) 新規ユーザーを作成した場合、メールボックス(Maildir)を自動的に作成する様にする
2 ) 既存ユーザーのメールボックス(Maildir)の作成 (例:fedoraユーザーの場合)
4. SMTP-AUTH の設定・起動
1 ) アカウント(ユーザー)のパスワードとSMTP-AUTHパスワードを別にする場合の設定
2 ) SMTP-AUTH (saslauthd) の起動
3 ) SMTP-AUTH (saslauthd) の自動起動設定
5. Postfix の起動と自動起動設定
1 ) sendmail アンインストール
2 ) Postfix の起動
3 ) Postfix の自動起動設定
6. メール不正中継拒否テスト
7. 公開前の準備
1. Postfix インストール
[root@linux ~]# yum -y install postfix 
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core                                                                 [1/3]
core                      100% |=========================| 1.1 kB    00:00
updates                                                              [2/3]
updates                   100% |=========================|  951 B    00:00
extras                                                               [3/3]
extras                    100% |=========================| 1.1 kB    00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for postfix to pack into transaction set.
postfix-2.2.8-1.2.i386.rp 100% |=========================|  44 kB    00:00
---> Package postfix.i386 2:2.2.8-1.2 set to be updated
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Installing:
 postfix                 i386       2:2.2.8-1.2      core              3.4 M

Transaction Summary
=============================================================================
Install      1 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 3.4 M
Downloading Packages:
(1/1): postfix-2.2.8-1.2. 100% |=========================| 3.4 MB    00:12
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing: postfix                      ######################### [1/1]

Installed: postfix.i386 2:2.2.8-1.2
Complete!
2. Postfix 設定
1 ) Postfix 設定ファイル /etc/postfix/main.cf の編集
[root@linux ~]# vi /etc/postfix/main.cf 

  :
  :
# INTERNET HOST AND DOMAIN NAMES
# 
# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many
# other configuration parameters.
#
# ホスト名を設定する(ホスト名.ドメイン名)
myhostname = linux.mountainbigroad.jp

# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component.
# $mydomain is used as a default value for many other configuration
# parameters.
#
# ドメイン名を設定する
mydomain = mountainbigroad.jp

# SENDING MAIL
#
# The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname,
# which is fine for small sites.  If you run a domain with multiple
# machines, you should (1) change this to $mydomain and (2) set up
# a domain-wide alias database that aliases each user to
# user@that.users.mailhost.
#
# For the sake of consistency between sender and recipient addresses,
# myorigin also specifies the default domain name that is appended
# to recipient addresses that have no @domain part.
#
# 送信者メールアドレスの@以降をドメイン名にする
myorigin = $mydomain

# The inet_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on.  By default,
# the software claims all active interfaces on the machine. The
# parameter also controls delivery of mail to user@[ip.address].
#
# See also the proxy_interfaces parameter, for network addresses that
# are forwarded to us via a proxy or network address translator.
#
# Note: you need to stop/start Postfix when this parameter changes.
#
# Postfix が待ち受けるべき全てのネットワークインターフェースを指定
inet_interfaces = all
  :
  :

# See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
#
# メールをローカルで受信するドメイン名を指定(ドメイン全体のメールサーバ)
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
  :
  :
# Alternatively, you can specify the mynetworks list by hand, in
# which case Postfix ignores the mynetworks_style setting.
#
# Specify an explicit list of network/netmask patterns, where the
# mask specifies the number of bits in the network part of a host
# address.
#
# You can also specify the absolute pathname of a pattern file instead
# of listing the patterns here. Specify type:table for table-based lookups
# (the value on the table right-hand side is not used).
#
# 信頼されたネットワークをCIDR (network/mask) 表記で指定(ローカルネットワーク)
mynetworks = 192.168.1.0/24, 127.0.0.0/8

# The relay_domains parameter restricts what destinations this system will
# relay mail to.  See the smtpd_recipient_restrictions restriction in the
# file sample-smtpd.cf for detailed information.
  :
  :
# NOTE: Postfix will not automatically forward mail for domains that
# list this system as their primary or backup MX host. See the
# permit_mx_backup restriction in the file sample-smtpd.cf.
#
# 中継を許可するドメインを指定
relay_domains = $mydestination

# INTERNET OR INTRANET

# The relayhost parameter specifies the default host to send mail to
# when no entry is matched in the optional transport(5) table. When
# no relayhost is given, mail is routed directly to the destination.
#
# On an intranet, specify the organizational domain name. If your
# internal DNS uses no MX records, specify the name of the intranet
# gateway host instead.
#
# In the case of SMTP, specify a domain, host, host:port, [host]:port,
# [address] or [address]:port; the form [host] turns off MX lookups.
#
# If you're connected via UUCP, see also the default_transport parameter.
#
#relayhost = $mydomain
#relayhost = [gateway.my.domain]
#relayhost = [mailserver.isp.tld]
#relayhost = uucphost
#relayhost = [an.ip.add.ress]
# ISPのメールサーバを中継する(Outbound Port25 Block 対策)
relayhost = [smtp.hoge.ne.jp]
  :
  :
# DELIVERY TO MAILBOX
#
# The home_mailbox parameter specifies the optional pathname of a
# mailbox file relative to a user's home directory. The default
# mailbox file is /var/spool/mail/user or /var/mail/user.  Specify
# "Maildir/" for qmail-style delivery (the / is required).
#
# メールボックス(Maildir)を各ユーザーのホームディレクトリに配置
home_mailbox = Maildir/
  :
  :
# JUNK MAIL CONTROLS
#
# The controls listed here are only a very small subset. The file
# SMTPD_ACCESS_README provides an overview.

# The header_checks parameter specifies an optional table with patterns
# that each logical message header is matched against, including
# headers that span multiple physical lines.
#
# By default, these patterns also apply to MIME headers and to the
# headers of attached messages. With older Postfix versions, MIME and
# attached message headers were treated as body text.
#
# For details, see "man header_checks".#
# メールヘッダーから、Receivedから始まる行を削除
# コメントを外す
header_checks = regexp:/etc/postfix/header_checks

  :
  :
# SHOW SOFTWARE VERSION OR NOT
#
# The smtpd_banner parameter specifies the text that follows the 220
# code in the SMTP server's greeting banner. Some people like to see
# the mail version advertised. By default, Postfix shows no version.
#
# You MUST specify $myhostname at the start of the text. That is an
# RFC requirement. Postfix itself does not care.
#
#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
# 追加(メールサーバーソフト名の隠蔽化)
smtpd_banner = $myhostname ESMTP unknown

  :
  :
# ホストの接続に関しての拒否(SPAM拒否設定)
smtpd_client_restrictions = permit_mynetworks,
                            reject_rbl_client relays.ordb.org,
                            permit

# SMTP-AUTH設定
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

# 1度の送信で10人までしか送信できなくする(SPAM踏み台対策)
smtpd_recipient_limit = 10

# メールボックス容量を制限する(例:1Gbyte)
mailbox_size_limit = 1073741824
# 1メール容量を制限する(例:10Mbyte)
message_size_limit = 10485760
2 ) Postfix 設定ファイル /etc/postfix/header_checks の編集
※ 全ての「Received」ヘッダが隠蔽される訳ではありません。ローカル情報の「Received」ヘッダに適用されます。
[root@linux ~]# vi /etc/postfix/header_checks 

# 最終行に追加
# Receivedから始まる行を削除する
/^Received:/ IGNORE
3. メールボックスの設定
1 ) 新規ユーザーを作成した場合、メールボックス(Maildir)を自動的に作成する様にする
[root@linux ~]# mkdir /etc/skel/Maildir 
[root@linux ~]# chmod 700 /etc/skel/Maildir 
2 ) 既存ユーザーのメールボックス(Maildir)の作成 (例:fedoraユーザーの場合)
[root@linux ~]# mkdir /home/fedora/Maildir 
[root@linux ~]# chmod 700 /etc/skel/Maildir 
[root@linux ~]# chown fedora:fedora /home/fedora/Maildir 
4. SMTP-AUTH の設定・起動
1 ) アカウント(ユーザー)のパスワードとSMTP-AUTHパスワードを別にする場合の設定
[root@linux ~]# vi /usr/lib/sasl2/smtpd.conf 

pwcheck_method: auxprop
2 ) SMTP-AUTH (saslauthd) の起動
[root@linux ~]# service saslauthd start 
saslauthd を起動中:                                        [  OK  ]
3 ) SMTP-AUTH (saslauthd) の自動起動設定
[root@linux ~]# chkconfig saslauthd on 
[root@linux ~]# chkconfig --list saslauthd 
saslauthd       0:off   1:off   2:on    3:on    4:on    5:on    6:off
5. Postfix の起動と自動起動設定
1 ) sendmail アンインストール
デフォルトで起動しているSMTPサーバーであるsendmailをアンインストールします。
※ postfixは sendmailと互換性があるため、sendmailを削除しても sendmailコマンドは使用できます。
[root@linux ~]# service sendmail stop 
sendmailを停止中:                                          [  OK  ]
sm-clientを停止中:                                         [  OK  ]

[root@linux ~]# yum -y remove sendmail 
Loading "installonlyn" plugin
Setting up Remove Process
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Package sendmail.i386 0:8.13.6-0.FC5.1 set to be erased
--> Running transaction check

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Removing:
 sendmail                i386       8.13.6-0.FC5.1   installed         1.3 M

Transaction Summary
=============================================================================
Install      0 Package(s)
Update       0 Package(s)
Remove       1 Package(s)
Downloading Packages:
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Removing  : sendmail                     ######################### [1/1]

Removed: sendmail.i386 0:8.13.6-0.FC5.1
Complete!
2 ) Postfix の起動
[root@linux ~]# service postfix start 
postfix を起動中:                                          [  OK  ]
3 ) Postfix の自動起動設定
[root@linux ~]# chkconfig postfix on 
[root@linux ~]# chkconfig --list postfix 
postfix         0:off   1:off   2:on    3:on    4:on    5:on    6:off
6. メール不正中継拒否テスト
http://www.abuse.net/relay.html にブラウザから接続し、自DNS名を入力して実施します。
19種類の試験が実施され、最後に「All tests performed, no relays accepted.」と出力されれば正常(不正中継拒否)です。
7. 公開前の準備
外部から接続するには、ルータの設定で ポート番号25番(SMTP Simple Mail Transfer Protocol) を開けてください。また、外部よりDNS名でアクセスするには、ドメイン名の取得を行っている必要があります。