2019年9月18日
  • Just another WordPress site

Ubuntu16.04LTSによる簡易メールサーバーの構築―【暫定版】

Ubuntu16.04LTSによる簡易メールサーバーの構築(基本、SMTP認証は取り敢えず平文のパスワードを使用)について、サイト管理者が試したことを以下に記します。postfixのバージョンは3.1.0でした。

Postfix(メール配信サーバー), Dovecot(メール受信サーバー)が基本ですが、SMTP認証のためsasslauthdが必要になります。そこで、次のようにインストールします。

postfix-logo

sudo apt-get install postfix sasl2-bin dovecot

この時、postfix無設定にするかインターネット用に設定するかなどを聞かれますが、インターネット用のmain.cfはコメントがなく、無味乾燥でよく分かりません。従って、「何も設定しない」を選択してインストールします。postfixの各種設定ファイルは/usr/share/postfixに入りますが、この中のpostfix.cf.dist, master.cf.distを/etc/postfixにpostfix.cf, master.cfとしてコピーします。基本的に、ドメイン名、ホスト名を管理サーバーのドメイン名にし、コメント(#)を取るだけです。最後に、SMTP認証のための設定を追加します。ここでは、例としてメールサーバーのホスト名をmail.it-ishin.com, ドメイン名をit-ishin.com、内部ネットワークを192.168.1.0/24としておきます。VPSを使っている場合などは、適宜変更する必要があります。

relay_settings01

①postfix.cfの設定

94行目
#myhostname = host.domain.tld → myhostname = mail.it-ishin.com

102行目
#mydomain = domain.tld → mydomain = it-ishin.com

123行目
#myorigin = $mydomain→myorigin = $mydomain

すべてのネットワークからの接続を待ち受けるため。137行目
#inet_interfaces = all → inet_interfaces = all

ipv4のプロトコルのみ受け付ける場合は、最後の684行をそのままにしておきます。
inet_protocols = ipv4 → inet_protocols = ipv4

メールの配送を許可する宛先のドメイン名を指定します。メールの宛先にメールサーバーのドメイン名が含まれていれば、このメールサーバーでメールを受け取ります。185行目のコメンを取ります。
#mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain → mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

内部ネットワークの設定。内部ネットワーク内でのメールの送受信が可能になります。ただし、サイト管理者の場合は内部ネットワークでのメールの送受信は必要ないので、そのままにしています。287行目
#mynetworks = 168.100.189.0/28, 127.0.0.0/8 → mynetworks = 168.100.1.0/24, 127.0.0.0/8

SMTPの220応答コードの後に出力されるバナー情報(ホスト名やサーバーソフト名などのサーバー情報)の出力。デフォルトではコメントが外されている(アンコメント)なので、そのままにしておきます。576行目。
smtpd_banner = $myhostname ESMTP → smtpd_banner = $myhostname ESMTP

最後に、smtpd_recipient_restrictions(他のSMTPサーバーからの受信したメールの配送の設定)とメールのサイズ設定、とSMTP認証を最終行に追加します。
# 最終行へ追記:他のSMTPサーバーから受信したメールの配送設定、送受信メールサイズを10Mに制限
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
message_size_limit = 10485760
# メールボックスサイズを1Gに制限
mailbox_size_limit = 1073741824
# 以下SMTP-Auth用
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname

以上がmain.cfの基本設定。詳細なコメントが記載されているので、おいおい読んでいけば良いと思います。

②master.cfの設定
これは、ポート25が禁じられている場合の設定で、次のようにすれば良いでしょう。 オリジナルの設定

# =========================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (no)    (never) (100)
# =========================
smtp      inet  n       -       y       -       -       smtpd
#smtp      inet  n       -       y       -       1       postscreen
#smtpd     pass  -       -       y       -       -       smtpd
#dnsblog   unix  -       -       y       -       0       dnsblog
#tlsproxy  unix  -       -       y       -       0       tlsproxy
#submission inet n       -       y       -       -       smtpd
#  -o syslog_name=postfix/submission
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING

これをsubmissionポート可能にするため、次のように一部のコメントを外します。

# =========================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (no)    (never) (100)
# =========================
smtp      inet  n       -       y       -       -       smtpd
#smtp      inet  n       -       y       -       1       postscreen
#smtpd     pass  -       -       y       -       -       smtpd
#dnsblog   unix  -       -       y       -       0       dnsblog
#tlsproxy  unix  -       -       y       -       0       tlsproxy
submission inet n       -       y       -       -       smtpd
#  -o syslog_name=postfix/submission
#  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes  ## こちらの行コメント外す
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING

20行目のコメントを外しただけです。

コメントを残す

CAPTCHA