rurihabachi
Last update: 2013/11/25  
    仮 想 マ シ ン で Fedora サ ー バ       ◇◇◇  お金をかけずに簡単簡潔  ◇◇◇  サーバ構築公開手順 覚書き  ◇◇◇
 
 
サーバ構築メニュー  
     1. はじめに
     2. 構築前の準備
     3. サーバの役割り
  » 4. サーバの計画
  » 5. 仮想マシンの準備
  » 6. Fedoraの準備
  » 7. サーバの基本設定
  » 8. ファイアウォール
  » 9. ウェブサーバ
  » 10. Apache Wicket
  « 11. メールサーバ
       postfix
       dovecotとwebmail
       iptablesの設定
  » 12. セキュリティ
     13. サーバの公開


  サーバ構築Top  > 11.メールサーバの構築  > (1)メール送信サーバの設定(postfix)
    11. メールサーバの構築
    (1) メール送信サーバの設定(SMTPサーバ/postfix)

メールサーバを実際に構築する前に、はじめに少しだけ、メールサーバの仕組みについて簡単に整理しておくと、メールサーバには下記のような種類があります。 複数の種類のメールサーバが連携してメール送受信の機能を請負います。

  SMTPサーバ メールサーバ間のメールの送受信および中継を行います(一般的に、メール送信サーバ、またはMTAなどと呼ばれます)
代表的なものに、Sendmail, Postfix, Exchange Serverなどがあります
  POPサーバ クライアントPCがメールサーバに保存されたメールを受信するためのサーバです(一般的に、メール受信サーバなどと呼ばれます)
  IMAPサーバ クライアントPCがメールサーバに保存されたメールを閲覧するためのサーバです

本章では、SMTPサーバとしてpostfixを、POPサーバおよびIMAPサーバとしてdovecotを使用してメールサーバを構築していきます。 また、webメール機能も利用できるようにするために、webメール用ソフトのひとつ、SquirrelMailのインストールも行います。 以下、全て1台の仮想サーバ上に設定していきます。

 ◇     ◇     ◇

まずこのページでは、SMTPサーバのpostfixをインストールします。 postfixはオープンソースのフリーソフトウェアで、比較的簡潔に設定できるメール送信サーバとして人気があるようです。

SMTPサーバは上記のように、メールサーバ間のメールの送受信、およびメールの転送(中継)を行います。 注意点として、このサーバは設定次第では、受信したメールをメールの宛先アドレスへ無条件に転送してしまうということがあります。 例えば、スパムメールの送信者が大量のメールを送信する時に、無関係な他所のメールサーバを利用して送信するなど(つまりスパムメールの踏み台にするなど)ということが、メールサーバの運用状況によっては可能になってしまいます。

そのため、以下では、postfixが身元のわからないクライアントからのメールを転送しないように、加えて、認証できないユーザには一切のメールサーバ機能を利用させないように、できるかぎり安全性を高めた設定を行うことを目標に設定を行います。 このページ内の設定は、必ず最後まで責任を持って行うことが必要になります。

 ◇     ◇     ◇

postfixをインストールするには、rootユーザでログインしたあと、下記のようなコマンドを打ちます。

[root@testserver ~]# yum install postfix

確認を求められたら"y"を入力します。

インストールが終わりましたら、postfixの設定ファイル/etc/postfix/main.cfを開いて編集します。

[root@testserver ~]# vi /etc/postfix/main.cf

下記の各行を環境に合わせて書き換えます。

  myhostname = testserver.testdomain.test            ・・・メールサーバのホスト名を指定
  mydomain = testdomain.test                        ・・・ドメイン名を指定
  myorigin = $mydomain
  inet_interfaces = all
  inet_protocols = all                ・・・*IPv6を無効にしている場合は inet_protocols = ipv4 とする
  mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
  mynetworks = 172.16.10.0/27, 127.0.0.0/8            ・・・ローカルのサブネットを指定
  home_mailbox = Maildir/
  smtpd_banner = $myhostname ESMTP          ・・・メールソフト名とバージョンは非表示にする

また、以下の各行を追加します。

  notify_classes = resource,software,policy            ・・・不正中継防止
  allow_percent_hack = yes                        ・・・不正中継防止
  swap_bangpath = yes                        ・・・不正中継防止
  disable_vrfy_command = yes                ・・・アドレス流出防止

main.cfを保存して閉じます。

続いて、postfixをデフォルトの送信メールサーバに設定します。

[root@testserver ~]# service sendmail stop
[root@testserver ~]# chkconfig sendmail off
[root@testserver ~]# alternatives --config mta
                                      → 選択番号としてpostfixの"2"を入力後、エンターキー押下
[root@testserver ~]# service postfix start
[root@testserver ~]# chkconfig postfix on

これでpostfixがデフォルトのメールサーバとして働くことになります。

ここまででpostfixの基本設定は終わりになりますが、安全性を高めるため、引き続き、メール送信時にユーザ認証が行えるように設定していきます。

メール送信時のユーザ認証にはSMTP AUTHという技術を使います。 SMTPサーバには元々ユーザ認証機能がありません。 そのため、メール送信時のユーザ認証には、従来、POP before SMTP(送信前にPOPサーバで認証を行う)などの方法が利用されてきました。

これに対してSMTP AUTH方式では、ユーザの使用するメーラと連携してメール送信前のパスワード認証を行います。 そのため、ユーザの使用するメーラがSMTP AUTHに対応している必要がありますが、最近では多くのメーラが対応しているため、ここではこちらの方式を利用することにします。

まずは、SMTP AUTHの設定をpostfixの設定ファイル main.cf に追記します。 /etc/postfix/main.cfを開いて下記の各行を追加します。

  smtpd_sasl_auth_enable = yes
  smtpd_sasl_local_domain = $mydomain
  smtpd_sasl_security_options = noanonymous
  smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_una
  uth_destination,permit_auth_destination,reject

  smtpd_sender_restrictions = reject_unknown_sender_domain
  smtpd_recipient_limit = 5                            ・・・1度に送信できる宛先数上限
  message_size_limit = 10485760                        ・・・メッセージサイズの上限(10MB)

main.cfを保存して閉じます。

続いて、/etc/sasl2/smtpd.confを開いて下記の行を設定します。 これにより、ユーザ認証時にはFedoraユーザのログイン時のパスワードではなく、SMTP AUTH用のパスワードを利用するようになります。

  pwcheck_method: auxprop

以上でSMTP AUTHが利用できるようになりました。 但し、ここまでの設定では、パスワード認証時にユーザのパスワードが暗号化されない状態で送信されてしまいます。 これをパスワードが暗号化された状態で送信されるように追加設定します。

通信の暗号化にはSSLという技術を使います。 プロトコルとしてはSMTPS(SMTP over SSL/TLS)を利用することになります。 また、メールサーバのポートとしてはSMTPS(465番ポート)の開放が必要になります。

再度/etc/postfix/main.cfを開いて下記の各行を追加します。

  smtpd_use_tls = yes
  smtpd_tls_cert_file = /etc/pki/tls/certs/localhost.crt                        ・・・サーバ証明書
  smtpd_tls_key_file = /etc/pki/tls/private/localhost.key                        ・・・サーバの秘密鍵

上記で設定しているサーバ証明書ファイルには、本来、認証局(CA)に発行してもらった証明書を指定する必要がありますが、ここでは便宜上、デフォルトで用意されている自己署名証明書localhost.crtと、サーバの秘密鍵localhost.keyを指定しておきます。 サーバ証明書というのは、接続先のサーバが本物のサーバであり、偽装されたものではないことを証明するものです。 サーバを商用利用する場合などには、サーバを公開するまでにきちんとした証明書を取得してインストールし、上記の設定を書き換えておく必要があります。

続いて/etc/postfix/master.cfを変更します。 master.cfは、クライアントのpostfixへの接続方法や、どのサービスを起動させるかといったことを規定する設定ファイルです。

下記の各行について、先頭の#を外し、コメント化します。

  smtps      inet  n      -      n      -      -      smtpd
    -o smtpd_tls_wrappermode=yes
    -o smtpd_sasl_auth_enable=yes
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject

変更が終わりましたら、サービスを再起動しておきます。

[root@testserver ~]# service postfix restart

以上でSMTPサーバの設定は終わりです。

 ◇     ◇     ◇

本章で設定するメールサーバ機能を利用、またはテストするためには、ユーザアカウントをあらかじめ用意しておく必要があります。 ユーザアカウントおよびSMTP AUTH認証用のパスワードを設定するには以下のようにします。

まず必要があれば新規ユーザを作成します。

[root@testserver ~]# useradd user1
[root@testserver ~]# passwd user1
                      → 設定するパスワードを入力

加えて、作成したユーザにSMTP AUTH認証用のパスワードを設定します。

[root@testserver ~]# saslpasswd2 -c -u testdomain.test user1
                      → 設定するSMTP AUTH認証用パスワードを入力

また、パスワード設定を削除する場合は、

[root@testserver ~]# saslpasswd2 -d -u testdomain.test user1

とします。 設定したパスワード情報は/etc/sasldb2に保存されます。 SMTP AUTH認証用パスワードの一覧は下記のコマンドで確認することができます。

[root@testserver ~]# sasldblistusers2

最後に、/etc/sasldb2をpostfixが読み込めるように権限を変更します。

[root@testserver ~]# chgrp postfix /etc/sasldb2
[root@testserver ~]# chmod 640 /etc/sasldb2

以上でユーザのパスワード認証の準備も完了です。

 ◇     ◇     ◇

続いて次ページでは、POPサーバをインストールします。



前のページへ <    メニューへ戻る    > 次のページへ 

11.メールサーバの構築:
 
  ›(1)メール送信サーバの設定
   (2)メール受信サーバとWebメール
   (3)iptablesの設定
 
Copyright (C) 2011-2019 rurihabachi. All rights reserved.