Postfix + SMTP-AUTH + Dovecotでメールサーバを構築

Postfix + SMTP-AUTH + Dovecotでメールサーバを構築する方法です。

今回は基本的な構成で構築を行っていきます。

構築後の動作に問題が発生しないことを確認した後に、通信の暗号化や迷惑メール対策などの設定を行っていきます。

構築環境

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レコード
  • SPFレコード

逆引き(PTR)レコードについては、VPSでは設定することができない場合が多いと思いますのが、可能ならば設定しておきましょう。

DNSの設定方法はドメイン業者やDNSサーバごとに異なるため省略します。

ファイアウォール設定

通常の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
home_mailbox = Maildir/
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

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

smtpd_recipient_restrictions =
    permit_sasl_authenticated
    reject_unauth_destination
    permit_auth_destination
    permit_mynetworks
        
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname

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の環境は、メールクライアントとメールサーバ間の通信を暗号化していないので警告画面が表示されます。

接続する上での危険性を理解しましたにチェックをいれて、確認をクリックします。

これでメーラーの設定は完了です。

コメント

タイトルとURLをコピーしました