Saya memiliki pengaturan Postfix / Dovecot / Roundcube yang saya gunakan secara pribadi, serta memberikan kepada pengguna lain. Saya mencoba mentransfer seluruh pengaturan ini ke kotak baru, tetapi mengalami beberapa masalah.
Penerimaan surat berfungsi dengan baik, (hanya diuji secara internal, domain belum ditransfer.) Serta IMAP & SMTP eksternal berfungsi dengan baik menggunakan TLS / SSL (Thunderbird, misalnya)
Masalahnya adalah dengan pengaturan roundcube saya, yang dapat menggunakan IMAP ke 127.0.0.1, dan menampilkan email pengguna secara luar biasa, tetapi tidak dapat mengirim email, hanya mengklaim: "SMTP Error (220): Authentication failed."
Anehnya, dengan konfigurasi Postfix / Dovecot yang sama yang saya gunakan di server saya saat ini, Roundcube tidak lagi dapat mengaksesnya di server baru saya. Berikut adalah konfigurasi roundcube yang relevan:
$config['smtp_server'] = 'tls://localhost';
// Log SMTP conversation to <log_dir>/smtp or to syslog
$config['smtp_debug'] = true;
// SMTP port (default is 25; use 587 for STARTTLS or 465 for the
// deprecated SSL over SMTP (aka SMTPS))
$config['smtp_port'] = 587;
// SMTP username (if required) if you use %u as the username Roundcube
// will use the current username for login
$config['smtp_user'] = '%u';
// SMTP password (if required) if you use %p as the password Roundcube
// will use the current user's password for login
$config['smtp_pass'] = '%p';
Log / kesalahan log Roundcube hanya mengatakan:
[02-Jan-2015 16:55:49 America/New_York] STARTTLS failed ():
[02-Jan-2015 16:55:49 -0500]: SMTP Error: SMTP error: Authentication failure: STARTTLS failed (Code: ) in /var/wwwmail/program/lib/Roundcube/rcube.php on line 1505 (POST /?_task=mail&_unlock=loading1420235752730&_lang=undefined&_framed=1?_task=mail&_action=send)
Sementara Roundcube's log / smtp log menunjukkan:
[02-Jan-2015 17:50:01 -0500]: Recv: 220 example.net ESMTP Postfix
[02-Jan-2015 17:50:01 -0500]: Send: EHLO example.net
[02-Jan-2015 17:50:01 -0500]: Recv: 250-example.net
[02-Jan-2015 17:50:01 -0500]: Recv: 250-PIPELINING
[02-Jan-2015 17:50:01 -0500]: Recv: 250-SIZE 104857600
[02-Jan-2015 17:50:01 -0500]: Recv: 250-VRFY
[02-Jan-2015 17:50:01 -0500]: Recv: 250-ETRN
[02-Jan-2015 17:50:01 -0500]: Recv: 250-STARTTLS
[02-Jan-2015 17:50:01 -0500]: Recv: 250-ENHANCEDSTATUSCODES
[02-Jan-2015 17:50:01 -0500]: Recv: 250-8BITMIME
[02-Jan-2015 17:50:01 -0500]: Recv: 250 DSN
[02-Jan-2015 17:50:01 -0500]: Send: STARTTLS
[02-Jan-2015 17:50:01 -0500]: Recv: 220 2.0.0 Ready to start TLS
[02-Jan-2015 17:50:01 -0500]: Send: RSET
[02-Jan-2015 17:50:01 -0500]: Recv: M I A…"qhçR¸
[02-Jan-2015 17:50:01 -0500]: Send: QUIT
Berikut ini cuplikan relevan dari konfigurasi postfix saya dari /etc/postfix/main.cf
# TLS parameters for SMTP service
smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/ssl/private/example.net/example.net.crt
smtpd_tls_key_file = /etc/ssl/private/example.net/example.net.key
smtpd_tls_auth_only = yes
Berikut ini cuplikan relevan dari konfigurasi postfix saya dari /etc/postfix/master.cf
smtp inet n - - - - smtpd
-o content_filter=spamassassin
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o cleanup_service_name=cleanup_submit
smtps inet n - - - - smtpd
-o content_filter=spamassassin
-o syslog_name=postfix/smtps
-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
Log Postfix /var/log/mail.log
melaporkan kesalahan berikut:
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: connect from localhost.localdomain[127.0.0.1]
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: SSL_accept error from localhost.localdomain[127.0.0.1]: 0
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: warning: TLS library problem: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca:s3_pkt.c:1292:SSL alert number 48:
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: lost connection after STARTTLS from localhost.localdomain[127.0.0.1]
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: disconnect from localhost.localdomain[127.0.0.1]
Saya telah membaca beberapa pertanyaan lain dengan kode kesalahan yang serupa, tetapi semuanya tampaknya menggunakan sertifikat yang ditandatangani sendiri, atau menambahkan tautan ke hash sertifikat dari / etc / ssl / certs / , yang telah saya coba, meskipun saya mungkin salah mengerti, dan menautkan sertifikat yang salah.
Roundcube diperbarui ke 1.0.4, yang seharusnya memperbaiki masalah dengan ketidakcocokan versi php karena openssl. Saya kehabisan ide, adakah yang punya ide?
Jawaban:
Pesan kesalahan di atas terlihat seperti klien (skrip PHP yang dipanggil oleh roundcube) gagal memverifikasi sertifikat rekan karena CA tidak dikenal . Ada banyak alasan mengapa kesalahan ini terjadi.
Mengenai openssl, Roundcube versi 1.0-RC dan kemudian dikirimkan dengan opsi koneksi SSL. Parameter
smtp_conn_options
danimap_conn_options
ditambahkan masing-masing dalam versi 1.0-RC dan 1.0.3. Secara default, nilai kedua parameter adalah nol. Cuplikan di bawah ini diambil dari file roundcubeconfig/defaults.inc.php
. Anda bisa merujuk ke manual PHP untuk mendapatkan deskripsi lengkap dari parameter ini.Di banyak sistem yang menggunakan sertifikat yang ditandatangani sendiri, nilai default berfungsi untuk PHP 5.5 dan sebelumnya. Secara default, PHP 5.6 akan memverifikasi sertifikat rekan terhadap CA yang diinstal dan memverifikasi nama rekan .
Sekarang, sepertinya Debian jessie juga dikirimkan dengan versi PHP default 5.6 . Tampaknya PHP gagal memverifikasi sertifikat postfix. Alasan yang mungkin, PHP gagal di verifikasi_peer_name (karena Anda menentukan localhost di hostname) atau di verifikasi_peer (karena CA tidak dikenal)
Kasus serupa juga terjadi pada pengguna Arch Linux . Solusinya adalah:
sumber
PHP 5.6 melakukan verifikasi rekan SSL, artinya memeriksa sertifikat server SMTP apakah itu CA yang dikenal.
Opsi smtp_server harus cocok dengan bidang CN sertifikat! (Nama yang umum)
Jadi jangan letakkan localhost di sana, letakkan nama domain yang memenuhi syarat di sana yang cocok dengan sertifikat Anda.
Kredit ke: https://www.blogobramje.nl/posts/Roundcube_sending_mail_broken_with_PHP_5.6_-_STARTTLS_failed/
sumber
karena saya menggunakan dovecot solusi saya adalah menambahkan ca ke
/etc/dovecot/dovecot.conf
sumber
Saya memiliki kesalahan yang sama. Perbaiki dengan menambahkan file CA di file main.cf postfix. Lokasi di mungkin di
/etc/postfix/main.cf
.sumber
permasalahan yang sama! Cepat solusi yang kotor: ubah di config / defaults.inc.php Verify_peer menjadi false.
PERINGATAN HANYA untuk Pengujian; BUKAN UNTUK Lingkungan Produksi
sumber
verify_peer => true
), dan menjelaskan apa yangcafile
harus ditunjukkan .