サイオステクノロジーの小川です。研修でメールサーバを構築したのでそれについて執筆したいと思います。
今回はSMTP/POP3 over SSLを利用したメールを送受信できるメールサーバをAzure VMで構築しました。
OS環境 | Cent OS 7.5 |
使用ソフトウェア | バージョン |
postfix | 2.10.1 |
dovecot | 2.2.36 |
また、このメールサーバのMXレコードはDNSサーバに登録済みであるとします。以下は今回の概要図です。
SMTPサーバの構築
まずはSMTPサーバを構築するために、postfixをインストールします。
$ sudo yum install postfix
postfixの設定ファイルである/etc/postfix/main.cfを編集していきます。
メールサーバの名前を設定します。
myhostname = mainmx.example.com
メールを受信するドメインの指定をします。
Mydomain = example.com
すべての送信元からのメールを受け付ける指定をします。
inet_interfaces = all
受信アドレスの指定をします。デフォルトの設定に$mydomainを追加します。これにより、メールのループを防ぎます。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
送信先のアドレス検索に内部ネットワーク内に既に構築したDNSサーバを参照する設定を行います。
smtp_host_lookup = dns
ここからTLSの設定をしていきます。
smtp_tls_security_level = may
証明書を発行し、そのパスを記載します。
smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.crt smtpd_tls_key_file = /etc/pki/tls/private/postfix.key
TLSの詳細を設定をします。
smtpd_tls_session_cache_timeout = 3600s smtpd_tls_received_header = yes smtpd_tls_loglevel = 1 smtp_tls_loglevel = 1
次に、/etc/postfix/master.confを編集します。
以下をコメントアウトします。
smtp inet n - n - - smtpd
SMTP over SSL/TLSポートに関する設定で以下のコメントアウトを外します。
smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
postfixを再起動して設定を反映させます。
pop3サーバの構築
今回はメールの読み出しを行うサーバとしてPOPサーバを利用します。
dovecotをインストールします。
$sudo yum install dovecot
/etc/dovecot/dovecot.confでプロトコルの設定を行います。
protocols = pop3
次に/etc/dovecot/conf.d配下のファイルを編集していきます。
10-master.confでdovecotのポートを設定します。
service pop3-login{ inet_listener pop3{ port = 0 ←0を指定することで暗号化していないものは受信できないようにしています。 } inet_listener pop3s{ port = 995 ssl = yes } }
10-ssl.confでsslの利用設定をします。
ssl = required
証明書を発行しパスを指定します。(この時に<をつけ忘れるとエラーが起こります。)
ssl_cert = </etc/pki/tls/certs/dovecot.crt ssl_key = </etc/pki/tls/private/dovecot.key
10-auth.confを編集しプレインテキスト認証を許可します。
disable_plaintext_auth = no
10-mail.confを編集しMaildirの設定をします。
Mail_location = maildir.~/Maildir
Dovecotを再起動し、設定を反映します。
これでSMTP over SSL/TLS, POP3 over SSL/TLSを用いたメールサーバができました。
実際にメールの送受信する
Thunderbirdを利用してメールユーザのsenderからreciever宛にメールを送信してみます。
reciever側で受信することができました。
メールの送受信のログを確認してみます。
赤線部分のログで送受信にSMTP,POP3 over SSL/TLSが適用されていることが確認できます。
Azureでメール送信を実運用する場合は、SendGridが必要になります。次のブログを参考にしてください。 https://tech-lab.sios.jp/archives/2401
最後に
研修でwebサーバ、DNSサーバ、メールサーバを構築しましたが、はじめはサーバの構造や周りのサーバの連携の仕組みなどを理解するのが大変でした。そこを理解していないと通信先のIPやプロトコルの指定がうまくいかずにとても苦労しました。しかしこれらのサーバの構築やネットワークの仕組み理解を通して、centosやネットワークについてなどの理解をすることができました。
研修で得た知識をこれから生かせるように業務に励みたいと思います。