Ubuntu16.04LTSによる簡易メールサーバーの構築(基本、SMTP認証は取り敢えず平文のパスワードを使用)について、サイト管理者が試したことを以下に記します。postfixのバージョンは3.1.0でした。
Postfix(メール配信サーバー), Dovecot(メール受信サーバー)が基本ですが、SMTP認証のためsasslauthdが必要になります。そこで、次のようにインストールします。
この時、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を使っている場合などは、適宜変更する必要があります。
①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行目のコメントを外しただけです。