メールサーバの構築

2021年9月23日

動作確認済みシステム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です。