ラウンドキューブ、dovecot、postfix、および証明書をletencryptから取得して、Debian 9ですべて連携できるようにしています。
Apt-getコマンドを使用してroundcubeをインストールしました。
Roundcubeにログインしようとすると、「読み込み中...」と表示されるのに時間がかかりますが、ログインできません。画面上のエラーでConnection to storage server failed
。 roundcubeエラーログを見ると、次のエラーが発生します。
IMAP Error: Login failed for [email protected] from 192.0.2.10. Empty startup greeting (localhost:143) in /usr/share/roundcube/program/lib/Roundcube/rcube_imap.php on line 193 (POST /?_task=login&_action=login)
ランニング /etc/init.d/dovecot status
以下を取得します。
dovecot[29431]: imap-login: Disconnected (no auth attempts in 60 secs): user=<>, rip=::1, lip=::1, TLS handshaking: SSL_accept() syscall failed: Success, session=<azgn6uptGtgAAAAAAAAAAAAAAAAAAAAB>
私は私のconfig.inc.phpに以下を持っています:
$config['default_Host'] = 'tls://localhost';
そして
$config['imap_conn_options'] = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
),
);
$config['username_domain'] = '%d';
そして、私のdovecot 10-ssl.confファイルで次のように指定されています。
ssl = required
ssl_cert = </etc/letsencrypt/live/example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/example.com/privkey.pem
また、10-master.confファイルに次の情報が含まれています。
service imap-login {
inet_listener imap {
port = 0
}
inet_listener imaps {
port = 143
ssl = yes
}
}
service pop3-login {
inet_listener pop3 {
port = 0
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
私が行った場合 telnet localhost 143
取得:
Trying ::1...
Connected to localhost.
Escape character is '^]'.
私はそれ以上得るべきかどうかわかりません。
率直に言って、どこに問題があるのか、他に何を調べればよいのかわかりません。 roundcubeにログインできないのはなぜですか。また、問題を特定するために他にどこを確認する必要がありますか?
これを機能させるには、以下を変更する必要がありました。
$config['default_Host'] = 'tls://localhost';
に
$config['default_Host'] = 'imaps://localhost';
ただし、どこにも文書化されていないようで、なぜこれが機能するのかはわかりません。
それが他の誰かを助ける場合、これは私の設定の残りです:
/etc/dovecot/conf.d/10-master.conf:
service imap-login {
inet_listener imap {
#port = 143
port = 0
}
inet_listener imaps {
#port = 993
#ssl = yes
}
}
service pop3-login {
inet_listener pop3 {
#port = 110
port = 0
}
inet_listener pop3s {
#port = 995
#ssl = yes
}
}
私のroundcube/config/config.inc.phpには、
$config['default_Host'] = 'imaps://localhost';
$config['username_domain'] = '%d';
$config['imap_conn_options'] = array(
'ssl' => array(
'verify_peer' => true,
'allow_self_signed' => false,
'ssl_cert' => '/etc/letsencrypt/live/example.com/fullchain.pem',
'ssl_key' => '/etc/letsencrypt/live/example.com/privkey.pem',
'ciphers' => 'TLSv1+HIGH:!aNull:@STRENGTH',
'peer_name' => 'mail.example.com',
),
);
$config['smtp_conn_options'] = array(
'ssl' => array(
'verify_peer' => true,
'allow_self_signed' => false,
'ssl_cert' => '/etc/letsencrypt/live/example.com/fullchain.pem',
'ssl_key' => '/etc/letsencrypt/live/example.com/privkey.pem',
'ciphers' => 'TLSv1+HIGH:!aNull:@STRENGTH',
'peer_name' => 'mail.example.com',
),
);
これを診断するのを助けるために、私のroundcube/config/config.inc.phpファイルでもロギングを有効にしました:
// Log successful/failed logins to <log_dir>/userlogins or to syslog
$config['log_logins'] = true;
// Log session authentication errors to <log_dir>/session or to syslog
$config['log_session'] = true;
// Log SQL queries to <log_dir>/sql or to syslog
$config['sql_debug'] = true;
// Log IMAP conversation to <log_dir>/imap or to syslog
$config['imap_debug'] = true;
// Log LDAP conversation to <log_dir>/ldap or to syslog
$config['ldap_debug'] = true;
// Log SMTP conversation to <log_dir>/smtp or to syslog
$config['smtp_debug'] = true;
ログはroundcube/logs
インストールディレクトリに保存されました。
TL; DR:カスタマイズされたポート構成と期待される標準クライアント設定を機能させることができない
以下の構成を設定することにより、IMAPポートでIMAPSプロトコルを使用してリッスンするようにdovecotを構成しました。
また、10-master.confファイルに次の情報が含まれています。
service imap-login { inet_listener imap { port = 0 } inet_listener imaps { port = 143 ssl = yes } }
=>このブロックは、クリアテキスト(およびTLSアップグレード可能)「imap」プロトコル(ポート= 0)を無効にし、ポート143で強制的に初期SSL/TLSハンドシェイクを行う「imaps」ポートを有効にします。
ただし、ポート143はIMAPプロトコル用のIANA割り当てポートです。IMAPSは993に設定する必要があります(ポートの参照については/etc/services
を参照)。
この構成を維持し、dovecotを幸せにすることは可能ですが、誰もこれを予期していないため、すべてのクライアント構成を微調整する必要があります。IMAPポート(143)のデフォルト設定では、アドバタイズ時にクリアテキスト通信とオプションのTLSアップグレードを許可します。
Roundcubeがこれを使用するには、次のようなものが必要です。
$config['default_Host'] = 'ssl://fqdn.of.server:143'
または
$config['default_Host'] = 'tls://fqdn.of.server:143'
これにより、roundmapeに、imapサービスが標準のプレーンテキスト(143)ポートを介して事前に暗号化された接続を期待することが指示されます。
telnet localhost 143
については、これを使用してSSL接続をテストすることはできません。openssl s_client -servername fqdn.of.server -connect localhost:143
のようなものが必要になります。
SSL/TLSは証明書で機能し、これらの証明書はホスト名で機能するため、証明書の問題が発生しない限り、ローカルホスト経由でSSL接続を行うことはできません。
すべてのアプリケーションのポートを微調整することは可能ですが、多くのシステム(ファイアウォール、デフォルト設定など)は、各アプリケーションに特定のポートが割り当てられているという事実に依存しています。
ポート143でIMAPSを使用してimapサーバーを操作することは可能ですが、クライアント/ネットワークによってはさまざまな問題が発生します。
個人的には、dovecotのデフォルトの動作モードを変更して、10-master.conf
のデフォルトのinetリスナー構成のTweakを削除しないことをお勧めします。
Imap/popの安全な通信を有効にするために、デフォルトのdovecot構成で必要な変更は、10-ssl.conf
(ssl = required + cert/key)に対して行った変更のみです。
リファレンス: https://wiki.dovecot.org/SSL/DovecotConfiguration
さらに、ループバックチャネル(localhost)でのSSL通信は実際には役に立たないため、デフォルトで、「ssl = required」または「disable_plaintext_auth」がアクティブでも、dovecotはループバックネットワーク(ip 127.0.0.1またはclient ipサーバーIPと同じ)ssl/tlsがなくても安全です。
したがって、ラウンドキューブサービスがdovecotサーバーと同じホスト上にある場合、構成は次のようにする必要があります。
$config['default_Host'] = 'localhost'