Postfix + SMTP-AUTH + Dovecotでメールサーバを構築する方法です。
今回は基本的な構成で構築を行っていきます。
構築後の動作に問題が発生しないことを確認した後に、通信の暗号化や迷惑メール対策などの設定を行っていきます。
メールサーバ構築手順
- 【Ubuntu Server 22.04】Postfix + SMTP-AUTH + Dovecotでメールサーバを構築
- 【Ubuntu Server 22.04】DovecotをSSL通信で暗号化
- 【Ubuntu Server 22.04】PostfixでTLSを有効化して通信を暗号化
- 【Ubuntu Server 22.04】PostfixにDKIMの設定を追加
- 【迷惑メール対策】ざっくり説明SPFの設定方法(送信側)
- 【迷惑メール対策】ざっくり説明DMARCの設定方法(送信側)
- 【Ubuntu Server 22.04】PostfixにSPFチェック機能を追加(policyd-spf)
- 【Ubuntu Server 22.04】PostfixとOpenDMARCでDMARC認証を行う方法
構築環境
ConoHaのVPSにインストールされている、Ubuntu Server 22.04 に postfix + SMTP-AUTH + dovecotでメールサーバを構築した際の手順について説明していきます。
今回は下記の内容で環境を構築して行きますので、サーバ名やメールアドレスドメインについては適宜読み替えて作業を行ってください。
SMTPサーバ名 | vpslife.server-memo.net |
メールアドレスドメイン | vpslife.server-memo.net |
SMTP AUTHライブラリ | Dovecot-SASL |
SMTP-AUTHって何?
メールを送信する際に使用する認証機能のことです。
認証機能を使用することで、認証が成功したユーザだけがメールを送信することができるようになります。
この設定が無いと、関係のない他人が勝手にこのメールサーバを使ってメール送信することができてしまうため、すぐに迷惑メールやスパムメールを送信するために使われてしまいます。
SASLライブラリについて
STMP AUTHの認証機能はSASLライブラリを使用します。
よく使われるSASLライブラリには以下のものがあります。
- Cyrus-SASL
- Dovecot-SASL
Dovecot-SASLを使用すると、POP/IMAPサーバであるDovecotと認証を一緒に管理することができるため、今回はこちらを使用して行きます。
ドメイン取得とDNS設定
メールアドレスに使用するドメインの取得と、DNSの設定は事前に行ってあることが前提となります。
ドメインを取得していない場合は、事前に取得しておいてください。
ちなみに、私が使用しているドメイン販売会社(レジストラ)は下記になります。
DNS設定
事前に下記のDNS設定を行っておいてください。
- Aレコード
- MXレコード
- PTR(逆引き)レコード
- SPFレコード
- DKIMレコード
- DMARKレコード
gmailへ送信する際のガイドライン
Googleがgmailへメールを送信する際の新たなガイドラインを発表しました。
2024年2月以降は下記の情報を設定しないとgmail宛にメールを送信することが出来なくなるようなので、設定の方を忘れずに行う必要が有ります。
- PTR(逆引き)レコード
- SPFレコード
- DKIMレコード
- DMARKレコード(1日5000通以上の場合が対象)
詳しい内容についてはGoogleのGmailヘルプのページを参照願います。
DNSの設定方法はドメイン業者やDNSサーバごとに異なるため省略します。
SPFレコードの設定について(追記)
DNSにSPFレコードを追加する方法について説明を作成しましたので、よろしければ参考にしてみてください。
ファイアウォール設定
通常のSMTPで使用する25番ポートの他に、Outbound Port25 Blocking(OP25B)用のポートして587番ポートも通信を許可しておきます。
OP25Bについてこちらに詳しい説明があります。
https://www.dekyo.or.jp/soudan/contents/taisaku/4-1.html
$ sudo ufw allow 25/tcp $ sudo ufw allow 587/tcp
Dovecotで使用するPOP(110)とIMAP(143)ポートの通信許可も行います。
$ sudo ufw allow 110/tcp $ sudo ufw allow 143/tcp
Postfixインストール
SMTPサーバであるPostfixをインストールします。
$ sudo apt update $ sudo apt install postfix
Postfix Configuration画面が表示されるので、「Tab」キーを押下して「ok」を選択して「Enter」キーを押下します。
「General mail configuration type」を選択する画面が表示されます。
今回は手動で設定を行っていくので、「No configuration」を矢印キーで選択した後に、「Tab」キーを押下して「ok」を選択して「Enter」キーを押下します。
Dovecotインストール
POP/IMAPサーバであるDovecotをインストールします。
$ sudo apt install dovecot-core dovecot-pop3d dovecot-imapd
これでDovecot-SASLライブラリもインストールされるのため、SMTP AUTHが行えるようになります。
Postfix設定
Postfixの設定を行っていきます
/etc/postfixディレクトリにPostfixの設定ファイルであるmain.cfの雛形が用意されているので、それをコピーしてmain.cfファイルの設定を行っていきます。
$ cd /etc/postfix/ $ sudo cp -p main.cf.proto main.cf $ sudo vi main.cf
設定内容
myhostname = vpslife.server-memo.net mydomain = vpslife.server-memo.net myorigin = $mydomain inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases home_mailbox = Maildir/ smtpd_banner = $myhostname ESMTP unknown sendmail_path = /usr/sbin/postfix newaliases_path = /usr/bin/newaliases mailq_path = /usr/bin/mailq setgid_group = postdrop #html_directory = ### 行頭に#をつけてコメントにする #manpage_directory = ### 行頭に#をつけてコメントにする #sample_directory = ### 行頭に#をつけてコメントにする #readme_directory = ### 行頭に#をつけてコメントにする # SMTP AUTH用設定 以下の設定を最後に追加 smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth broken_sasl_auth_clients = yes # 2024-02-06 postfix 2.10以降からメールリレー制限の設定は新設された # smtpd_relay_restrictionsを使用するほうが良いとのことなので変更smtpd_recipient_restrictions = permit_sasl_authenticated reject_unauth_destination permit_auth_destination permit_mynetworkssmtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = $myhostname
メールのリレー制御にsmtpd_relay_restrictionsを使用したほうが良いという理由は下記のページに記載されています。
http://www.postfix.org/SMTPD_ACCESS_README.html
mydomainの設定ついて
mydomainではこのサーバから送信されるメールアドレスのドメイン部分を設定しています。
本手順では下記のように設定しているので、メールアドレスは「user@vpslife.server-memo.net」といったようになります。
mydomain = vpslife.server-memo.net
メールアドレスを「user@server-memo.net」としたい場合は下記のように設定します。
mydomain = server-memo.net
master.cf
サブミッションポート(ポート587)を使用するための設定を行います。
$ sudo cp -p master.cf master.cf_$(date +%Y%m%d-%H%M%S) $ sudo vi master.cf
submissionポートに関する設定の行頭についている、「#」を削除して設定を有効化させます。
smtpd_recipient_restrictionsの設定部分には、permit_sasl_authenticated,rejectの設定も追加します。
submission inet n - y - - smtpd -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
「-o」の前には空白が必要
「-o」の前には空白が必要ですので、行頭の「#」を削除する際にはその後にある空白部分を削除しないように注意してください。
設定反映
postfix check コマンドでmain.cfの書式に間違いが無いかの確認をします。
ただし、このコマンドで確認できるのは書式に間違いが無いかだけなので、設定内容については確認をすることができませんので注意してください。
$ sudo postfix check
warning: symlink leaves directory: /etc/postfix/./makedefs.out
Ubuntu Server 22.04 LTSでは発生しないのですが、Ubuntu Server 20.04 LTSでは下記のwarningが発生しますが、これは無視して構いません。
postfix/postfix-script: warning: symlink leaves directory: /etc/postfix/./makedefs.out
newaliases
aliasが参照するためのデーベースファイル/etc/aliases.dbをnewaliasesコマンドで作成します。
これは、データベースが存在しない初回のみ実行します。
$ sudo newaliases
ちなみに、/etc/aliasesの編集を行った場合もnewaliasesコマンドでデータベースファイル/etc/aliases.dbの更新を行う必要があります。
Postfix再起動
postfixを再起動させて設定の反映を行います。
$ sudo systemctl restart postfix
Dovecot設定
Dovecotの設定を以下のファイルに行っていきます。
- /etc/dovecot/dovecot.conf
- /etc/dovecot/conf.d/10-auth.conf
- /etc/dovecot/conf.d/10-mail.conf
- /etc/dovecot/conf.d/10-master.conf
- /etc/dovecot/conf.d/10-ssl.conf
dovecot.conf
$ cd /etc/dovecot/ $ sudo cp -p dovecot.conf dovecot.conf_$(date +%Y%m%d-%H%M%S) $ sudo vi dovecot.conf
設定内容
DovecotにIPv4(*)とIPv6(::)で接続できるように、「#listen = *, ::」の行頭の「#」を削除して設定を有効化します。
#listen = *, :: # 変更前 listen = *, :: # 変更後
どちらか一方だけ接続させたい場合は、接続させたい方だけ設定します。
10-auth.conf
$ cd conf.d/ $ sudo cp -p 10-auth.conf 10-auth.conf_$(date +%Y%m%d-%H%M%S) $ sudo vi 10-auth.conf
設定内容
平文(暗号化なし)でのログインを許可します。
#disable_plaintext_auth = yes # 変更前 disable_plaintext_auth = no # 変更後 #auth_mechanisms = plain # 変更前 auth_mechanisms = plain login # 変更後
10-mail.conf
$ sudo cp -p 10-mail.conf 10-mail.conf_$(date +%Y%m%d-%H%M%S) $ sudo vi 10-mail.conf
設定内容
メールデータが保存されている場所を、ユーザのホームディレクトリにあるMaildirディレクトリに設定します。
mail_location = mbox:~/mail:INBOX=/var/mail/%u # 変更前 mail_location = maildir:~/Maildir # 変更後
10-master.conf
$ sudo cp -p 10-master.conf 10-master.conf_$(date +%Y%m%d-%H%M%S) $ sudo vi 10-master.conf
設定内容
smtp authについての設定を行います。
### 変更前 # Postfix smtp-auth # unix_listener /var/spool/postfix/private/auth { # mode = 0666 #} ### 変更後 # Postfix smtp-auth unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix }
10-ssl.conf
$ sudo cp -p 10-ssl.conf 10-ssl.conf_$(date +%Y%m%d-%H%M%S) $ sudo vi 10-ssl.conf
設定内容
sslによる通信暗号化を行わない設定に変更します。
ssl = yes # 変更前 ssl = no # 変更後
設定反映
Dovecotを再起動して設定の反映を行います。
$ sudo systemctl restart dovecot
Thunderbird(メールクライアント)の設定
今回構築したメールサーバの環境で、メールを送受信するためのメールクライアントの設定例として、Thunderbirdでメールアカウントを追加する手順を説明します。
Thunderbirdのダウンロードはこちらからできます。
https://www.thunderbird.net/ja/
メールアカウント追加
Thunderbirdを起動した後に「ファイル」-「新規作成」-「既存のメールアカウント」と選択します。
既存のメールアドレスのセットアップ画面が表示されるので、「あなたのお名前」「メールアドレス」「パスワードを入力」を入力し、手動設定をクリックします。
※手動設定は最初は表示されていませんが、「あなたのお名前」と「メールアドレス」を入力すると表示されます。
受信サーバ設定
プロトコルにはIMAPとPOP3のどちらかを選択します。
IMAPの場合
- プロトコル:IMAP
- ホスト名:メールサーバ名
- ポート番号:143
- 接続の保護:自動検出
- 認証方式:自動検出
- ユーザ名:ユーザ名
POP3の場合
- プロトコル:POP3
- ホスト名:メールサーバ名
- ポート番号:110
- 接続の保護:自動検出
- 認証方式:自動検出
- ユーザ名:ユーザ名
送信サーバ設定
- ホスト名:メールサーバ名
- ポート番号:587
- 接続の保護:自動検出
- 認証方式:自動検出
- ユーザ名:ユーザ名
ポート番号について
一般的なISPはスパムメール対策であるOutbound Port25 Blocking(OP25B)の設定がされていてるため、送信メールサーバ(Postfix)への接続は、サブミッションポート(587番ポート)を使用することになります。
通常のSMTP(25番ポート)が使用できるなら、そちらのポートを指定してもよいです。
設定の確認
設定が完了したら、再テストをクリックします。
メールアカウントの設定に間違いがなければ、「次のアカウント設定が、指定サーバーを調べることによってみつかりました」と表示されますので、完了をクリックします。
警告画面が表示されます
今回の構築したPostfix + SMTP AUTH + Dovecotの環境は、メールクライアントとメールサーバ間の通信を暗号化していないので警告画面が表示されます。
接続する上での危険性を理解しましたにチェックをいれて、確認をクリックします。
これでメーラーの設定は完了です。
コメント