monmon.jpサーバからメールも送れるようにしていきます。
いつもは、安定性や不着リスクを軽減するため、Google Workspace(旧Gsuite、すぐ名前変わりますねw)にメールサーバは切り出してしまいますが、今回は、趣味の世界。コストをかけないことを最優先に、立ち上げたばかりの、Ubuntuサーバを使い、メールサーバを立ち上げます。
とはいえ、久しぶりのメールサーバと思いきや、Postfix、Dovecotの組み合わせが、まだまだ現役でしたので、そちらを導入することにします。そのうち、必要であればマルチドメインにも対応させます。
Contents
まずは、postfixからインストール。
sudo apt install postfix
・メール設定のタイプを選択
Internet Site かな。
・System mail name ……メールアドレスのドメイン部のヒアリングですね。
もちろん。monmon.jp。
で、インストールで完了です。
次に、Devecotもインストールしておきます。
sudo apt install dovecot-common dovecot-imapd dovecot-pop3d
で、依存関係のあるライブラリもあわせてインストール完了です。
sudo systemctl status postfix
sudo systemctl status dovecot
それぞれのコマンドで起動確認ができたので、次に各種設定を行っていきます。
基本的な設定は、
/etc/postfix/main.cf
で行いますので、こちらを直接いじります。
変更箇所はこんな感じ。
#smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_banner = $myhostname ESMTP
# TLS parameters
#smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_cert_file = /etc/letsencrypt/live/monmon.jp/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/monmon.jp/privkey.pem
以下の追加設定を末尾に追加します。
#Maildir形式を使います
home_mailbox= Maildir/
#内部ユーザーを隠します
disable_vrfy_command = yes
#SASL認証の設定も諸々有効にしておきます。
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
smtpd_use_tls = yes
次のファイルにもSMTP認証の設定を。
sudo vi /etc/postfix/master.cf
サブミッションポートは利用せずに、ポート465のSSL通信を用いるため、以下のコメントを外します。
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
設定が終わったら再起動です。
sudo systemctl restart postfix
Maildir形式にしたのでディレクトリを作成します。
新規ユーザー作成時にメールボックスが作られるように。
sudo mkdir /etc/skel/Maildir
sudo chmod 700 /etc/skel/Maildir
既存ユーザーもこんな感じでフォルダを作成し、パーミッションとオーナーを変更します。
sudo mkdir /home/monmon/Maildir
sudo chmod 700 /home/monmon/Maildir
sudo chown monmon:monmon /home/monmon/Maildir
ふぅ、長い(笑)
次はDovecotの設定です。
まずは、プロトコルの設定からと思ったのですが、
/etc/dovecot/dovecot.conf
から、protocolsがパラメータ指定が無くなっており探しました。今は、こちらに切り出されているんですね。
/usr/share/dovecot/protocols.d/
今回必要な、
imapd.protocol
pop3d.protocol
がそれぞれ有効になっていたのでこの設定はスルーし、SASLの設定に移ります。
sudo vi /etc/dovecot/conf.d/10-master.conf
非セキュアな通信はport0番として設定を無効化します。
service imap-login {
inet_listener imap {
#port = 143
port = 0
}
inet_listener imaps {
#port = 993
#ssl = yes
port = 993
ssl = yes
}
}
service pop3-login {
inet_listener pop3 {
#port = 110
port = 0
}
inet_listener pop3s {
#port = 995
#ssl = yes
port = 995
ssl = yes
}
}
DovecotのSASL認証のファイルを指定します。
sudo vi /etc/dovecot/conf.d/10-master.conf
以下の設定を修正します。
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
証明書の設定。
sudo vi /etc/dovecot/conf.d/10-ssl.conf
証明書ファイルを指定します。
#ssl_cert = </etc/dovecot/private/dovecot.pem
#ssl_key = </etc/dovecot/private/dovecot.key
ssl_cert = </etc/letsencrypt/live/monmon.jp/fullchain.pem
ssl_key = </etc/letsencrypt/live/monmon.jp/privkey.pem
色々使える、Let’s Encrypt!
こちらも、メールボックスをMaildir形式に変更。
sudo vi /etc/dovecot/conf.d/10-mail.conf
#mail_location = mbox:~/mail:INBOX=/var/mail/%u
mail_location = maildir:~/Maildir
最後にdovecotも再起動
sudo systemctl restart dovecot
メールアカウントの稼働
あとは、送受信が必要なユーザーにパスワードを設定し、適当なメーラーでSSLを使って、送受信するだけです。
でも、このままのドノーマルなバニラ設定だと、迷惑メールとしてフィルタリングされてしまう可能性も高いので、最低限、SPFレコード、DKIMも追加していきます。