メールサーバの構築
動作確認済みシステムDebian 11
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 = digitalmania.info
# コメント解除
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をyesに変更
START=yes
# MECHANISMSが"pam"になっていることを確認
MECHANISMS="pam"
# OPTIONSを変更
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の設定を行います。
vi /etc/dovecot/dovecot.conf
# コメント解除
listen = *, ::
vi /etc/dovecot/conf.d/10-mail.conf
# mail_locationを変更
mail_location = maildir:~/Maildir
vi /etc/dovecot/conf.d/10-auth.conf
# 追記
disable_plaintext_auth = no
# 追記
auth_mechanisms = plain login
vi /etc/dovecot/conf.d/10-master.conf
service imap-login {
inet_listener imap {
#コメント解除
port = 143
}
}
service auth {
#コメント解除し、userとgroupを追記
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}
vi /etc/dovecot/conf.d/15-mailboxes.conf
namespace inbox {
# These mailboxes are widely used and could perhaps be created automatically:
mailbox Drafts {
special_use = \Drafts
# Draftsフォルダを自動的に作成・購読させるようにする
auto = subscribe
}
mailbox Junk {
special_use = \Junk
# Junkフォルダを自動的に作成・購読させるようにする
auto = subscribe
}
mailbox Trash {
special_use = \Trash
# Trashフォルダを自動的に作成・購読させるようにする
auto = subscribe
}
}
各種サービスを起動か再起動します。
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です。