広告

検索

RSS RSSフィード

カレンダー

2009年4月
« 3月   5月 »
 12345
6789101112
13141516171819
20212223242526
27282930  

カテゴリー

最新のコメント

リンク

自宅サーバー再構築 その20 CentOS 5.3 メールサーバー構築(Postfix設定編)

投稿者:yasu 更新日時:2009年4月17日 22時51分00秒
カテゴリCentOS, dovecot, Linux, postfix, 自宅サーバー

今回から複数回に渡ってメールサーバーを構築したいと思います。
今回はPostfix(SMTP)とDovecot(POP3/IMAP)のインストールとPostfix(SMTP)の設定を行います。
またPostfix(SMTP)は不正中継されないようCyrusSASLを使ってメール送信時にユーザ名とパスワードで認証が必要なSMTP-Auth機能を導入します。

Postfix、Dovecotインストール

ログイン後、rootユーザにスイッチします
[centos@centos ~]$ su -
パスワード: rootユーザーのパスワード

Postfix(SMTP)とDovecot(POP3/IMAP)をインストールします
[root@centos ~]# yum -y install postfix dovecot
Loaded plugins: fastestmirror, priorities
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* updates: rsync.atworks.co.jp
* addons: www.ftp.ne.jp
* extras: www.ftp.ne.jp
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package dovecot.i386 x:x.x.x-x.xxx set to be updated
---> Package postfix.i386 x:x.x.x-x.x.xxx_x set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================================
Package Arch Version Repository Size
====================================================================================================================================================
Installing:
dovecot i386 x.x.x-x.xxx base 1.6 M
postfix i386 x:x.x.x-x.x.xxx_x base 3.6 M

Transaction Summary
====================================================================================================================================================
Install 2 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 5.2 M
Downloading Packages:
(1/2): dovecot-x.x.x-x.xxx.i386.rpm | 1.6 MB 00:00
(2/2): postfix-x.x.x-x.x.xxx_x.i386.rpm | 3.6 MB 00:00
----------------------------------------------------------------------------------------------------------------------------------------------------
Total 4.8 MB/s | 5.2 MB 00:01
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : dovecot [1/2]
Installing : postfix [2/2]

Installed: dovecot.i386 x:x.x.x-x.xxx postfix.i386 x:x.x.x-x.x.xxx_x
Complete!

Postfix(SMTP)設定

Postfix(SMTP)の設定ファイルを変更します
※設定ファイルの設定時参考サイト:Postfix設定パラメータ

[root@centos ~]# vi /etc/postfix/main.cf
viエディタが起動するので修正します

# 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 = host.domain.tld
#myhostname = virtual.domain.tld
FQDN名を入力します
myhostname = mail.sa-sa-ki.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 = domain.tld
ドメイン名を入力します
mydomain = sa-sa-ki.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 = $myhostname
#myorigin = $mydomain
送信者メールアドレスの@以降をドメイン名にする
myorigin = $mydomain

# RECEIVING MAIL

# 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.
#
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
外部からのメール受信を許可します
#inet_interfaces = localhost
inet_interfaces = all

# The mydestination parameter specifies the list of domains that this
# machine considers itself the final destination for.
#
# These domains are routed to the delivery agent specified with the
# local_transport parameter setting. By default, that is the UNIX
# compatible delivery agent that lookups all recipients in /etc/passwd
# and /etc/aliases or their equivalent.
#
# The default is $myhostname + localhost.$mydomain. On a mail domain
# gateway, you should also include $mydomain.
#
# Do not specify the names of virtual domains - those domains are
# specified elsewhere (see VIRTUAL_README).
#
# Do not specify the names of domains that this machine is backup MX
# host for. Specify those names via the relay_domains settings for
# the SMTP server, or use permit_mx_backup if you are lazy (see
# STANDARD_CONFIGURATION_README).
#
# The local machine is always the final destination for mail addressed
# to user@[the.net.work.address] of an interface that the mail system
# receives mail on (see the inet_interfaces parameter).
#
# Specify a list of host or domain names, /file/name or type:table
# patterns, separated by commas and/or whitespace. A /file/name
# pattern is replaced by its contents; a type:table is matched when
# a name matches a lookup key (the right-hand side is ignored).
# Continue long lines by starting the next line with whitespace.
#
# See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
#
自分のドメイン宛メールを受信できるように設定します
#mydestination = $myhostname, localhost.$mydomain, localhost
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
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).
#
ローカルホストとローカルネットワークを設定します
#mynetworks = 168.100.189.0/28, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
mynetworks = 192.168.0.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 description in
# postconf(5) for detailed information.
#
# By default, Postfix relays mail
# - from "trusted" clients (IP address matches $mynetworks) to any destination,
# - from "untrusted" clients to destinations that match $relay_domains or
# subdomains thereof, except addresses with sender-specified routing.
# The default relay_domains value is $mydestination.
#
# In addition to the above, the Postfix SMTP server by default accepts mail
# that Postfix is final destination for:
# - destinations that match $inet_interfaces or $proxy_interfaces,
# - destinations that match $mydestination
# - destinations that match $virtual_alias_domains,
# - destinations that match $virtual_mailbox_domains.
# These destinations do not need to be listed in $relay_domains.
#
# Specify a list of hosts or domains, /file/name patterns or type:name
# lookup tables, separated by commas and/or whitespace. Continue
# long lines by starting the next line with whitespace. A file name
# is replaced by its contents; a type:name table is matched when a
# (parent) domain appears as lookup key.
#
# 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 description in postconf(5).
#
#relay_domains = $mydestination
中継するドメインを指定します
relay_domains = $mydestination

# 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).
#
#home_mailbox = Mailbox
#home_mailbox = Maildir/
Postfixの受信メールの管理方法として複数のメールを1ファイルで管理するMailboxと1つのメール1ファイルで管理するMaildirがあるのですが、ここでは仮にメールファイルが破損した場合に影響の少ないMaildir形式に変更します
home_mailbox = Maildir/

# 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)
Postfixのバージョン情報を隠蔽します
smtpd_banner = $myhostname ESMTP unknown

メールアカウントが存在か確認する為のSMTPのVRFYコマンド無効にします
disable_vrfy_command = yes

SMTP-Auth(ユーザとパスワードによる認証)を有効にします
smtpd_sasl_auth_enable = yes

SMTP-Authの認証制限を設定します
匿名ログイン(noanonymous)と平文パスワード認証(noplaintext)を不許可にします

smtpd_sasl_security_options = noanonymous, noplaintext

ドメイン名を指定します
※SMTP-Authのパスワード登録コマンド実行時に必要なパラメタがここで指定したドメイン名と一致している必要があります

smtpd_sasl_local_domain = $mydomain

ここからは不正中継防止の設定になります
SMTP接続の要求を行うクライアントのホスト名/IPアドレス制限を行います
 permit_mynetworks:
  クライアントのIPアドレスが$mynetworksにリストアップされている場合
  要求を許可します
 reject_rhsbl_client:
  クライアントのホスト名が指定したドメインにリストアップされている場合
  要求を拒否します
 reject_rbl_client:
  クライアントのIPアドレスが指定したドメインにリストアップされている場合
  要求を拒否します
 reject_unknown_client:
  クライアントのIPアドレスがDNSサーバーで名前解決できない場合
  要求を拒否します
 check_client_access:
  指定したファイルに記載されているクライアントのホスト名、IPアドレス、
  ドメイン名を個別に拒否します
 permit:
  要求を許可します

smtpd_client_restrictions = permit_mynetworks,
               reject_rhsbl_client rhsbl.ahbl.org,
               reject_rbl_client spamcop.net,
               reject_rbl_client dynablock.wirehub.net,
               reject_rbl_client sbl.spamhaus.org,
               check_client_access hash:/etc/postfix/access,
               permit

受信者アドレスの制限を行います
 permit_mynetworks:
  クライアントのIPアドレスが$mynetworksにリストアップされている場合
  要求を許可します
 permit_sasl_authenticated:
  クライアントSMTP-Auth認証に成功した場合に要求を許可します
 reject_unauth_destination:
  メールを転送する場合は送信先メールアドレスが $relay_domains または
  そのサブドメインにマッチし、送信者指定のルーティング (user@elsewhere@domain)
  を含まない場合、またはPostfixが最終配送先の場合は送信先メールアドレスが
  $mydestination や$inet_interfaces、$proxy_interfaces、$virtual_alias_domains、
  $virtual_mailbox_domains にマッチし、送信者指定の
  ルーティング (user@elsewhere@domain) を含まない場合に
  要求を拒否します

smtpd_recipient_restrictions = permit_mynetworks,
                 permit_sasl_authenticated,
                 reject_unauth_destination

送信者アドレスの制限を行います
 reject_unknown_sender_domain:
  Postfixが送信者アドレスの最終配送先ではなく、
  かつMAIL FROMアドレスにDNS AもしくはMXレコードがない場合、
  または長さがゼロのMXホスト名を持つような
  不正なMXレコードを持つ場合に要求を拒否します
 reject_non_fqdn_sender:
  送信元メールアドレスが FQDN 形式でない場合に要求を拒否します
 check_sender_access:
  指定したファイルに記載されているクライアントのホスト名、IPアドレス、
  ドメイン名を個別に拒否します

smtpd_sender_restrictions = reject_unknown_sender_domain,
               reject_non_fqdn_sender,
               check_sender_access hash:/etc/postfix/reject_sender

内容を保存しviエディタを終了します

SMTP-Auth パスワード設定

設定ファイルを変更します
[root@centos ~]# vi /usr/lib/sasl2/smtpd.conf
viエディタが起動するので修正します
pwcheck_method: auxprop saslauthd(Linuxユーザ認証)からauxprop(SASLユーザ認証)に変更します
~
内容を保存しviエディタを終了します

centosユーザにSMTP-Authパスワードを設定します
Linuxユーザ認証のパスワードと違うパスワードを設定するとセキュリティが向上します

※-uで指定する名前(ここではsa-sa-ki.jp)はPostfix(SMTP)の設定ファイルで指定したsmtpd_sasl_local_domainのドメイン名と一致している必要があります
[root@centos ~]# saslpasswd2 -u sa-sa-ki.jp -c centos
Password: 登録したいパスワードを入力します
Again (for verification): もう一度登録したいパスワードを入力します

centosユーザにSMTP-Authパスワードが設定されたか確認します
[root@centos ~]# sasldblistusers2
centos@sa-sa-ki.jp: userPassword

※centosユーザのSMTP-Authパスワードを削除するには・・・
[root@centos ~]# saslpasswd2 -d centos -u sa-sa-ki.jp

SMTP-Authのパスワードは/etc/sasldb2ファイルに管理されるのですが、postfixグループがそのファイルを読めるように所有グループを変更します
[root@centos ~]# chgrp postfix /etc/sasldb2
[root@centos ~]# ls -l /etc/sasldb2
-rw-r----- 1 root postfix 12288 4月 3 09:49 /etc/sasldb2

メールボックスの設定

新規ユーザ作成時にメールボックスを自動作成するよう設定します
[root@centos ~]# mkdir -p /etc/skel/Maildir/{new,cur,tmp}
[root@centos ~]# chmod -R 700 /etc/skel/Maildir

既存ユーザにメールボックスを作成します
SSHのRSAプロトコルを設定したユーザだと受信メールサーバーがうまく認証できず、メール受信ができませんでした。SSHのRSAプロトコルを設定していないユーザで設定をしてください
[root@centos ~]# mkdir -p /home/centos/Maildir/{new,cur,tmp}
[root@centos ~]# chmod -R 700 /home/centos/Maildir
[root@centos ~]# chown centos.centos /home/centos/Maildir

※新規ユーザを作成するには・・・
[root@centos ~]# useradd -s /bin/nologin test

※ホームディレクトリを削除しつつユーザを削除するには・・・
[root@centos ~]# userdel -r test

次回はDovecot(POP3/IMAP)の設定を行います。

■ 参考サイト ■
はじめての自宅サーバ構築 Fedora/CentOS - メールサーバ(SMTP)の構築(Postfix)
メールサーバー構築(Postfix+Dovecot) - CentOSで自宅サーバー構築
Postfix設定パラメータ
Postfixでspamメール送信元・送信者による制限の巻 - PukiWiki
access - Postfix アクセステーブルの書式
Postfix SASL Howto

■関連記事
自宅サーバー再構築 その1 導入を検討する
自宅サーバー再構築 その2 CentOS 5.2 をインストールする
自宅サーバー再構築 その3 インストールしたCentOS 5.2 にリモート接続準備
自宅サーバー再構築 その4 CentOS 5.2 インストール後の初期設定
自宅サーバー再構築 その5 CentOS 5.2 ファイル転送準備
自宅サーバー再構築 その6 CentOS 5.2 にアンチウィルスソフトを導入する
自宅サーバー再構築 その7 CentOS 5.2 にファイル改竄検知システムを導入する
自宅サーバー再構築 その8 CentOS 5.2 にrootkit検知ツールを導入する
自宅サーバー再構築 その9 CentOS 5.2 にバッファオーバーフロー攻撃対策を行う
自宅サーバー再構築 その10 CentOS 5.2 SSHサーバーを構築して外部からリモート接続&リモートファイル転送
自宅サーバー再構築 その11 CentOS 5.2 にDNSサーバーを導入して名前解決(設定編)
自宅サーバー再構築 その12 CentOS 5.2 にDNSサーバーを導入して名前解決(確認編)
自宅サーバー再構築 その13 CentOS 5.2 にLAMP環境構築(Apache、PHP編)
自宅サーバー再構築 その14 CentOS 5.2 にLAMP環境構築(MySQL編)
自宅サーバー再構築 その15 Apacheにサーバー証明書を導入する
自宅サーバー再構築 その16 CentOS 5.2 にWordPressを導入してブログサイトを構築する
自宅サーバー再構築 その17 WordPressのセキュリティ対策
自宅サーバー再構築 その18 CentOS 5.3 にNTPサーバーを導入して自動時間合わせ
自宅サーバー再構築 その19 CentOS 5.3 アンチウィルスソフトのバージョンアップ
自宅サーバー再構築 その20 CentOS 5.3 メールサーバー構築(Postfix設定編)
自宅サーバー再構築 その21 CentOS 5.3 メールサーバー構築(Dovecot設定編)
自宅サーバー再構築 その22 CentOS 5.3 メールサーバー構築(公開編)
自宅サーバー再構築 その23 CentOS 5.3 メールサーバー構築(SSL導入編)
自宅サーバー再構築 その24 CentOS 5.3 メールサーバー構築(メールアカウント作成編)
自宅サーバー再構築 その25 CentOS 5.3 メールサーバー構築(Thunderbird設定編)
自宅サーバー再構築 番外編その1 CentOS 5.3 のリリースと導入済みソフトウェアのアップデート


“自宅サーバー再構築 その20 CentOS 5.3 メールサーバー構築(Postfix設定編)”にコメントはありません

コメントする