CentOS7でメールサーバを構築する(最新版のPostfix+Dovecot)
はじめに
CentOS7で送信メールサーバと受信メールサーバを構築します。構築後にクライアントソフトを使いメールの送信・受信が行えることまで確認します。
環境と要件
環境
メールサーバのOSはCentosOS7、送信メールサーバにPostfix、受信メールサーバにDovecotを使います。メールサーバはインターネットに外部公開するのでプライベートネットワーク内に位置しますがホームゲートウェイでNATをします。
なお、PostfixとDovecotは記載時点で最新版のものをインストールします。
ソフトウェア | バージョン |
---|---|
CentOS7 | 7.7.1908 |
Postfix | 3.5.3 |
Devecot | 2.2.36 |
要件
- 当方の環境(ISP)がOP25Bの対策を行っているようなので、SMTPのTCP25番が外部に出ることができません。サブミッションポートによるTCP587でメール送信をするようにします。
- 送信メールのリレー先はGmailでSMTP認証をします。(Gmailアカウントが必要)
- 受信メールのプロトコルはIMAPとします。(POP3も可)
- メールサーバのPostfixとDovecotは一つのCentOS7上にインストールします。
- メールサーバのFQDNは「mail.lab-infra.com」とし、パブリックDNSでAレコードの名前解決が可能な状態になっていることとします。(正確には、グローバルIPアドレスはホームゲートウェイのWAN側インタフェースに設定されており、NATによりメールサーバのプライベートIPアドレスに変換され通信します)
- 今回作成するアカウントは「kantaro」のみとします。メールアドレスは「kantaro@lab-infra.com」となります。
- 動作確認は、下図の通り今回構築するメールサーバ(mail.lab-infra.com)とiCloudメールとの送信と受信を行います。
送信メールサーバの構築
Postfixのインストール
まずはインストールですが、CentOS7には標準で2系のPostfixがインストールされています。最新のPostfixは3系なので、一度、2系をアンインストールしその後3系をインストールします。
CentOS7標準のyumリポジトリー上で提供されているバージョンの確認。
# yum info postfix
<省略>
利用可能なパッケージ
名前 : postfix
アーキテクチャー : x86_64
エポック : 2
バージョン : 2.10.1
リリース : 9.el7
容量 : 2.4 M
リポジトリー : base/7/x86_64
要約 : Postfix Mail Transport Agent
URL : http://www.postfix.org
ライセンス : IBM and GPLv2+
説明 : Postfix is a Mail Transport Agent (MTA), supporting LDAP, SMTP AUTH (SASL),
: TLS
Postfixのインストール状態を確認します。
# yum list installed | grep postfix
postfix.x86_64 2:2.10.1-7.el7 @anaconda
インストールされていれば下記のようにPostfixの停止と削除をします。
# systemctl stop postfix.service
# yum remove postfix
次にPostfixの最新版を提供している「GhettoForge」というリポジトリをインストールします。
# yum -y install http://mirror.ghettoforge.org/distributions/gf/gf-release-latest.gf.el7.noarch.rpm
yumコマンド時に標準でGhettoForgeを使用しないようにします。
# vi /etc/yum.repos.d/gf.repo
mirrorlist=http://mirrorlist.ghettoforge.org/el/7/gf/$basearch/mirrorlist
#enabled=1 ←コメントアウト
enabled=0 ←追加
次にインストールします。
# yum -y --enablerepo=gf-plus install postfix3
Postfixのインストールは以上です。
Postfixの設定ファイル編集
設定ファイルの編集をします。基本設定、SMTP認証の有効化とGmailへのリレー有効化を実施します。
# vi /etc/postfix/main.cf
#myhostname = virtual.domain.tld
myhostname = mail.lab-infra.com ←追加
<省略>
#mydomain = domain.tld
mydomain = lab-infra.com ←追加
<省略>
#myorigin = $mydomain
myorigin = $mydomain ←追加
<省略>
#inet_interfaces = localhost ←コメントアウトする
inet_interfaces = all ←追加
<省略>
#mydestination = $myhostname, localhost.$mydomain, localhost ←コメントアウトする
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ←追加
<省略>
#home_mailbox = Maildir/
home_mailbox = Maildir/ ←追加
<省略>
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
smtpd_banner = $myhostname ESMTP unknown ←追加
<省略>
<下記を最終行にすべて追加>
## ADD SMTP AUTH
message_size_limit = 10485760
## ADD SMTP AUTH
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination
## ADD MaxReceiveSize
message_size_limit = 10485760
## ADD Gmail Relay
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain
下記の設定でサブミッションポートを有効化します。
# vi /etc/postfix/master.cf
#submission inet n - n - - smtpd
submission inet n - n - - smtpd ←コメントアウトを解除
<省略>
# -o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_auth_enable=yes ←コメントアウトを解除
Postfixの設定ファイル編集は以上です。
Gmail向けのSMTP認証とメールリレー設定
SMTP認証に必要なライブラリのインストールをします。
# yum -y install cyrus-sasl cyrus-sasl-plain
Gmailの認証用ファイルの作成をします。chmodでrootのみでしか読み書きできないようにし、postmapコマンドでデータベースの作成をします。
# echo [smtp.gmail.com]:587 [Gmailのメールアドレス]:[Gmailのパスワード] > /etc/postfix/sasl_passwd
# chmod 640 /etc/postfix/sasl_passwd
# postmap /etc/postfix/sasl_passwd
サービスの起動と自動起動
# systemctl start postfix
# systemctl enable postfix
# systemctl start saslauthd
# systemctl enable saslauthd
送信メールサーバの設定は以上です。
受信メールサーバの構築
Devecotの設定
まずはインストール。
# yum -y --enablerepo=gf-plus install dovecot23
設定ファイルの編集をします。
# vi /etc/dovecot/conf.d/10-mail.conf
#mail_location =
mail_location = maildir:~/Maildir ←追加
# vi /etc/dovecot/conf.d/10-auth.conf
#disable_plaintext_auth = yes
disable_plaintext_auth = no ←追加
# vi /etc/dovecot/conf.d/10-ssl.conf
#ssl = required ←コメントアウト
ssl = no ←追加
サービスの起動と自動起動
# systemctl start dovecot
# systemctl enable dovecot
受信メールサーバの設定は以上です。
ユーザ追加
次に、メールアドレスを利用するユーザの追加作業をします。
ユーザの追加・パスワード設定・Maildir作成
# useradd kantaro
# passwd kantaro ←Enter後、任意のパスワードを入力
自ドメインメールサーバ用のSMTP認証設定
# echo '任意のパスワードを入力' | saslpasswd2 -p -u mail.lab-infra.com -c kantaro
# sasldblistusers2
kantaro@mail.lab-infra.com: userPassword ←上で設定した内容が表示される
# chgrp postfix /etc/sasldb2 ←初回のみ実施
#### ユーザを削除したい場合は下記 ####
# saslpasswd2 -d kantaro -u mail.lab-infra.com
# userdel -r kantaro
Gmailの設定
ここまでの設定でメール送信自体は可能になりますが、GmailにメールリレーをしているのでGmailのメールアドレスで転送してしまいます。つまり、受信側からするとFromがGmailのメールアドレスになります。
きちんと自ドメイン(今回で言うと「kantaro@lab-infra.com」)のメールアドレスで届けるには以降の対応をします。以降、しばらくGmailのWeb画面操作になります。
まず、GmailにWebログインし、右上の「歯車」を押し、「すべての設定を表示」を押します。
「アカウントとインポート」から「他のメールアドレスを追加」を押します。
「メールアドレス」欄に自ドメインのメールアドレスを入力し、エイリアスのチェックボックスを外し「次のステップ」を押します。
下図の通り、①~④を入力します。なお、SMTPサーバ欄の記載がなければメールサーバのドメインを入力します。
また、「SMTPサーバ」欄に自ドメインのメールサーバが入力されていなければFQDNで入力します。
メールに確認コードが届いてますので、入力し確認ボタンを押します。
Gmailの設定は以上です。
メールクライアントの設定
Thunderbird
Thunderbirdでクライアント設定を行います。
まず、Thunderbirdを起動し、画面右上の三本線から「アカウント設定」を押し、左下の「アカウント操作」>「メールアカウントを追加」を押します。
続いて、下記の画面の通り進めます。
①は受信側に表示される送信者氏名です。②は自ドメインのメールアドレスを入力します。③にアカウントのパスワードを入力し、「続ける」ボタンで進みます。
今回はIMAPにしましたが、POP3も可能です。
今後、暗号化対応も試す予定ですが、今回はこのまま進めます。
アカウントが読み込まれれば左ペインに表示されます。
Thunderbirdの設定は以上です。次に動作確認をします。
動作確認
メール送受信の確認
当方のiCloudメールから今回作成した「kantaro@lab-infra.com」宛てにメールを送信しました。
下記の通り正常にThunderbirdで受信しています。
次に上記で受信したTest Mailに返信しました。
下記の通りiCloudで受信しており、無事、メール送受信が可能であることが確認できました。
Maildirの確認
Maildirはメール毎にファイルを作成します。試しに、「kantaro@lab-infra.com」に3通のメールがある状態にして確認します。
この状態でMaildir/curを確認すると、3つのファイルが作成されています。問題なくMaildir方式になっていることが確認できました。
# ls -l /home/kantaro/Maildir/cur/
合計 12
-rw------- 1 kantaro kantaro 1923 8月 10 00:03 1596985384.Vfd00I2066132M275956.centos7mgr-01.localdomain:2,Sb
-rw------- 1 kantaro kantaro 1923 8月 10 00:04 1596985467.Vfd00I2066134M307156.centos7mgr-01.localdomain:2,b
-rw------- 1 kantaro kantaro 1923 8月 10 00:04 1596985490.Vfd00I2066136M494257.centos7mgr-01.localdomain:2,b
#
以上でPostfixとDovecotの構築を終わります。
ディスカッション
コメント一覧
まだ、コメントがありません