メールサーバの構築

動作確認済みシステム Debian 12

IMAPサーバのdovecot、SMTPサーバのpostfix、SASL認証のsasl2-binをインストールします。

apt install dovecot-core dovecot-imapd postfix sasl2-bin

postfixのインストール時、「Postfix Configuration」という見出しで、構成設定の選択を求められますが、後で手動で設定しますので、ここでは「No configuration」を選択します。

設定ファイルのサンプルをコピーして、編集します。

cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cf
vi /etc/postfix/main.cf
mail_owner = postfix

# ホスト名指定
myhostname = mail.example.com

# ドメイン名指定
mydomain = example.com

myorigin = $mydomain

inet_interfaces = all

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

local_recipient_maps = unix:passwd.byname $alias_maps

alias_maps = hash:/etc/aliases

alias_database = hash:/etc/aliases

home_mailbox = Maildir/

# Telnet等でアクセスした際にpostfixのバージョン情報が表示されるのはセキュリティ上好ましくないため
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 =

# IPv6もlistenする場合はallに変更
inet_protocols = ipv4

# SMTP-Auth用の設定
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination

# 送受信メールのサイズ制限。例は10MB。
message_size_limit = 10485760

master.cfでSubmissionポートの設定を行います。

vi /etc/postfix/master.cf
submission inet n       -       y       -       -       smtpd
-o syslog_name=postfix/submission
-o smtpd_sasl_auth_enable=yes
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

SMTH-Authの設定を行います。

vi /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

saslauthdの設定を行い、自動で開始されるようにします。

vi /etc/default/saslauthd

STARTとOPTIONSの値を変更し、MECHANISMSが"pam"になっていることを確認します。

START=yes

MECHANISMS="pam"

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

OPTIONSで指定したディレクトリを作成します。

mkdir -p /var/spool/postfix/var/run/saslauthd

postfixユーザをsaslグループに追加します。

adduser postfix sasl

ユーザー作成時に一緒に作成される必要なフォルダを/etc/skel/以下に作成します。

mkdir /etc/skel/Maildir
mkdir /etc/skel/Maildir/cur
mkdir /etc/skel/Maildir/new
mkdir /etc/skel/Maildir/tmp
chmod 700 -R /etc/skel/Maildir

既存ユーザーのホームディレクトリにも、Maildirディレクトリを作成します。

cd /home/hogehoge/
mkdir Maildir
mkdir Maildir/cur
mkdir Maildir/new
mkdir Maildir/tmp
chmod 700 -R Maildir
chown hogehoge. -R Maildir

/etc/aliases.dbを作成するために、newaliasesコマンドを実行します。

newaliases

dovecotの設定を行います。

dovecot.confを編集します。

vi /etc/dovecot/dovecot.conf

listenの行をコメント解除します。

listen = *, ::

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

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

メールボックスの形式と場所を指定します。

mail_location = maildir:~/Maildir

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

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

プレーンテキスト認証を許可し、loginでの認証を許可します。
また、ユーザ名からドメイン部分を削除して認証できるようにします。

disable_plaintext_auth = no

auth_username_format = %n

auth_mechanisms = plain login

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

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

IMAPを許可し、SMTP認証ができるようにします。

service imap-login {
inet_listener imap {
port = 143
}
}

service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}

15-mailboxes.confを編集します。

vi /etc/dovecot/conf.d/15-mailboxes.conf

Draftsフォルダ、Junkフォルダ、Trashフォルダ、Sentフォルダを自動的に作成・購読させるようにします。

namespace inbox {
# These mailboxes are widely used and could perhaps be created automatically:
mailbox Drafts {
special_use = \Drafts
auto = subscribe
}
mailbox Junk {
special_use = \Junk
auto = subscribe
}
mailbox Trash {
special_use = \Trash
auto = subscribe
}
mailbox Sent {
special_use = \Sent
auto = subscribe
}
# mailbox "Sent Messages" {
# special_use = \Sent
# }
}

各種サービスを起動か再起動します。

systemctl restart saslauthd.service
systemctl start postfix.service
systemctl restart dovecot.service

ファイアウォールの設定を行い、必要なポートを許可するようにします。

ufw allow 'Dovecot IMAP'
ufw allow 'Postfix'
ufw allow 'Postfix Submission'
ufw reload

メーラーで送受信ができていることが確認できればOKです。