dovecotでPOP over SSL

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

サイオステクノロジー技術部 武井です。開発検証のためにメールを受信できる環境が必要になり、dovecotでPOP over SSLしてみました。ちょっとハマったので、ここにその記録を残しておきたいと思います。CentOS7.4を前提にしております。

Postfixのインストール

まず、Postfixのインストールです。(本記事の設定は、開発検証での利用を目的とするため、最低限動くための設定にしています。実運用する際は適宜セキュリティの設定をして下さい。)

まずPostfixをインストールします。

# yum install postfix

ここからは、設定ファイル/etc/postfix/main.cfを編集します。

下記の行をコメントアウトして有効にして下さい。MailDir形式を有効にします。

home_mailbox = Maildir/

受信できるメールドメインを設定します。以下の内容を追加して下さい。

mydomain = example.com

全ての送信元からのメールを許可します。

inet_interfaces = all

先に定義したドメインでのメールを受信可能にするため、以下の設定をコメントアウトして有効にします。

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

Postfixを再起動して、設定を反映します。

# systemctl restart postfix

dovecotのインストール

dovecotをインストールします。

# yum install dovecot

/etc/dovecot/conf.d/10-auth.confを編集します。以下の設定をして、プレインテキスト認証を有効にします。

disable_plaintext_auth = no

/etc/dovecot/conf.d/10-mail.confを編集します。以下の設定をして、Maildir形式での受信を可能にします。

mail_location = maildir:~/Maildir

次にSSL証明書の用意です。

証明書(x.509形式のbase64エンコード)ファイルを以下の形式で作成します。サーバー証明書と、サーバー証明書の検証に使う中間証明書を必要な分だけ、以下の順序で連結して1つのファイルにします。

-----BEGIN CERTIFICATE-----
サーバー証明書の記述内容
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
中間証明書1の記述内容
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
中間証明書2の記述内容
-----END CERTIFICATE-----

次に秘密鍵を以下の形式で作成します。

-----BEGIN RSA PRIVATE KEY-----
秘密鍵の記述内容
-----END RSA PRIVATE KEY----- 

/etc/dovecot/conf.d/10-ssl.confを編集します。以下の設定をして、SSLを有効にします。/etc/pki/certs/dovecot.crtは先程作成した証明書ファイル、/etc/pki/private/dovecot.keyは先程作成した秘密鍵のファイルです。注意が必要なのは指定するパスの頭に「<」が必要なことです。これを忘れて、しばらくエラーで悩まされました(´・ω・`)

ssl = required
ssl_cert = </etc/pki/tls/certs/dovecot.crt
ssl_key = </etc/pki/private/dovecot.key

/etc/dovecot/conf.d/10-master.confを編集します。以下の設定をして、SSLを有効にします。以下の設定を行い、POP over SSLを有効にします。

service pop3-login {
  inet_listener pop3 {
    #port = 110
  }
  inet_listener pop3s {
    port = 995 # これをコメントアウト
    ssl = yes # これをコメントアウト
  }
}

これで設定は完了です。dovecotを再起動します。

# systemctl restart dovecot

動作確認

opensslコマンドを使って動作確認を行います。メールサーバーのホスト名は、mail.example.comとします。

# openssl s_client -connect mail.example.com:995
CONNECTED(00000003)
・・・
・・・
+OK Dovecot ready.
USER ntakei ← ユーザー名を入力します。
+OK
PASS password ← パスワードを入力します。
+OK Logged in.
LIST ← メールの一覧を取得します。
+OK 2 messages:
1 322
2 322
.
retr 1 ← 指定した番号のメールの内容を表示します。
+OK 322 octets
Return-Path: <user@foo.or.jp>
X-Original-To: ntakei@example.com
Delivered-To: ntakei@example.com
Received: from example.com (unknown [10.8.9.6])
    by smtp.example.com (Postfix) with SMTP id E2D6E2411
    for <ntakei@example.com>; Tue,  3 Apr 2018 04:20:45 +0000 (UTC)
From: user@example.com
Subjet: test

Hello world.
.

(`・ω・´)シャキーン

できました。

もう一つハマりどころなのですが、opensslコマンドで動作確認した場合、メールを取り出すコマンド「RETR」が最初うまく動作しませんでした。opensslコマンドの仕様で「R」から始めるコマンドは、SSLのネゴシエーションを行うと決まっているそうです。なので、小文字で「retr」とやると、うまくいきました。(+o+)

アバター画像
About 武井 宜行 269 Articles
Microsoft MVP for Azure🌟「最新の技術を楽しくわかりやすく」をモットーにブログtech-lab.sios.jp)で情報を発信🎤得意分野はAzureによるクラウドネイティブな開発(Javaなど)💻「世界一わかりみの深いクラウドネイティブ on Azure」の動画を配信中📹 https://t.co/OMaJYb3pRN
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる