Digitalocean VPSにメールサーバーを設定しようとしています。問題は、ファイアウォールが非アクティブであり、dovecotがリッスンしているにもかかわらず、993にtelnetできないことです。どこが悪いのか教えてください。私は このpostfix、dovecot、mysql、spamassasinチュートリアル に従いました。
サーバーOS:
_lsb_release -a
_
結果:
_No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: xenial
_
私はこの部分までチュートリアルに従いました:_telnet example.com 993
_その結果:
_telnet mysite.com 993
Trying 127.0.1.1...
Connected to mysite.com.
Escape character is '^]'.
Connection closed by foreign Host.
_
私はファイアウォールをチェックしました:_Sudo ufw status
_その結果:
_Status: inactive
_
そして、dovecotがアクティブかどうか:Sudo netstat -plutn | grep 993
_tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 27460/dovecot
tcp6 0 0 :::993 :::* LISTEN 27460/dovecot
_
Dovecot -Fはエラーを表示せず、以下はdovecot -nの出力です。
_# 2.2.22 (fe789d2): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.13 (7b14904)
# OS: Linux 4.4.0-34-generic x86_64 Ubuntu 16.04.1 LTS ext4
auth_mechanisms = plain login
mail_location = maildir:/var/mail/vhosts/%d/%n
mail_privileged_group = mail
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
}
passdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
protocols = imap lmtp pop3
service auth-worker {
user = vmail
}
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0666
user = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
}
user = dovecot
}
service imap-login {
inet_listener imap {
port = 0
}
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}
ssl = required
ssl_cert = /etc/letsencrypt/live/mysite.com/fullchain.pem
ssl_key = /etc/letsencrypt/live/mysite.com/privkey.pem
userdb {
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
driver = static
}
_
Postfix smtpへのTelnetも問題ありません:_telnet mysite.com smtp
_結果:
_Trying 127.0.1.1...
Connected to mysite.com.
Escape character is '^]'.
220 mysite.com ESMTP Postfix (Ubuntu)
ehlo mysite.com
250-mysite.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign Host.
_
助けてください。
EDIT 1:
_openssl s_client -connect mysite.com:993 -crlf
_でもまだ運がない
_CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 305 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1515817904
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
_
実行中:_telnet mysite.com 110
_はすぐに閉じることもあれば、閉じる前に1分間遅れることもあります。
_Trying 127.0.1.1...
Connected to mysite.com.
Escape character is '^]'.
Connection closed by foreign Host.
_
私がどこかで読んだものから、私はこの行を期待するべきだと思います:+OK Dovecot (Ubuntu) ready.
詳細情報:_Sudo netstat -pltn
_結果:
_Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:34600 0.0.0.0:* LISTEN 27939/postgres
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 27886/mysqld
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 27434/master
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 27460/dovecot
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2409/sshd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 27434/master
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 27460/dovecot
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 27460/dovecot
tcp6 0 0 :::587 :::* LISTEN 27434/master
tcp6 0 0 :::110 :::* LISTEN 27460/dovecot
tcp6 0 0 :::80 :::* LISTEN 1519/Apache2
tcp6 0 0 :::22 :::* LISTEN 2409/sshd
tcp6 0 0 :::25 :::* LISTEN 27434/master
tcp6 0 0 :::443 :::* LISTEN 1519/Apache2
tcp6 0 0 :::993 :::* LISTEN 27460/dovecot
tcp6 0 0 :::995 :::* LISTEN 27460/dovecot
_
そしてbtw ...これは_sshd_config
_> _PasswordAuthentication no
_と関係があります
別の情報:_Sudo iptables-save
_:
_# Generated by iptables-save v1.6.0 on Sat Jan 13 12:55:47 2018
*filter
:INPUT ACCEPT [53354:9755959]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [48733:30432882]
COMMIT
# Completed on Sat Jan 13 12:55:47 2018
_
ソリューション
問題は実際には構成の問題であり、/var/log/syslog
でdovecot自体がコメントしています:
Jan 14 17:34:23 mysite dovecot: imap-login: Fatal: Can't load ssl_cert: There is no valid PEM certificate. (You probably forgot '<' from ssl_cert=</etc/letsencrypt/live/mysite.com/fullchain.pem)
古い試行
telnetからのこの出力:
telnet mysite.com 993
Trying 127.0.1.1...
Connected to mysite.com.
Escape character is '^]'.
Connection closed by foreign Host.
あなたが期待するものです。ポート993はIMAPのSSL暗号化ポートであるため、Telnetを介してこれに話すのはかなり難しいです;-)
すなわちかどうかを確認してください。 Thunderbirdは設定で動作します-それ以外の場合は、失敗した試行後にメールクライアントまたはDovecotの出力をポストします。
EDIT:opensslを使用してIMAPSポートに接続できます。これがすでに詳細に回答されている別の質問があります: https://stackoverflow.com/q/14959461/6591024
openssl s_client -connect mysite.com:993
リンクされた質問の回答に記載されているように、MacOSまたはWindowsを使用している場合(おそらく?)、openssl s_client -connect mysite.com:993 -crlf
を使用してCRLFを適用する必要がある
証明書のないTLSは機能しないと思います。
CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 305 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
自己署名証明書を生成してインストールし、それが役立つかどうかを確認してみます。
確認してください。iptables-save
の出力は空ですか?
Ufwを無効にすると、iptablesの出力(およびルール)がなくなります。