メールサーバの構築
動作確認済みシステム 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です。