CentOSのPostfixとDovecotで送受信ができるメールサーバーを構築

前回の記事ではCentOSにインストールしたPostfixでメールを送信できるようにするところまでの設定手順を紹介しました。今回は同じ環境を使ってメールの送信と受信ができるところまでの設定手順を紹介します。

Open Source
CentOSとPostfixを使って送信専用のメールサーバーを構築する方法

こんにちは、ITエンジニアのKomuraです。 最近ではクラウドでのSaaSによるメールサービス(GoogleのG SuiteやMicrosoftのOffice365など)が一般的になり、以前ほどメールサーバーを構築する機会も少なりましたが ...

外部からのメールを受け取ることもできますので、この段階まで設定頂くと基本的なメールサーバーとしての運用が出来る状態になります。

メールサーバーというと設定にやや敷居が高いように思われがちですが、意外と簡単に構築することが出来ます。是非、本記事を含むメールサーバー 構築の基礎(全4回)で、メールサーバーを構築して、メールシステムについての理解を深めて下さい。最終的にはセキュアなメールサーバーの構築をゴールとしています。

メールサーバー 構築の基礎 全4回

1
CentOSとPostfixを使って送信専用のメールサーバーを構築する方法

こんにちは、ITエンジニアのKomuraです。 最近ではクラウドでのSaaSによるメールサービス(GoogleのG SuiteやMicrosoftのOffice365など)が一般的になり、以前ほどメールサーバーを構築する機会も少なりましたが ...

2
CentOSのPostfixとDovecotで送受信ができるメールサーバーを構築

前回の記事ではCentOSにインストールしたPostfixでメールを送信できるようにするところまでの設定手順を紹介しました。今回は同じ環境を使ってメールの送信と受信ができるところまでの設定手順を紹介します。 外部からのメールを受け取ることも ...

centos-mail-postfix033
CentOSのPostfixとDovecotにSSLを設定して安全に通信を行う

前回の記事ではメールサーバーとしての基本的な機能である送信(SMTP)と受信(POP3/IMAP)を行うことが出来るように設定を行いました。 この状態でも運用には問題ありませんが、メールサーバーとクライアント間で通信が平文になっていますので ...

dkim-postfix044
CentOSのPostfixで迷惑メール判定されないようDKIMを設定する

2023/10/19    

構築したメールサーバーから送信したメールが迷惑メールとして識別されたことはありませんか?このような場合は、送信したメールが経由するメールサーバーのなりすましメール対策に引っかかっている場合が殆どです。(まれに迷惑メールのブラックリストに登録 ...

2回目になる本記事では送信と受信ができるメールサーバーの構築手順を紹介していきます。段階的に機能を実装する手順を紹介していきますので、お付き合いください。

本記事では一般ユーザーでの実行が可能なコマンドについてはプロンプトとして"$"、rootユーザーでの実行が必要なコマンドについては"#"を記載しています。

1. 送受信できるメールサーバーを設定する環境

今回の記事で構築を行う環境は、送信専用のメールサーバーを設定した前回の記事を踏襲しています。

Open Source
CentOSとPostfixを使って送信専用のメールサーバーを構築する方法

こんにちは、ITエンジニアのKomuraです。 最近ではクラウドでのSaaSによるメールサービス(GoogleのG SuiteやMicrosoftのOffice365など)が一般的になり、以前ほどメールサーバーを構築する機会も少なりましたが ...

前回の記事では以下の前提条件を元に設定を行いました。

Postfixを導入した環境

  • サーバーにはグローバルの固定IPが割り当てられています
  • ドメインはtestdom.comを利用
  • ホスト名にはmailを設定
  • メールサーバーは配送専用として、リレーが出来ない構成

メールサーバーについては、配送専用として設定されていますので、これを送受信可能な状態に設定を行っていきます。

1-1. MX(Mail Exchanger)レコードの設定確認

メールサーバーでメールを送受信するためには利用するドメインにMXレコード(Mail Exchanger)が設定されている必要があります本記事の環境ではtestdomのMXレコードとしてmail.testdom.comを設定しています。

ドメインのMXレコード設定は、ご利用のドメイン業者やDNSサーバーによって異なるため、本記事では割愛しています。

1-1-1. hostコマンドによる正引きの確認(Linux)

LinuxではhostコマンドによるMXレコードの確認が可能です。使い方はhostコマンドにドメイン名を付けて実行します。
尚、hostコマンドはデフォルトでインストールされていないので、必要に応じてyumコマンドでbind-utilsをインストールします。

 command
# yum -y install bind-utils

bind-utilsがインストールされると、hostコマンドが利用できるようになります。”testdom.com”のMXレコードを確認する場合、以下のようにコマンドを実行します。

 command
$ host -t mx testdom.com
testdom.com mail is handled by 10 mail.testdom.com.

上記のようにドメイン名に対して設定したMXレコードが表示されれば、DNSの設定は完了しています。もしホスト名が見つからないという警告が表示された場合には、ご利用のDNS設定を見直して下さい。ここでは正常に確認ができたという前提で先へ進めていきます。

2. メール受信用とSMTP認証用パッケージ dovecotのインストール

本章ではメールの受信(POP3/IMAP4)に必要なパッケージ”dovecot”の導入手順について説明していきます。本記事ではメールを受信する際に認証を行うように設定しますが、送信時に認証を行うSMTP認証(以下、SMTP-AUTH)でもdovecotの認証機能が利用できます。
Postfixの認証機能についてはcyrus-saslという認証用サービスを利用する方式と、dovecotによるSASL方式が用意されていますが、本記事では追加のパッケージ導入が不要なdovecotのSASL認証機能を利用する前提です。
尚、送信の際にSMTP-AUTHを設定していないサーバーは、あっという間にスパムメールや迷惑メール用の配信サーバーとして利用されてしまいます。

注意ポイント

テスト環境でも、インターネットへ公開する前に必ずSMTP-AUTHの設定を完了させて下さい。
POP3/IMAP4については、特定のネットワークからのみ接続を行う場合にはファイヤーウォールで接続制限を設定することが出来ますが、本記事では、全てのネットワークから接続を許可する前提で設定を行います。

2-1. POP3/IMAP4サービス用パッケージの詳細を確認

メールの受信を行うPOP3/IMAP4サービスを動作させるのに必要となる追加パッケージ名はdovecotになります。認証を行う情報は暗号化することが望ましいのですが、(平文だとスニッファなどでパスワードが分かってしまう可能性があるため)本構成では、次の記事でPOP3/IMAP4通信をSSL/TLSで暗号化することから平文での認証を設定します。

SSL/TLSで通信全体を暗号化することで、平文の情報も暗号化されます。

2-2. dovecotパッケージの詳細を確認

インストール前にパッケージの内容に間違いないか、念のためにdovecotパッケージ詳細を確認します。”yum info”コマンドを以下のように実行します。

 command
$ yum info dovecot.x86_64
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
利用可能なパッケージ
名前 : dovecot
アーキテクチャー : x86_64
エポック : 1
バージョン : 2.2.10
リリース : 8.el7
容量 : 3.2 M
リポジトリー : base/7/x86_64
要約 : Secure imap and pop3 server
URL : http://www.dovecot.org/
ライセンス : MIT and LGPLv2
説明 : Dovecot is an IMAP server for Linux/UNIX-like systems, written with
: security primarily in mind. It also contains a small POP3 server. It
: supports mail in either of maildir or mbox formats.
:
: The SQL drivers and authentication plug-ins are in their subpackages.

表示された説明からdovecotパッケージがPOP3/IMAP4サービスに必要であることが確認できましたので、このパッケージをインストールします。

2-3. yumコマンドによるdovecotパッケージのインストール

dovecotパッケージはyum installコマンドでインストールすることができます。必要なパッケージが確認できましたので、以下のようにインストールを実行します。

 command
# yum -y install dovecot

yumコマンドに-yオプションを付けることでインストール時の確認応答を省いています。パッケージを複数インストールする場合はスペースを入れてパッケージ名を列記します。コマンドを実行すると、以下のようにインストールが開始されます。

 log
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ dovecot.x86_64 1:2.2.10-8.el7 を インストール依存性を解決しましたインストール中:
dovecot x86_64 1:2.2.10-8.el7 base 3.2 M
依存性関連でのインストールをします:
clucene-core x86_64 2.3.3.4-11.el7 base 528 kトランザクションの要約
インストール 1 パッケージ (+1 個の依存関係のパッケージ)総ダウンロード容量: 3.7 M
インストール容量: 12 M
Downloading packages:
(1/2): clucene-core-2.3.3.4-11.el7.x86_64.rpm | 528 kB 00:00:00
(2/2): dovecot-2.2.10-8.el7.x86_64.rpm | 3.2 MB 00:00:00
合計 5.5 MB/s | 3.7 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : clucene-core-2.3.3.4-11.el7.x86_64 1/2
インストール中 : 1:dovecot-2.2.10-8.el7.x86_64 2/2
検証中 : clucene-core-2.3.3.4-11.el7.x86_64 1/2
検証中 : 1:dovecot-2.2.10-8.el7.x86_64 2/2インストール:
dovecot.x86_64 1:2.2.10-8.el7
依存性関連をインストールしました:
clucene-core.x86_64 0:2.3.3.4-11.el7
完了しました!

エラーの出力がなく「完了しました!」と表示されればdovecotパッケージは正常にインストールされています。

2-4. dovecotインストール後の確認

dovecotパッケージがインストールされたことを確認します。インストールされているパッケージは”yum list installed”コマンドで確認できます。以下のようにyumを実行して、dovecotパッケージがインストールされていることを確認します。

 command
$ yum list installed | grep dovecot

出力結果に、dovecotパッケージが表示されることを確認します。

 log
dovecot.x86_64 1:2.2.10-8.el7 @base

上記の結果からdovecotパッケージがインストールされたことが確認できました。これでdovecotパッケージのインストールと確認が終了しました。

2-5. dovecot 起動の確認

続いてインストールしたdovecotが起動することを確認します。CentOSでは7系からsystemctlコマンドでサービスの起動・停止を行います。以下のようにsystemctlを実行することで起動できます。

 command
# systemctl start dovecot

エラーが出力されなければ、dovecotは起動しています。
続いて、サービスの状態を確認します。systemctlコマンドにstatusオプションを付けて実行することで、起動したサービスの状態について、詳細な情報を取得することができます。
以下が実行例です。

 command
$ systemctl status dovecot
 dovecot.service - Dovecot IMAP/POP3 email server
Loaded: loaded (/usr/lib/systemd/system/dovecot.service; disabled; vendor preset: disabled)
Active: active (running) since 金 2018-10-19 17:05:40 JST; 4s ago
Process: 2603 ExecStartPre=/usr/libexec/dovecot/prestartscript (code=exited, status=0/SUCCESS)
Main PID: 2609 (dovecot)
CGroup: /system.slice/dovecot.service
tq2609 /usr/sbin/dovecot -F
tq2612 dovecot/anvil
tq2613 dovecot/log
mq2615 dovecot/config

上記では分かり難いかもしれませんが、丸()の部分が正常な起動状態の場合、緑色で表示されます。dovecotのActive項目に(running)と表示されていますので、起動されていることが確認できます。

2-6. dovecot 自動起動の設定

サーバーの再起動や停止の復旧時に、dovecotが自動的に起動するように設定します。サービスの自動起動を設定するにもsystemctlコマンドを利用します。自動起動は以下のようにsystemctlコマンドを実行します。

 command
# systemctl enable dovecot
Created symlink from /etc/systemd/system/multi-user.target.wants/dovecot.service to /usr/lib/systemd/system/dovecot.service.

エラーが出力されなければ、自動起動は設定が完了しています。
続いて自動起動が設定されたことを確認します。こちらもsystemctlコマンドから確認できます。以下のように実行します。

 command
$ systemctl is-enabled dovecot
enabled

実行結果として “enabled”と表示されれば自動起動の設定は完了です。

3. dovecotの設定

項目2. でdovecotパッケージの導入が完了しました。続いてdovecotでPOP3/IMAP4を利用できるように設定の変更を行っていきます。設定変更についての前提条件は以下の通りになります。

dovecotを設定する前提条件

  • POP3/IMAP4両方のプロトコルが利用できる
  • 接続時の認証情報はLinuxのユーザーアカウントを利用して行う
  • POP3/IMAP4接続時のパスワードは平文でやり取り
  • SSLによる暗号化は次の記事で設定します。本記事では暗号化無しで設定
  • SMTP-AUTHの際に認証機能を提供するように設定

この前提条件に合わせて、dovecotの設定を行っていきます。

3-1. dovecot.confの変更

dovecotの基本的な設定は/etc/dovecot以下にあるdovecot.confファイルで行います。dovecot.confの設定変更前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。

 command
# cp -p /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.org

バックアップの完了後、エディタでdovecot.confファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。

 command
# vi /etc/dovecot/dovecot.conf

doevcot.confファイルが開きます。具体的は変更ポイントは以下になります。

3-1-1. protocolsパラメータ

protocolsパラメータはdovecotで有効にするプロトコルを指定します。本記事ではPOP3とIMAP4を有効にしますので、デフォルトの設定値を以下のように変更します。

 code
#protocols = imap pop3 lmtp

このパラメータからコメントを外します。lmtpは利用しないため、削除します。

 code
protocols = imap pop3

変更後、ファイルを保存します。これでdovecot.confの変更は完了です。

3-2. 10-auth.confファイルの変更

続いて、認証に関する設定の変更を行います。dovecotの詳細な設定に関する設定ファイルは”/etc/dovecot/conf.d”に配置されています。conf.dには以下のファイルが含まれています。

10-auth.conf 20-imap.conf auth-dict.conf.ext
10-director.conf 20-lmtp.conf auth-ldap.conf.ext
10-logging.conf 20-pop3.conf auth-master.conf.ext
10-mail.conf 90-acl.conf auth-passwdfile.conf.ext
10-master.conf 90-plugin.conf auth-sql.conf.ext
10-ssl.conf 90-quota.conf auth-static.conf.ext
15-lda.conf auth-checkpassword.conf.ext auth-system.conf.ext
15-mailboxes.conf auth-deny.conf.ext auth-vpopmail.conf.ext

認証に関する設定ファイルは上記のディレクトリに含まれる”10-auth.conf”になります。このファイルを変更していきます。
10-auth.confの設定変更前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。

 command
# cp -p /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.org

バックアップの完了後、エディタで10-auth.confファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。

 command
# vi /etc/dovecot/conf.d/10-auth.conf

10-auth.confファイルが開きます。設定の変更が必要なパラメータは以下になります。

3-2-1. disable_plaintext_authパラメータ

disable_plaintext_authパラメータはdovecotの認証で、平文での認証を無効化するパラメータになります。デフォルトでは平文の認証は無効になっていますので、これを有効にするように変更します。

 code
#disable_plaintext_auth = yes

このパラメータをコメントを外して、設定値を”no”に変更します。

 code
disable_plaintext_auth = no

3-2-2. auth_mechanismsパラメータ

認証時のメカニズムを指定します。plainに加えて”login”を追加します。

 code
#auth_mechanisms = plain

パラメータにloginを追加します。

 code
auth_mechanisms = plain login

2点の変更が完了したら、ファイルを保存します。

3-3. 10-mail.confファイルの変更

次に受信したメールに関する設定の変更を行います。認証に関する設定ファイルは”/etc/dovecot/conf.d”ディレクトリの中に含まれる10-mail.confになります。このファイルを変更していきます。
10-mail.confの設定変更前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。

 command
# cp -p /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.org

バックアップの完了後、エディタで設定ファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。

 command
# vi /etc/dovecot/conf.d/10-mail.conf

10-mail.conファイルが開きます。具体的は変更ポイントは以下になります。

3-3-1. mail_locationパラメータ

mail_locationパラメータは配送されたメールの保存先を指定します。このパラメータはPostfixに設定した設定値と合わせるようにします。今回はMaildir形式になりますので、以下のように変更します。

 code
# See doc/wiki/Variables.txt for full list. Some examples:
#
# mail_location = maildir:~/Maildir
# mail_location = mbox:~/mail:INBOX=/var/mail/%u
# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n

デフォルトでは全てコメントされています。この中の”maildir”形式の記載がある部分についてコメントを外します。

 code
# See doc/wiki/Variables.txt for full list. Some examples:
#
# mail_location = maildir:~/Maildir
mail_location = maildir:~/Maildir     コメントを外す
# mail_location = mbox:~/mail:INBOX=/var/mail/%u
# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n

変更後にファイルを保存します。これで10-mail.confの変更は完了です。

3-4. 10-ssl.confファイルの変更

次にSSLに関する設定の変更を行います。SSLに関する設定ファイルは”/etc/dovecot/conf.d”ディレクトリの中に含まれる10-ssl.confになります。このファイルを変更していきます。
10-ssl.confの設定変更前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。

 command
# cp -p /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.org

バックアップの完了後、エディタで設定ファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。

 command
# vi /etc/dovecot/conf.d/10-ssl.conf

10-ssl.conf設定ファイルが開きます。変更ポイントは以下になります。

3-4-1. sslパラメータ

sslパラメータは受信の接続時にSSLを必要とするかの設定です。次の記事でSSLの設定を行いますが、本記事では、まだSSLは設定しないので、以下のように変更します。

 code
# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
# disable plain pop3 and imap, allowed are only pop3+TLS, pop3s, imap+TLS and imaps
# plain imap and pop3 are still allowed for local connections
ssl = required

デフォルトでは上記のように”ssl = required”と設定されています。この設定の場合、SSLが必須となります。これを以下のように変更します。

 code
# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
# disable plain pop3 and imap, allowed are only pop3+TLS, pop3s, imap+TLS and imaps
# plain imap and pop3 are still allowed for local connections
ssl = no

変更後にファイルを保存します。これで10-ssl.confの変更は完了です。

3-5. 10-master.confファイルの変更

次にSMTP認証を行う際に、dovecot-saslを利用するための設定を行います。dovecotのSASLに関する設定ファイルは”/etc/dovecot/conf.d”ディレクトリの中に含まれる10-master.confになります。このファイルを変更していきます。
10-master.confの設定変更前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。

 command
# cp -p /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.org

バックアップの完了後、エディタで設定ファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。

 command
# vi /etc/dovecot/conf.d/10-master.conf

10-mail.conファイルが開きます。具体的は変更ポイントは以下になります。

3-5-1. Postfix smtp-auth設定

PostfixでSMTP-AUTHを行うための設定項目は10-master.confに予め用意されています。”Postfix smtp-auth”ディレクティブを変更します。

 code
# Postfix smtp-auth
# unix_listener /var/spool/postfix/private/auth {
# mode = 0666
# }

デフォルトでは上記のようにコメントされています。この部分について

 code
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {   コメントを外す
mode = 0666  コメントを外す
user = postfix  追記
group = postfix  追記
}

に変更します。変更後にファイルを保存します。これで10-master.confの変更は完了です。

3-6. dovecotの設定チェック

dovecotには設定チェック用としてコマンド”doveconf”が用意されています。デフォルトのパラメータとは異なる設定のみを明示的に表示する”-n”オプションを付与します。以下のように実行します。

 command
# doveconf -n
# 2.2.10: /etc/dovecot/dovecot.conf
# OS: Linux 3.10.0-862.14.4.el7.x86_64 x86_64 CentOS Linux release 7.5.1804 (Core)
auth_mechanisms = plain login
disable_plaintext_auth = no
first_valid_uid = 1000
mail_location = maildir:~/Maildir
mbox_write_locks = fcntl
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
}
passdb {
driver = pam
}
protocols = imap pop3
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0666
user = postfix
}
}
ssl = no
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
userdb {
driver = passwd
}

出力結果を確認して、設定を変更した内容が正常に反映されていることを確認します。間違いや不足があった場合には、修正を行います。これでdovecotの設定確認は完了です。

3-7. dovecot 設定の反映

dovecot用設定ファイルの変更が完了しましたので、変更した設定を反映するためにdovecotを再起動します。systemctlコマンドを以下のように実行します。

 command
# systemctl restart dovecot

エラーが無ければ、正常に再起動は実行されています。再起動後にPostfixのステータスを確認します。

 command
$ systemctl status dovecot
 dovecot.service - Dovecot IMAP/POP3 email server
Loaded: loaded (/usr/lib/systemd/system/dovecot.service; enabled; vendor preset: disabled)
Active: active (running) since 木 2018-10-18 19:14:39 JST; 4 days ago
Process: 32189 ExecStartPre=/usr/libexec/dovecot/prestartscript (code=exited, status=0/SUCCESS)
Main PID: 32195 (dovecot)
CGroup: /system.slice/dovecot.service
tq32195 /usr/sbin/dovecot -F
tq32197 dovecot/anvil
mq32198 dovecot/log

表示された上記のステータスから、dovecotが正常に起動していることが確認できました。
dovecotの再起動後にPOP3用の110番ポートとIMAP4用の143番ポートがオープンしていることを確認します。”netstat”コマンドを実行します。

 command
$ netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

netstatの結果から110番ポートと143番ポートがLISTENしていることが確認できました。これでdovecotの設定は完了です。

4. PostfixのSMTP-AUTH設定

項目3. の手順でdovecot側のSMTP-AUTH設定までが完了しました。次にPostfix側でSMTP-AUTHを行うように設定の変更を行っていきます。設定変更についての前提条件は以下の通りになります。

Postfixを設定するための前提条件

  • SMTP-AUTHの認証はdovecotのSASL機能を利用
  • SMTP-AUTHのパスワードは平文でやり取り
  • SMTP-AUTHの認証情報はLinuxのユーザーアカウントを利用して行う
  • OP25B対応としてサブミッションポート(ポート587番)を利用するように設定
  • メールの保存方式としてメールディレクトリを設定
  • メールボムなどの攻撃を回避するために、メールの容量を10MBに制限
  • SMTP接続時にMTAのバージョンを表示しないように設定

この前提条件に合わせて、Postfixの設定を行っていきます。

4-1. Postfixの認証機能確認

Postfix側で対応している認証機能の確認を行います。認証機能の確認は”postconf”コマンドに-aオプションを付与して実行します。
以下のように実行します。

 command
# postconf -a
cyrus
dovecot

cyrusとdovecotが認証方法として表示されることを確認します。本記事ではdovecotのSASL認証を利用します。

4-2. main.cfの変更

Postfixの設定は/etc/postfix以下にあるmain.cfファイルで行います。main.cfの設定変更前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。(.orgファイルは前の記事で作成していますので、本記事では.org2としています。)

 command
# cp -p /etc/postfix/main.cf /etc/postfix/main.cf.org2

バックアップの完了後、エディタでmain.cf設定ファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。

 command
# vi /etc/postfix/main.cf

main.cf設定ファイルが開きます。具体的は変更ポイントは以下になります。尚、変更点でコメントを付ける、外すという記載がありますが、以下のような意味合いになります。

  • コメントを外す    行頭の”#”を削除する
  • コメントにする    行頭に”#”を付ける

4-2-1. inet_interfacesパラメータ

inet_interfacesパラメータはメールを受け取りインターフェイスを指定します。デフォルトの設定はlocalhostとなり、この場合にはlocalhost(自分自身)からのメールのみ受け取る設定になります。メールを配送するためには、このパラメータをallに設定します。
変更点は以下のようになります。

 code
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
inet_interfaces = localhost

上記のinet_interfaces設定パラメータを変更します。

 code
inet_interfaces = all    コメントを外す
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost    コメントにする

4-2-2. mydestinationパラメータ

mydestinationパラメータは、メールを受け取るドメイン名やホスト名を指定ます。ここに指定されたパラメータ以外からのメールを受け取りません。
デフォルトの設定では以下のようになっています。

 code
mydestination = $myhostname, localhost.$mydomain, localhost
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain

このパラメータを変更します。$mydomainを有効にしてドメイン宛てのメールを受け取るようにします。

 code
#mydestination = $myhostname, localhost.$mydomain, localhost    コメントにする
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain    コメントを外す
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain

4-2-3. local_recipient_mapsパラメータ

local_recipient_mapsパラメータは、ローカルに存在しないユーザーのメールを受け取らないための設定です。
デフォルトの設定では、以下のようになっています。

 code
#local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =

このパラメータを、以下のように変更します。(Linuxユーザーが存在する場合のみメールを受け取る)

 code
local_recipient_maps = unix:passwd.byname $alias_maps    コメントを外す
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =

4-2-4. home_mailboxパラメータ

home_mailboxパラメータは、メールボックスの形式です。デフォルトの設定ではメールを一つのファイルに保存する”Mailbox”形式が指定されています。メールの扱いやすさや、imapを利用することを考えて、1メールを1ファイルとして保存する”Maildir”形式を指定します。
デフォルトの設定では以下のように設定されています。

 code
#home_mailbox = Mailbox
#home_mailbox = Maildir/

この設定を変更します。

 code
#home_mailbox = Mailbox
home_mailbox = Maildir/    コメントを外す

4-2-5. smtpd_bannerパラメータ

smtpd_bannerパラメータはSMTP接続した際に表示されるバナーの設定です。デフォルトではMTAの名前(Postfix)が表示されますが、セキュリティ対策として、MTA名を表示しないように設定を変更します。デフォルトでは設定はコメントアウトされています。

 code
#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)

この設定を以下のように変更します。

 code
#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
smtpd_banner = $myhostname ESMTP    この行を追記

4-2-6. message_size_limitパラメータ

message_size_limitは送受信できるメールの最大サイズを設定します。デフォルト値は10MBになります。今回の前提条件ではメールは10MBのサイズ指定を行う形になります。デフォルト値から変更がないため、パラメータの記載は不要です。
※本パラメータのサイズは、メール本文、ヘッダー情報、添付ファイルなどの全ての情報を含んだサイズとなります。
変更が必要な場合は、以下のように設定します。(例:メールの最大サイズを20MBに変更したい場合)

 code
### MAIL SIZE
message_size_limit = 20971520

4-2-7. SMTP-AUTH用パラメータ

SMTP-AUTH用の設定パラメータは、設定ファイルに項目として用意されていないため、main.cfの最下行に追記します。
追記する項目は以下のパラメーターになります。

  • smtpd_sasl_auth_enable = yes  smtpの接続時にSASLを利用して認証を行う
  • smtpd_sasl_type = dovecot  SMTP-AUTHの認証形式を指定
  • smtpd_sasl_path = private/auth  認証用のソケットファイルを指定
  • broken_sasl_auth_clients = yes    Outlook Expressや古いOutlookクライアント用

smtpd_sasl_auth_enableパラメーターはsmtpではなくsmtpdになりますので注意して下さい。

smtp認証のリレーを制御する"smtpd_recipient_restrictions"に設定するパラメータは

  • permit_mynetworks    指定されているネットワークからはリレーを許可
  • permit_sasl_authenticated    SMTP-AUTHで認証を通過した接続はリレーを許可
  • reject_unauth_destination  SMTP-AUTHで認証が通らなかったものはリレーを拒否

になります。以下をmain.cfに追記します。

 code
### SMTP-AUTH
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination

追記が終わったら設定ファイルを保存します。これでmain.cfの設定は完了です。

4-3. 設定ファイルのチェック

設定ファイルのチェック用としてコマンド”postconf”を実行します。デフォルトパラメーターとは異なる設定のみを明示的に表示する”-n”オプションを付与します。以下のように実行します。

 command
$ postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
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
home_mailbox = Maildir/
html_directory = no
inet_interfaces = all
inet_protocols = all
local_recipient_maps = unix:passwd.byname $alias_maps
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
masquerade_domains = testdom.com
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mydomain = testdom.com
myhostname = mail.testdom.com
newaliases_path = /usr/bin/newaliases.Postfix
queue_directory = /var/spool/Postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_banner = $myhostname ESMTP
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
unknown_local_recipient_reject_code = 550

出力された内容を確認して、変更した部分が反映されていることを確認します。
またPostfixには設定ファイルの誤りをチェックするためのコマンド”postfix check”が用意されています。このコマンドで設定ファイルのチェックも行っておきます。

 command
# postfix check

エラーが表示されなければ、main.cf設定ファイルには問題がありませんので、確認は完了です。

5. Postfixのサブミッションポート設定

次にOP25B(Outbound Port 25 Blocking)に対応するため、サブミッションポートの設定を行います。
OP25Bは多くのISPが採用している迷惑メール対策設定で、ISP側で用意したメールサーバー以外のSMTP接続をブロックする設定になります。OP25B対策されているISPの場合にはSMTP接続の25番ポートがブロックされているため、サブミッションポートと呼ばれる587番ポートを利用します。ここではPostfixが587番ポートで接続できるように変更する手順を説明します。

5-1. master.cfの変更

サブミッションポートの設定は/etc/postfix以下にあるmaster.cfファイルで行います。master.cfはメールクライアントがPostfixに接続する方法や、サービスが要求された際に実行されるプログラムの設定を行うファイルです。master.cfの設定変更前に、既存のファイルをバックアップしておきます。具体的には以下の手順でコピーを行います。

 command
# cp -p /etc/postfix/master.cf /etc/postfix/master.cf.org

バックアップの完了後、エディタでmaster.cf設定ファイルを開いて変更を行います。本環境ではOSの標準的なエディタである、viエディタを利用しています。

 command
# vi /etc/postfix/master.cf

master.cf設定ファイルが開きます。デフォルトのmaster.cfは以下のようになっています。

 code
# ================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ================================================================
smtp inet n - n - - smtpd
#smtp inet n - n - 1 postscreen
#smtpd pass - - n - - smtpd
#dnsblog unix - - n - 0 dnsblog
#tlsproxy unix - - n - 0 tlsproxy
#submission inet n - n - - smtpd
# -o syslog_name=Postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes

サブミッションポートを有効にするために、”#submission inet n ...”部分のコメントを外します。以下のように変更します。

 code
# ===================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ===================================================================
smtp inet n - n - - smtpd
#smtp inet n - n - 1 postscreen
#smtpd pass - - n - - smtpd
#dnsblog unix - - n - 0 dnsblog
#tlsproxy unix - - n - 0 tlsproxy
submission inet n - n - - smtpd    コメントを外す
# -o syslog_name=Postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes

変更できたら、ファイルを保存します。これでPostfixのサブミッションポート設定は完了です。

6. main.cf、master.cfファイル、変更点の反映

設定ファイルの変更が完了しましたので、変更した設定を反映するためにPostfixを再起動します。systemctlコマンドを以下のように実行します。

 command
# systemctl restart postfix

エラーが無ければ、正常に再起動は実行されています。再起動後にPostfixのステータスを確認します。

 command
# systemctl status postfix
 Postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/Postfix.service; enabled; vendor preset: disabled)
Active: active (running) since 金 2018-10-19 16:08:49 JST; 6s ago
Process: 1827 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/SUCCESS)
Process: 1840 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
Process: 1838 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
Process: 1836 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
Main PID: 1912 (master)
CGroup: /system.slice/postfix.service
tq1912 /usr/libexec/postfix/master -w
tq1913 pickup -l -t unix -u
mq1914 qmgr -l -t unix -u

表示された上記のステータスから、Postfixが正常に起動していることが確認できました。
Postfixの再起動後に587番ポートがオープンしていることを確認します。LISTENしているポートを確認するために”netstat”コマンドを実行します。TCPポートのみを確認します。

 command
# netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

上記のように587番ポートがLISTENしていることが確認できました。これでPostfixの設定は完了です。

7. SMTP-AUTHとサブミッションポートの動作確認

ここまででSMTP-AUTHの設定とサブミッションポートの設定が完了しましたので、一度、設定した部分について確認を行います。

7-1. テストユーザーの作成

SMTP-AUTHの認証テスト用にテストユーザーを作成します。このユーザーは送受信のテストにも利用します。本記事のSMTP-AUTH認証はLinuxのユーザー情報を利用する設定になっていますので、Linuxにユーザーを追加します。useraddコマンドを実行します。

 command
# useradd testuser01

ユーザーの作成後、パスワードを設定します。

 command
# passwd testuser01
ユーザー testuser01 のパスワードを変更。
新しいパスワード:   パスワードを入力
新しいパスワードを再入力してください:   パスワードを入力
passwd: すべての認証トークンが正しく更新できました。

パスワードについては”password”を指定しています。(実際の設定には、推測されにくいパスワードを設定してください)これでテスト用ユーザーの作成が完了しました。

7-2. SMTPとサブミッションポートの接続テスト

SMTPの25番とサブミッションポートの587番ポートにtelnetコマンドで接続テストを行います。
事前に利用するユーザー名(testuser01)とパスワード(password)をBASE64でエンコードします。本環境の場合は以下のようにperlを実行します。

 command
# perl -MMIME::Base64 -e 'print encode_base64("testuser01\0testuser01\0password");'
dGVzdHVzZXIwMQB0ZXN0dXNlcjAxAHBhc3N3b3Jk

文字列”dGVzdHVzZXIwMQB0ZXN0dXNlcjAxAHBhc3N3b3Jk”がエンコードされたユーザー名とパスワードになります。これでテストの準備ができましたので25番ポートから接続してみます。

 command
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.testdom.com

応答待ちになります。EHLOコマンドを入力します。

 command
ehlo testdom.com 入力 ドメイン名は環境に合わせて下さい
250-mail.testdom.com
250-PIPELINING
250-SIZE 10485760
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

再度、応答待ちになります。”AUTH PLAIN”コマンドに続いてエンコードした情報を入力して下さい。

 command
AUTH PLAIN    入力
334
dGVzdHVzZXIwMQB0ZXN0dXNlcjAxAHBhc3N3b3Jk    入力
235 2.7.0 Authentication successful

応答として”235 2.7.0 Authentication successful”が返ってくればSMTP-AUTHで認証が出来ています。quitコマンドを入力して、SMTP接続をクローズします。

 command
quit
221 2.0.0 Bye
Connection closed by foreign host.

サブミッション用の587番ポートについても同じように接続テストを行います。

 command
# telnet localhost 587
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.testdom.com ESMTP
ehlo testdom.com  入力
250-mail.testdom.com
250-PIPELINING
250-SIZE 10485760
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN     入力
334
dGVzdHVzZXIwMQB0ZXN0dXNlcjAxAHBhc3N3b3Jk     入力
235 2.7.0 Authentication successful

応答として”235 2.7.0 Authentication successful”が返ってくれば587番ポートでもSMTP-AUTHで認証が出来ています。これで接続テストは完了です。quitコマンドを何度か入力して、SMTP接続をクローズします。
これで接続テストは完了です。

8. ファイアウォールへの接続許可設定

メールの送受信では接続方法によって、幾つかの接続ポートを利用します。本記事では暗号化を利用しないSMTPとPOP3及びIMAP4が利用する以下のTCPポートをオープンします。尚、ファイアウォールはCentOSのデフォルトであるfirewall-cmdを利用している前提となります。

送信用ポート(SMTP/SMTP-Submission)

  • SMTP 25番ポート
  • SMTP-Submission 587番ポート

受信用ポート(POP3/IMAP4)

  • POP3 110番ポート
  • IMAP4 143番ポート

8-1. 現状のファイアウォール設定を確認

先ず、現状の設定を確認していきます。メールの送受信に利用するポートは、全てのネットワークに開放するため、インターフェイスに適用されているゾーン、”public”ゾーンの設定を確認します。

 command
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

デフォルトでは上記のようにsshのみ許可されています。

8-2. メール送受信サービスの接続許可設定

項目8-1. で確認した”public”ゾーンの接続許可サービスにSMTP、SMTP-Submission、POP3、IMAP4の4サービスを追加します。追加はfirewall-cmdで以下のように行います。

 command
# firewall-cmd --zone=public --add-service={smtp,smtp-submission,pop3,imap} --permanent
success

「success」と表示されれば追加は完了です。設定を反映するためにファイアウォールの設定をリロードします。

 command
# firewall-cmd --reload
success

「success」と表示されれば設定のリロードは完了です。

8-3. メール送受信サービス用ファイアウォールの設定確認

設定した内容が正常に反映されているかを確認します。確認は以下のように行います。

 command
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh smtp smtp-submission pop3 imap
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

「services」の項目に「smtp smtp-submission pop3 imap」が表示されていれば、ファイヤーウォール設定の確認は完了です。ここまででファイアウォールの接続許可は完了です。

9. テストメールの配信(ローカル)

メールを送受信するための設定が完了しましたので、実際にメールを配信してみます。先ずはメールサーバー自身でメールを配信します。利用するユーザーは項目6-1. で作成したユーザー”testuser01”になります。

9-1. mailコマンドによるメールの配信

CentOSではメールを配送するための”mail”コマンドが用意されています。特にオプションを付与せず、ユーザー名のみ指定して実行します。

 command
$ mail testuser01

対話モードに入りますので、Subject(件名)と内容を入力します。

 command
Subject: test  任意の件名を入力
test    本文を入力本文を入力が終わったら、”.(ドット)”を入力します。
EOT

これでテストメールの配信が完了しました。

9-2. メールログの確認

メールが配送されたことをログから確認します。メールのログは”/var/log/maillog”になります。このファイルへ送受信の記録が出力されます。
lessコマンドでログファイルを開きます。

 command
# less /var/log/maillog

以下のようにログが出力されています。

ct 19 17:15:51 mail postfix/pickup[2838]: 4AC726DAC7: uid=0 from=
Oct 19 17:15:51 mail postfix/cleanup[2844]: 4AC726DAC7: message-id=<20181019081551.4AC726DAC7@mail.testdom.com>
Oct 19 17:15:51 mail postfix/qmgr[2839]: 4AC726DAC7: from=<root@testdom.com>, size=426, nrcpt=1 (queue active)
Oct 19 17:15:51 mail postfix/local[2846]: 4AC726DAC7: to=<testuser01@mail.testdom.com>, orig_to=, relay=local, delay=0.04, delays=0.03/0.01/0/0, dsn=2.0.0, status=sent (delivered to maildir)
Oct 19 17:15:51 mail postfix/qmgr[2839]: 4AC726DAC7: removed

確認する点は”from(送信元アドレス)”と”to(送信先アドレス)”、及び”to”のstatusになります。上記の場合では

  • from:root@testdom.com(送信元)
  • to:testuser01@mail.testdom.com(送信先)
  • status:sent (delivered to maildir)

となります。上記のログではstatusがsentとなっていることから、メールが配送されたことが分かります。

9-3. メールディレクトリの確認

メールの保存先は、各ユーザーのホームディレクトリ以下にある”Maildir”ディレクトリになります。このディレクトリはメールが配送されると自動的に作成されます。先ほどのテストメールでディレクトリが作成されているかを確認します。

 command
# ls -al /home/testuser01/Maildir/
合計 16
drwx------ 5 testuser01 testuser01 4096 10月 19 17:10 .
drwx------ 3 testuser01 testuser01 73 10月 19 17:10 ..
drwx------ 2 testuser01 testuser01 6 10月 19 17:10 cur
-rw------- 1 testuser01 testuser01 51 10月 19 17:10 dovecot-uidlist
-rw------- 1 testuser01 testuser01 8 10月 19 17:10 dovecot-uidvalidity
-r--r--r-- 1 testuser01 testuser01 0 10月 19 17:10 dovecot-uidvalidity.5bc9915b
-rw------- 1 testuser01 testuser01 168 10月 19 17:10 dovecot.index.log
-rw------- 1 testuser01 testuser01 0 10月 19 17:10 maildirfolder
drwx------ 2 testuser01 testuser01 49 10月 19 17:15 new
drwx------ 2 testuser01 testuser01 6 10月 19 17:15 tmp

上記のようにMaildirが作成されて、その配下に幾つかのディレクトリが作成されていることが確認できました。
これでローカルでのメール配送テストとメールディレクトリの確認は完了です。

10. メールクライアントからの動作確認

次は外部からメールの送受信を行い、メールの送受信ができることを確認します。メールクライアントとしてthunderbirdを利用しました。

10-1. メールクライアントの設定と送受信テスト(SMTP-AUTHとPOP3)

メールクライアントであるthunderbirdにメールアカウントを設定します。手動設定で以下のように設定してしました。
設定値は実際の環境に合わせて変更してください。

postfix-smtp-auth-11-1-1

接続すると、以下のような警告画面が表示されます。これは通信がSSL/TLSで暗号化されていないためです。次の記事で暗号化しますが、ここはリスクを承認して、次へ進みます。

postfix-smtp-auth-11-1-2

正常に設定ができると、画面のようにアカウントが追加されます。

postfix-smtp-auth-11-1-3

メールアカウントの追加ができましたので、メールの受信を行います。先ほどローカルで配送されたメールが受信できます。

postfix-smtp-auth-11-1-4-2

メールサーバー側に出力されているログは以下のようになります。

Oct 19 17:18:15 mail dovecot: pop3-login: Login: user=, method=PLAIN, rip=110.21.5.10, lip=110.20.3.145, mpid=2872, session=
Oct 19 17:18:15 mail dovecot: pop3(testuser01): Disconnected: Logged out top=0/0, retr=1/545, del=0/1, size=529

ログからも接続できたことが確認できました。
続いて、SMTP-AUTHを利用してメールを外部にリレー配送してみます。配送先はGoogleのメールサービスGmailのアカウントです。
postfix-smtp-auth-11-1-5-2

正常に認証を通過して配送ができました。配送時のメールログは以下になります。

Oct 19 17:19:57 mail postfix/smtpd[2891]: connect from unknown[110.21.5.10]
Oct 19 17:19:57 mail postfix/smtpd[2891]: 36F0C6DAC7: client=unknown[110.21.5.10], sasl_method=PLAIN, sasl_username=testuser01
Oct 19 17:19:57 mail postfix/cleanup[2894]: 36F0C6DAC7: message-id=<1ebc0c43-60a5-1aca-1ff4-1ce7da186d3b@testdom.com>
Oct 19 17:19:57 mail postfix/qmgr[2839]: 36F0C6DAC7: from=<testuser01@testdom.com>, size=613, nrcpt=1 (queue active)
Oct 19 17:19:57 mail postfix/smtpd[2891]: disconnect from unknown[110.21.5.10]
Oct 19 17:19:59 mail postfix/smtp[2895]: 36F0C6DAC7: to=<sup@remsys.co.jp>, relay=aspmx.l.google.com[74.125.204.26]:25, delay=2.4, delays=0.11/0.1/1.6/0.61, dsn=2.0.0, status=sent (250 2.0.0 OK 1539937199 x22-v6si24643699pgi.367 - gsmtp)
Oct 19 17:19:59 mail postfix/qmgr[2839]: 36F0C6DAC7: removed

メールログからもSMTP認証を通過してメールが配送されたことを確認できます。

10-2. メールクライアントの設定(SMTP-AUTHとIMAP4)

メールクライアントであるthunderbirdにメールアカウントを設定します。今回はIMAP4で接続するためのアカウントを設定します。手動設定で以下のように設定してしました。設定値は実際の環境に合わせて変更してください。

postfix-smtp-auth-11-2-1

接続すると、以下のような警告画面が表示されます。これは通信がSSL/TLSで暗号化されていないためです。次の記事で暗号化しますが、ここはリスクを承認して、次へ進みます。

postfix-smtp-auth-11-2-2

正常に設定ができると、画面のようにアカウントが追加されます。

postfix-smtp-auth-11-2-3

メールの受信を行います。ログは以下のようになります。

Oct 19 17:27:17 mail postfix/smtpd[2914]: disconnect from unknown[110.21.5.10]
Oct 19 17:27:32 mail dovecot: imap-login: Login: user=, method=PLAIN, rip=110.21.5.10, lip=110.20.3.145, mpid=2924, session=
Oct 19 17:27:32 mail dovecot: imap(testuser01): Disconnected: Logged out in=8 out=395
Oct 19 17:27:44 mail dovecot: imap-login: Login: user=, method=PLAIN, rip=110.21.5.10, lip=110.20.3.145, mpid=2926, session=

上記のようにログからもimap4で接続できていることが確認できました。
これでimap4での確認は完了です。

11. まとめ

今回の記事では、メールサーバーとして送受信が機能するところまで設定を行いました。このままだと暗号化されていないため、ネットワークスニッファなどで認証情報が盗聴されてしまう可能性がありますが、先ずはメールの送受信を行うまでの段階まで設定して動作を確認してみて下さい。メールがどのようなシステムでやり取りされているかを理解することが出来るかと思います。また意外と簡単にメールサーバーの構築が出来ることも分かります。

次回の記事ではLet's Encryptで取得したサーバー証明書を利用してSMTPとPOP3、IMAP4の接続を暗号化していきます。

Open Source
centos-mail-postfix03
CentOSのPostfixとDovecotにSSLを設定して安全に通信を行う

前回の記事ではメールサーバーとしての基本的な機能である送信(SMTP)と受信(POP3/IMAP)を行うことが出来るように設定を行いました。 この状態でも運用には問題ありませんが、メールサーバーとクライアント間で通信が平文になっていますので ...

  • この記事を書いた人
rem-profile-photo

レムシステム

レムシステムはPC・サーバー・ネットワークでの業務効率化を主な業務としている会社です。全国に対応しています。

-CentOS, Dovecot, Postfix
-