質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.52%

Postfix + Dovecot によるメールサーバ構築時の設定などについて

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,223

tk_flavor

score 102

お世話になっております

現在、postfixとDovecotを利用して
稼動しているSTARTTLS?とpop3s?のメールサーバを新規作り変え中です
設定した人物はすでに退職しており、設定した意図などは誰もわかっていません。

smtp自体は内部LANのAPIサーバから当該メールサーバに25ポート接続で
各アカウントのMaildirディレクトリにメール送信します。
外部のユーザのメールソフトでpop3s(pop3)接続でメールを取りに来る仕組みで動いています。

現在稼動しているサーバ設定情報を洗い出ししているのですが
設定内容で不透明なところがありますので
下記で質問させてください
冗長ですが、お付き合い頂けますと幸いです。

  • バージョン情報:
postconf mail_version
mail_version = 2.6.6
  • 証明書状態:
[root@test POSTFIX]# openssl s_client -connect localhost:587 -starttls smtp | openssl x509 -noout -dates
depth=0 C = JP, ST = Tokyo, L = ****-ku, O = test_corporation, CN = aaa.test.com, emailAddress = postmaster@aaa.test.com
verify error:num=18:self signed certificate
verify return:1
depth=0 C = JP, ST = Tokyo, L = ****-ku, O = test_corporation, CN = aaa.test.com, emailAddress = postmaster@aaa.test.com
verify error:num=10:certificate has expired
notAfter=Dec 24 08:40:26 2018 GMT
verify return:1
depth=0 C = JP, ST = Tokyo, L = ****-ku, O = test_corporation, CN = aaa.test.com, emailAddress = postmaster@aaa.test.com
notAfter=Dec 24 08:40:26 2018 GMT
verify return:1
250 DSN
notBefore=Dec 26 08:40:26 2008 GMT
notAfter=Dec 24 08:40:26 2018 GMT
  • STARTTLS?とpopsのための各設定
    ■/etc/postfix/main.cf
smtpd_tls_cert_file=/etc/pki/tls/certs/*.pem
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination

smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
content_filter=smtp-amavis:[127.0.0.1]:10024

■/etc/postfix/master.cf

smtp         inet     n            -             n            -             -             smtpd
submission inet n  -             n            -             -             smtpd
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#smtps      inet  n            -           n           -           -           smtpd
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING


■/etc/dovecot/conf.d/10-ssl.conf

ssl_cert = </etc/pki/tls/certs/mail.pem
ssl_key = </etc/pki/tls/certs/mail.pem


■/etc/dovecot/conf.d/10-master.conf

  inet_listener imaps {
    #port = 993
    #ssl = yes


sslが無効になっていますのでpo3sログインは出来ていないのかと思います

■/etc/sasl2/smtpd.conf

pwcheck_method: saslauthd
mech_list: plain login

tls/ssl設定がありましたが 昨年12月で証明書が切れています。 証明書はオレオレの自己証明書のようです

[root@test POSTFIX]# openssl x509 -noout -dates -in /etc/pki/tls/certs/mail.pem
notBefore=Dec 26 08:40:26 2008 GMT
notAfter=Dec 24 08:40:26 2018 GMT

ここから下記、質問事項になります。

質問1.STARTTLSかSMTP over SSL/TLSで稼動しているのかについて

main.cfやmaster.cfには
smtpd_tls_security_levelの設定は入っていませんので
SMTP over SSL/TLSではなく
STARTTLSの設定が有効になっていると考えていいでしょうか
10-master.confで

#ssl = yes 

となっているのでpo3sログインは出来ていない解釈でいいのでしょうか

質問2.STARTTLSで使用するポート情報について

Postfix(SMTP) サーバには STARTTLSの設定が入っているようですが
自己証明書の期限が切れています
確認のためにtelnetコマンドを実行したところ
250-STARTTLS
STARTTLSはサポートされているようです
ですが下記のようにメールサーバ内で稼動しているサービスポートは465ポートは稼動していませんが
587ポートが稼動しています
また、
上位のロードバランサーとfirewall
では465ポートが開放されていますが、587ポートが開放されていません
サーバ内では
STARTTLSの465ポートが稼動していなく、
submissionの587ポートが稼動しています。

この状態ではsmtpは、実質startsslでサービスは動いてはいなく
25ポートで稼動している認識になるのでしょうか

[root@test postfix]# netstat -atlnp|grep 465
tcp            0         0 127.0.0.1:199                0.0.0.0:*                    LISTEN          6465/snmpd 

[root@test postfix]# netstat -atlnp|grep 587
tcp            0         0 0.0.0.0:587                   0.0.0.0:*                    LISTEN          6729/master             
tcp            0         0 :::587                                          :::*                                          LISTEN          6729/master
[root@test POSTFIX]# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 aaa.test.com ESMTP unknown
EHLO aaa.test.com
250-aaa.test.com
250-PIPELINING
250-SIZE 327680000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
[root@test postfix]# telnet localhost 587
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 aaa.example.co.jp ESMTP unknown
EHLO aaa.example.co.jp
250-aaa.example.co.jp
250-PIPELINING
250-SIZE 327680000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

もちろん25ポートは使われています 10025はamavisdポートです

[root@test postfix]# netstat -atlnp|grep 25
tcp            0         0 127.0.0.1:10025                           0.0.0.0:*                    LISTEN          6729/master             
tcp            0         0 0.0.0.0:22                                   0.0.0.0:*                    LISTEN          25945/sshd              
tcp            0         0 0.0.0.0:25                                   0.0.0.0:*                    LISTEN          6484/smtpd 

質問3.証明書が切れている状態でのpop3sログインについて

証明書有効期限が切れている・#ssl = yesの状態で
クライアントユーザが995ポートでpop3sログインが出来ていたと仮定して、
現在の証明書が切れている状態でもユーザ影響が出ないでpop3ログインが出来るものなのでしょうか

tcpdumpで110ポートを見るとpop3での接続が確認出来ます、dovecot: pop3-loginしているようです
現行設定を踏襲するならば、外部のユーザからpops(995)接続させる設定でいいのでしょうか

Oct 28 00:54:56 AAAA1111 postfix/smtpd[30306]: disconnect from unknown[***.***.***.***]
Oct 28 00:54:56 AAAA1111 dovecot: pop3-login: Login: user=<g-after>, method=PLAIN, rip=***.*.***.***, lip=***.***.***.***, mpid=30798, TLS


tcpdumpで995ポートを見るとpop3sでの接続が確認出来ます

17:18:05.260645 IP 1**.***.***.***.43290 > AAAA1111.aaa.test.com.pop3s: Flags [.], ack 1, win 115, options [nop,nop,TS val 2129660067 ecr 1701431993], length 0
17:18:05.260765 IP 1**.***.***.***.43290 > AAAA1111.aaa.test.com.pop3s: Flags [F.], seq 1, ack 1, win 115, options [nop,nop,TS val 2129660068 ecr 1701431993], length 0
17:18:05.261420 IP AAAA1111.aaa.test.com.pop3s > 1**.***.***.***.43290: Flags [.], ack 2, win 114, options [nop,nop,TS val 1701431995 ecr 2129660068], length 0
17:18:05.265431 IP AAAA1111.aaa.test.com.pop3s > 1**.***.***.***.43290: Flags [F.], seq 1, ack 2, win 114, options [nop,nop,TS val 1701431999 ecr 2129660068], length 0

質問4.STARTTLS用の証明書作り方について

postfix側に入れる証明書は
例えば、apacheに入れている証明書とkeyファイルを入れる事で
問題なかったでしょうか
postfix専用のSSLの作り方があれば教示ください

質問5.STARTTLSの証明書を使用する場合のクライアント側メーラーに証明書をインポートする必要があるのか

STARTTLSの証明書を使用する場合
この証明書をクライアント側のメーラにインポートする必要はあるのでしょうか

現在稼動しているメールサーバにテストアカウント作成して、
このテストアカウントをメーラーに追加しようとしているのですが
画像のように毎回、警告メッセージが出ます。

この警告は有効期限切れの証明書のためだからでしょうか
もしくわ、自己証明書のためでしょうか
そもそも、メールサーバへの証明書を自己証明書を採用する場合
クライアント側メーラーに証明書をインポートする必要があるのでしょうか
イメージ説明

質問6.メーラー設定でアカウント追加する時の設定について

FireWallのポート開放設定とサーバ内のサービスポート情報から
popは995ポート
smtpは25ポート
で稼動しているであろうと仮定する場合、
メールサーバに新規アカウントを作成し、outlookのメーラーでこの新規アカウントを追加して
メール送受信試験を行うと下記のようなエラー表示となります。
メーラ側への設定内容を教示頂けますと幸いです

![イメージ説明](7ade95bac871dd6360c3e2ba9531da6a.png)
イメージ説明

質問7.よりセキュアな作りにするなら?

SMTP over SSL/TLSの方がいいのでしょうか

宜しくお願い致します

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

まず、 dovecot の設定は doveconf -n で default 設定との差分が出るのでそれを参考にすればよい

これは POPS ではなく IMAPS の設定

 inet_listener imaps {
    #port = 993
    #ssl = yes

質問1.STARTTLSかSMTP over SSL/TLSで稼動しているのかについて
=> postfixとdovecotの役割を理解していなくアドバイスがしにくい
STARTTLS は SMTP の STARTTLS 機能か? POP3 の STARTTLS か?
SMTPの STARTTLS なのであれば、それは送信時のものか?受信時のものか?
もしSMTPであればなぜ dovecot の 10-master.conf の設定を質問に書いているか?

質問2.STARTTLSで使用するポート情報について
465portは 通常 SMTP over SSL/TLS で使用するため、STARTTLS は 25/587 port で稼働していればよい
外部から 465 , 587 port に接続ができなければ 25 port でしか当然サービスできていない

質問3.証明書が切れている状態でのpop3sログインについて
telnet や メーラーで確認すれば稼働していることは一目瞭然ではないでしょうか
HTTPSでも証明書の期限がきれていても表示できますよね。同じです。クライアントが許可すればいい話

質問4.STARTTLS用の証明書作り方について
同じです。certbot などで用意すればよいのではないでしょうか

質問5.STARTTLSの証明書を使用する場合のクライアント側メーラーに証明書をインポートする必要があるのか
自己証明書を使いたいのであればインポートしたほうがいいでしょうね。しなくてもクライアントで許可すればいい話だと思います。

質問6.メーラー設定でアカウント追加する時の設定について
saslauthd を使っているようですが、そちらの設定等は問題ありませんか?

質問7.よりセキュアな作りにするなら?
送受信の smtp starttls に対応
tls_high_cipherlist の設定を追加
ssl,tls1.0,tls1.1無効、tls1.3 に対応
VRFY、ETRN などのコマンドの無効化
DKIM署名、spf,dkim,dmarcの検証、ついでにspamcheckするなら rspamd のインストール
OSとメールアカウントの非共通化
postfix から dovecot へのメールの格納は LMTPに変更し、dovecot-pigeonhole(sieve)を使えるようにして
IMAPSに対応すれば sieve でメールのフィルタリングができて便利

など、パッと思いつくだけでこれだけあります。
もう少しソフトウェアごとの機能、仕組みなどを理解することに時間をさいたほうがいいと思います

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/01/26 01:10 編集

    ご回答ありがとうございます。

    質問1 STARTTLSかSMTP over SSL/TLSのどちらで稼働しているのか?
    ⇒こちらですが、メールサーバ内でnetstatコマンドで見ると465ポートは起動していませんでした。
    telnet localhost 25を実行すると、250-STARTTLS
    が表示される事から、STARTTLSで動いているであろうと考えています。
    10-master.confの記載をした事は私側で混同していました。失礼しました。

    そこで、dovecotについて改めて確認させて下さい
    ■1.
    /etc/dovecot/dovecot.confでのprotocols設定は下記のようにコメントアウトされています
    #protocols = imap pop3 lmtp pop3s imaps
    この状態ですと、デフォルト値が使われるようになるのかと思っていまして、
    受信用プロトコルサービスが起動する事になるのでしょうか?
    netstatで110ポート、143ポート、465ポート、993ポート、995ポート
    受信用プロトコルサービスが起動しています。

    ■2.
    /etc/dovecot/conf.d/10-ssl.conf
    #ssl = yes
    有効を表す、yesがコメントアウトされていまして、この状態ですとデフォルト設定のSSLが有効(yes)
    にっている考えていいのでしょうか

    ■3.
    /etc/dovecot/conf.d/10-master.confのpop3設定では下記のように
    110ポートと995ポートを利用しない、非SSL設定となっているようなのですが
    1.で質問した、全受信用プロトコルが起動しているのは何故なのでしょうか

    service pop3-login {
    inet_listener pop3 {
    #port = 110
    }
    inet_listener pop3s {
    #port = 995
    #ssl = yes
    }
    }

    110ポートと995ポートはコメントアウトとなっていますが、
    netstatでの確認ではこの2つのポートが起動していることになっています。
    これは、
    /etc/dovecot/dovecot.conf

    protocols項目はデフォルト値が指定されて
    110と995が起動している
    しかし、起動はしているが
    10-master.confではssl起動がnoなので
    実質、非SSLで995ポートが稼働しており、外部ユーザは110ポートでメールを受信が出来ている事で
    いいのでしょうか
    外部ユーザにはメーラー設定説明では995ポートで設定するように案内していたみたいでして
    995接続が出来ない時は勝手に110ポートでメールを受ける仕組みなのでしょうか

    ------------------------------------------------------------------------------------------------
    また、
    /etc/dovecot/conf.d/10-master.confに下記の設定があります。
    これは、SMTP-AUTHの実装のSASLをDovecot の SASL ライブラリの認証ソケットファイルとして
    紐づける解釈でいいのでしょうか

    # Postfix smtp-auth
    unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
    }

    # ls -F /var/spool/postfix/private/auth
    /var/spool/postfix/private/auth=
    認証ソケットファイルが作成されているのは確認が出来ています

    しかし、postfixのmain.cf(または、master.cf)に
    smtpd_sasl_type = dovecot
    smtpd_sasl_path = private/auth
    のDOVECOT SASL用?の設定が入っていませんので
    SMTP認証にはDOVECOT SASLを利用しない解釈でいいでしょうか

    ですが、結局、/etc/dovecot/conf.d/10-master.confファイルの中で
    service pop3-login {
    inet_listener pop3 {
    #port = 110
    }
    inet_listener pop3s {
    #port = 995
    #ssl = yes
    のように非sslとされているので、# Postfix smtp-auth設定も意味を成さないのではないのかと思っています。。。

    ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
    この事から、FWで587が開放されていないのでsmtp認証は25ポートで受付している
    メール受信用プロトコルは10-master.confで非sslなので
    110ポートで接続を受け付けている事になるのでしょうか
    ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

    ■質問6.について
    >メーラー設定でアカウント追加する時の設定についてsaslauthd を使っているようです
    saslauthdデーモンが起動していない状態でした。

    /etc/pam.d/dovecotファイルで
    account sufficient pam_access.so
    の設定が入っていないようでしたのでPAM認証設定は有効でないと解釈していまして
    SASL2認証なのかと想像しています。


    ここまでの経緯から
    SMTP認証方法はSASL2で実行
    いろいろわかりにくい説明かもしれませんが、
    ご確認・ご回答頂けますと幸いです

    キャンセル

  • 2019/01/26 04:32 編集

    あとは自分で調べて考えて自分で判断して進めるといいかと思います!それが仕事だと思います!期限があるなら移行を外部に発注することも考えましょう。サーバの設定から動作を把握出来ないようでは十中八九事故りますよ。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる