【Ubuntu】メールサーバー構築

さくらVPS Ubuntu環境でメールサーバーを構築します。メールの送受信をできるようにします。

PostfixとDovecot を使用します。

やったことを備忘録として残しておきます。

やりたいこと
  • さくらVPS Ubuntu環境でメールサーバーを構築
  • SSL/TLS対応
  • Gmailにも送信する
  • Outlook からメールの送受信できるようにする
開発環境
  • さくらVPS
  • Ubuntu22.04

以下のサイトを参考にしました。

Qiita
Ubuntuでメールサーバー構築 - Qiita Ubuntuでメールサーバーを構築した際の手順です。送信サーバーとしてPostfix、受信サーバーとしてdovecotを使用します。構築前に知っといたほうがいいメールの知識メールを...
VPS Life
【Ubuntu Server 22.04】Postfix + SMTP-AUTH + Dovecotでメールサーバを構築 Postfix + SMTP-AUTH + Dovecotでメールサーバを構築する方法です。 今回は基本的な構成で構築を行っていきます。 構築後の動作に問題が発生しないことを確認した後に、通...
目次

さくらVPS 設定

ポート設定

まずは、さくらVPSでポートの設定をします。これをしないと、VPS側でメールがはじかれてしまいます。

VPSのポート設定は、見落としがちなので注意。

パケットフィルターの設定でメールを許可します。

SPFレコードの設定

こちらのガイドラインから、Gmailに送信するための設定を行います。SPFレコードを追加します。

1日5000件以上メールを送ることは現状想定していません。SPFレコードの設定のみ行います。

さくらVPSのサイトを参考に行います。

登録済みゾーンにおいて、以下のレコードを追加します。

エントリ名タイプデータ
@TXTv=spf1 a:www<ホスト名>.sakura.ne.jp mx ~all

Postfixのインストール

インストール

まずは、Postfixをインストールします。

$ sudo apt install postfix

インストール中に以下の画面が表示されました。ここでは、No configuration を選択します。

↓の画面でOKを選択します。

「→」「↑」「↓」「Esc」「Enter」を使って操作します。

しばらくすると、インストールが完了します。

設定ファイル

/etc/postfix/main.cf を変更します。インストール後は存在しません。なので、同ディレクトリのmain.cf.protoをコピーします。

$ cd /etc/postfix
$ sudo cp main.cf.proto main.cf

main.cf を以下のように設定します。ドメイン名は、お名前.comで取得したものを使用しました。Apache構築時に取得した

mail_owner = postfix
myhostname = mail.ドメイン名
mydomain = ドメイン名
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
local_recipient_maps = unix:passwd.byname $alias_maps
mynetworks_style = subnet
mynetworks = 127.0.0.0/8
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
home_mailbox = Maildir/
smtpd_banner = $myhostname ESMTP
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop

smtp_tls_security_level = may
smtp_tls_loglevel = 1
smtp_tls_note_starttls_offer = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/ドメイン名/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/ドメイン名/privkey.pem
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_loglevel = 1

mua_client_restrictions =
mua_helo_restrictions =
mua_sender_restrictions =

master.cf を以下のように編集します。

submission inet n    -    n    -    -    smtpd // コメントアウト
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_auth_only=yes
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=$mua_client_restrictions
  -o smtpd_helo_restrictions=$mua_helo_restrictions
  -o smtpd_sender_restrictions=$mua_sender_restrictions
  -o smtpd_recipient_restrictions=
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_reject_unlisted_recipient=no
  -o smtpd_client_restrictions=$mua_client_restrictions
  -o smtpd_helo_restrictions=$mua_helo_restrictions
  -o smtpd_sender_restrictions=$mua_sender_restrictions
  -o smtpd_recipient_restrictions=
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

再起動

Postfixの設定チェックをします。

$ sudo postfix check

メールエイリアスを再構築します。

$ sudo newaliases

postfixの再起動をします。

$ sudo systemctl restart postfix

Dovecot のインストール

インストール

次に、Dovecotをインストールします。

$ sudo apt install dovecot-common dovecot-imapd dovecot-pop3d

設定ファイル

dovecot.conf の設定を変更します。

$ sudo vi /etc/dovecot/dovecot.conf

listen = *

10-auth.confの設定をします。

Outlookでログインするには、auth_username_format = %n の設定が必要です。この設定でログインするとき、@以降が消されます。Outlookから接続するとき、@以降のドメイン名も付随してログインしようとします。

imap-login: Disconnected: Connection closed (auth failed, 1 attempts in 4 secs): user=<XXX@YYY>, method=PLAIN, 

のようにuser に@以降のドメインが付随しています。これだとログインできないので、消す必要があります

こちらを参考にしました。

$ sudo vi /etc/dovecot/conf.d/10-auth.conf

# 10行目:コメント解除し変更(プレーンテキスト認証も許可する)
disable_plaintext_auth = no

# 100行目:追記
auth_mechanisms = login plain  # 

auth_username_format = %n

10-mail.conf を編集します。

$ sudo vi /etc/dovecot/conf.d/10-mail.conf

# 30行目:Maildir形式に変更
mail_location = maildir:~/Maildir

10-master.conf を編集します。imap、pop3を無効にし、imaps、pos3sを有効にします。

$ sudo vi /etc/dovecot/conf.d/10-master.conf

service imap-login {
 inet_listener imap {
    port = 0
 }
 inet_listener imaps {
    port = 993
    ssl = yes
 }
}
service pop3-login {
 inet_listener pop3 {
    port = 0
    port = 110
 }
 inet_listener pop3s {
    port = 995
    ssl = yes
 }
}

# 96-98行目:コメント解除し追記
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
}

10-ssl.conf を編集します。

$ sudo vi /etc/dovecot/conf.d/10-ssl.conf

ssl = yes

ssl_cert = </etc/letsencrypt/live/ドメイン名/fullchain.pem
ssl_key = </etc/letsencrypt/live/ドメイン名/privkey.pem

再起動

以下のコマンドでdovecotを再起動します。

$ sudo systemctl restart dovecot

送受信テスト

mail コマンドで送受信テストを行います。

$ sudo apt install mailutils

送信テスト

mailutils で送信テストをします。

$ mail 送信先のアドレス
CC :
Subject : Test
testtest

ローカルアドレス、gmailアドレスなどに送信できることを確認します。

受信テスト

自分宛てのメールは、Maildir/newディレクトリに保存されます。この中のファイルを見ることでメールの情報を確認します。

$ cd ~/Maildir/new
$ cat aaaaaa # aaaaaa にはファイル名

ユーザー追加

メールのユーザーを追加します。

Ubuntuのユーザーをそのまま追加します。また、パスワードも設定します。このユーザーがそのままメールのユーザーになります。

$ adduser ユーザー名

Outlookログイン

Outlookのメールアドレス追加において、メールアドレスは先ほど追加したユーザー名 + @ + postfixで設定したドメイン名 とします。

↓の画面が出てきたらIMAPを選択します。

パスワードはユーザー追加で設定したものを入力します。これで、ログインできるはずです。できないなら、エラーログを頼りに設定してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次