Tôi đã tạo tệp ssl bằng letsencrypt và mọi thứ đã được cài đặt và định cấu hình nhưng IMAP và SMTP của tôi không hoạt động. Những gì tôi có thể tìm thấy từ tệp /var/log/mail.log là lỗi này:
dovecot: imap-login: Đã ngắt kết nối (đã ngắt kết nối trước khi xác thực sẵn sàng, đợi 0 giây): user=<>,TLS handshaking: SSL_accept() fail: error:14094412:SSL routines:ssl3_read_bytes:sslv3 cảnh báo chứng chỉ không hợp lệ: Cảnh báo SSL số 42
Không có nhật ký cho lỗi SMTP.
/etc/postfix/main.cf
# Xem /usr/share/postfix/main.cf.dist để biết phiên bản đầy đủ hơn đã nhận xét
# Debian cụ thể: Chỉ định tên tệp sẽ gây ra lỗi đầu tiên
# dòng của tệp đó sẽ được sử dụng làm tên. Mặc định của Debian
# là /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = không
# nối thêm .domain là công việc của MUA.
append_dot_mydomain = không
# Bỏ ghi chú dòng tiếp theo để tạo cảnh báo "thư bị trì hoãn"
#delay_warning_time = 4h
readme_directory = không
# Xem http://www.postfix.org/COMPATIBILITY_README.html -- mặc định là 2 trên
# lượt cài đặt mới.
mức độ tương thích = 2
# Thông số TLS
smtpd_tls_cert_file=/etc/letsencrypt/live/domain.net/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/domain.net/privkey.pem
smtpd_tls_security_level=có thể
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=có thể
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.domain.net
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, domain.net, blue, localhost.localdomain, localhost
máy chủ chuyển tiếp =
mạng của tôi = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
hộp thư_size_limit = 0
người nhận_delimiter = +
inet_interfaces = tất cả
inet_protocols = tất cả
mailbox_transport = lmtp:unix:private/dovecot-lmtp
smtputf8_enable = không
# Cấu hình Milter
milter_default_action = chấp nhận
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
10-ssl.conf
##
## Cài đặt SSL
##
# Hỗ trợ SSL/TLS: có, không, bắt buộc. <doc/wiki/SSL.txt>
ssl = bắt buộc
# Chứng chỉ SSL/TLS được mã hóa PEM và khóa cá nhân. Chúng được mở trước
# mất đặc quyền root, vì vậy giữ cho tệp chính không thể đọc được bởi bất kỳ ai ngoại trừ
# nguồn gốc. Có thể sử dụng doc/mkcert.sh đi kèm để dễ dàng tạo tự ký
# chứng chỉ, chỉ cần đảm bảo cập nhật miền trong dovecot-openssl.cnf
ssl_cert = </etc/letsencrypt/live/domain.net/fullchain.pem
ssl_key = </etc/letsencrypt/live/domain.net/privkey.pem
# Nếu tệp khóa được bảo vệ bằng mật khẩu, hãy cung cấp mật khẩu tại đây. Ngoài ra
# tặng nó khi bắt đầu dovecot với tham số -p. Vì tập tin này thường được
# có thể đọc được trên toàn thế giới, thay vào đó, bạn có thể muốn đặt cài đặt này sang một cài đặt khác
# gốc sở hữu tệp 0600 bằng cách sử dụng ssl_key_password = <path.
#ssl_key_password =
# Cơ quan cấp chứng chỉ đáng tin cậy được mã hóa PEM. Chỉ đặt cái này nếu bạn có ý định sử dụng
# ssl_verify_client_cert=có. Tệp phải chứa (các) chứng chỉ CA
# theo sau là (các) CRL phù hợp. (ví dụ: ssl_ca = </etc/ssl/certs/ca.pem)
#ssl_ca =
# Yêu cầu kiểm tra CRL thành công đối với chứng chỉ ứng dụng khách.
#ssl_require_crl = có
# Thư mục và/hoặc tệp cho chứng chỉ SSL CA đáng tin cậy. Chúng chỉ được sử dụng
# khi Dovecot cần hoạt động như một ứng dụng khách SSL (ví dụ: chương trình phụ trợ imapc hoặc
# trình dịch vụ). Thư mục thường là /etc/ssl/certs trong
# Các hệ thống dựa trên Debian và tệp là /etc/pki/tls/cert.pem trong
# Hệ thống dựa trên RedHat.
ssl_client_ca_dir = /etc/ssl/certs
#ssl_client_ca_file =
# Yêu cầu chứng chỉ hợp lệ khi kết nối với máy chủ từ xa
#ssl_client_require_valid_cert = có
# Yêu cầu khách hàng gửi chứng chỉ. Nếu bạn cũng muốn yêu cầu nó, hãy đặt
# auth_ssl_require_client_cert=yes trong phần xác thực.
#ssl_verify_client_cert = không
# Trường nào từ chứng chỉ sẽ được sử dụng cho tên người dùng. tên chung và
# x500UniqueIdentifier là các lựa chọn thông thường. Bạn cũng sẽ cần phải thiết lập
# auth_ssl_username_from_cert=yes.
#ssl_cert_username_field = commonName
# Thông số SSL DH
# Tạo tham số mới với `openssl dhparam -out /etc/dovecot/dh.pem 4096`
# Hoặc di chuyển từ tệp ssl-parameters.dat cũ bằng lệnh dovecot
# cung cấp khi khởi động khi ssl_dh không được đặt.
ssl_dh = </usr/share/dovecot/dh.pem
# Phiên bản giao thức SSL tối thiểu để sử dụng. Các giá trị có khả năng được công nhận là SSLv3,
# TLSv1, TLSv1.1 và TLSv1.2, tùy thuộc vào phiên bản OpenSSL được sử dụng.
#ssl_min_protocol = TLSv1
# Mật mã SSL để sử dụng, mặc định là:
#ssl_cipher_list = ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
# Để tắt DH không phải EC, hãy sử dụng:
#ssl_cipher_list = ALL:!DH:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@ SỨC LỰC
# Danh sách các đường cong elip được phân tách bằng dấu hai chấm để sử dụng. Giá trị trống (mặc định)
# có nghĩa là sử dụng giá trị mặc định từ thư viện SSL. P-521:P-384:P-256 sẽ là một
# ví dụ về một giá trị hợp lệ.
#ssl_curve_list =
# Thích thứ tự mật mã của máy chủ hơn của máy khách.
#ssl_prefer_server_ciphers = có
# Thiết bị mã hóa SSL để sử dụng, đối với các giá trị hợp lệ, hãy chạy "công cụ openssl"
#ssl_crypto_device =
# Tùy chọn bổ sung SSL. Các tùy chọn được hỗ trợ hiện tại là:
# nén - Kích hoạt tính năng nén.
# no_ticket - Vô hiệu hóa vé phiên SSL.
#ssl_options =
ssl_min_protocol = TLSv1.2
Máy chủ ảo Apache mail.domain.net.conf
<VirtualHost *:80>
ServerName mail.domain.net
DocumentRoot /var/www/html/
ErrorLog ${APACHE_LOG_DIR}/roundcube_error.log
CustomLog ${APACHE_LOG_DIR}/roundcube_access.log combined
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/html/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
<VirtualHost *:443>
ServerName mail.domain.net
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/roundcube_error.log
CustomLog ${APACHE_LOG_DIR}/roundcube_access.log combined
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/html/>
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/domain.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.net/privkey.pem
</VirtualHost>
dovecot.conf
## Tệp cấu hình Dovecot
# Nếu bạn đang vội, hãy xem http://wiki2.dovecot.org/QuickConfiguration
# Lệnh "doveconf -n" cho kết quả rõ ràng về các cài đặt đã thay đổi. Sử dụng nó
# thay vì sao chép và dán tệp khi đăng lên danh sách gửi thư của Dovecot.
# Ký tự '#' và mọi thứ sau nó được coi là nhận xét. không gian thêm
# và các tab bị bỏ qua. Nếu bạn muốn sử dụng một trong hai thứ này một cách rõ ràng, hãy đặt
# giá trị bên trong dấu ngoặc kép, ví dụ: key = "# char và khoảng trắng ở cuối"
# Hầu hết (nhưng không phải tất cả) cài đặt có thể bị ghi đè bởi các giao thức và/hoặc khác
# IP nguồn/đích bằng cách đặt cài đặt bên trong các phần, ví dụ:
# giao thức imap { }, cục bộ 127.0.0.1 { }, từ xa 10.0.0.0/8 { }
# Giá trị mặc định được hiển thị cho từng cài đặt, không bắt buộc phải bỏ ghi chú
# những, cái đó. Tuy nhiên, đây là những ngoại lệ đối với điều này: Không có phần nào (ví dụ: không gian tên {})
# hoặc cài đặt plugin được thêm theo mặc định, chúng chỉ được liệt kê dưới dạng ví dụ.
# Đường dẫn cũng chỉ là ví dụ với giá trị mặc định thực dựa trên cấu hình
# tùy chọn. Các đường dẫn được liệt kê ở đây là dành cho configure --prefix=/usr
# --sysconfdir=/etc --localstatedir=/var
# Kích hoạt các giao thức đã cài đặt
giao thức = imap lmtp
!include_try /usr/share/dovecot/protocols.d/*.protocol
# Danh sách IP hoặc máy chủ được phân tách bằng dấu phẩy để theo dõi kết nối.
# "*" lắng nghe trong tất cả các giao diện IPv4, "::" lắng nghe trong tất cả các giao diện IPv6.
# Nếu bạn muốn chỉ định các cổng không mặc định hoặc bất kỳ thứ gì phức tạp hơn,
# chỉnh sửa conf.d/master.conf.
# nghe = *, ::
# Thư mục cơ sở nơi lưu trữ dữ liệu thời gian chạy.
#base_dir = /var/run/dovecot/
# Tên của trường hợp này. Trong thiết lập đa phiên bản doveadm và các lệnh khác
# có thể sử dụng -i <instance_name> để chọn phiên bản nào được sử dụng (một cách khác
# đến -c <config_path>). Tên phiên bản cũng được thêm vào quy trình Dovecot
# trong đầu ra ps.
#instance_name = dovecot
# Tin nhắn chúc mừng cho khách hàng.
#login_greeting = Dovecot đã sẵn sàng.
# Danh sách phạm vi mạng đáng tin cậy được phân tách bằng dấu cách. Kết nối từ những
# IP được phép ghi đè địa chỉ IP và cổng của chúng (để ghi nhật ký và
# để kiểm tra xác thực). disable_plaintext_auth cũng bị bỏ qua đối với
# các mạng này. Thông thường, bạn sẽ chỉ định máy chủ proxy IMAP của mình tại đây.
#login_trusted_networks =
# Danh sách ổ cắm kiểm tra quyền truy cập đăng nhập được phân tách bằng dấu cách (ví dụ: tcpwrap)
#login_access_sockets =
# Với proxy_maybe=yes nếu đích proxy khớp với bất kỳ IP nào trong số này, đừng làm
# ủy quyền. Điều này thường không cần thiết, nhưng có thể hữu ích nếu điểm đến
# IP là ví dụ: IP của bộ cân bằng tải.
#auth_proxy_self =
# Hiển thị tiêu đề quá trình chi tiết hơn (trong ps). Hiện đang hiển thị tên người dùng và
# Địa chỉ IP. Hữu ích để xem ai đang thực sự sử dụng quy trình IMAP
# (ví dụ: hộp thư dùng chung hoặc nếu cùng một uid được sử dụng cho nhiều tài khoản).
#verbose_proctitle = không
# Có nên tắt tất cả các quy trình khi tắt quy trình chính của Dovecot.
# Đặt mục này thành "không" có nghĩa là Dovecot có thể được nâng cấp mà không cần
# buộc đóng các kết nối máy khách hiện tại (mặc dù điều đó cũng có thể là
# một vấn đề nếu bản nâng cấp là ví dụ. vì một bản sửa lỗi bảo mật).
#shutdown_clients = có
# Nếu khác không, hãy chạy các lệnh thư qua nhiều kết nối này tới máy chủ doveadm,
# thay vì chạy chúng trực tiếp trong cùng một quy trình.
#doveadm_worker_count = 0
# Ổ cắm hoặc máy chủ UNIX: cổng được sử dụng để kết nối với máy chủ doveadm
#doveadm_socket_path = máy chủ doveadm
# Danh sách các biến môi trường được phân tách bằng dấu cách được bảo tồn trên Dovecot
# khởi động và truyền lại cho tất cả các tiến trình con của nó. Bạn cũng có thể cho
# cặp khóa=giá trị để luôn đặt cài đặt cụ thể.
#import_environment = TZ
##
## Cài đặt máy chủ từ điển
##
# Từ điển có thể được sử dụng để lưu trữ danh sách khóa=giá trị. Điều này được sử dụng bởi một số
# bổ sung. Từ điển có thể được truy cập trực tiếp hoặc thông qua một
# máy chủ từ điển. Khối dict sau ánh xạ tên từ điển thành URI
# khi máy chủ được sử dụng. Sau đó, chúng có thể được tham chiếu bằng cách sử dụng URI ở định dạng
# "proxy::<tên>".
chính tả {
#quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
#expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
}
# Hầu hết các cấu hình thực tế được bao gồm bên dưới. Tên tập tin là
# đầu tiên được sắp xếp theo giá trị ASCII của chúng và được phân tích cú pháp theo thứ tự đó. Các tiền tố 00
# trong tên tệp nhằm giúp dễ hiểu thứ tự hơn.
!bao gồm conf.d/*.conf
# Một tệp cấu hình cũng có thể được đưa vào mà không gây ra lỗi nếu
# nó không được tìm thấy:
!include_try local.conf
10-auth.conf
##
## Quy trình xác thực
##
# Vô hiệu hóa lệnh ĐĂNG NHẬP và tất cả các xác thực văn bản gốc khác trừ khi
# SSL/TLS được sử dụng (khả năng ĐĂNG NHẬP). Lưu ý rằng nếu IP từ xa
# khớp với IP cục bộ (nghĩa là bạn đang kết nối từ cùng một máy tính),
# kết nối được coi là an toàn và cho phép xác thực văn bản gốc.
# Xem thêm ssl=cài đặt bắt buộc.
disable_plaintext_auth = có
# Kích thước bộ đệm xác thực (ví dụ: 10M). 0 có nghĩa là nó bị vô hiệu hóa. Lưu ý rằng
# bsdauth, PAM và vpopmail yêu cầu phải đặt cache_key để sử dụng bộ nhớ đệm.
#auth_cache_size = 0
# Thời gian tồn tại cho dữ liệu được lưu trong bộ nhớ cache. Sau khi TTL hết hạn, bản ghi được lưu trong bộ nhớ cache là không
# được sử dụng lâu hơn, *ngoại trừ* nếu tra cứu cơ sở dữ liệu chính trả về lỗi nội bộ.
# Chúng tôi cũng cố gắng tự động xử lý các thay đổi mật khẩu: Nếu người dùng trước
# xác thực thành công, nhưng xác thực này thì không, bộ đệm không được sử dụng.
# Hiện tại, tính năng này chỉ hoạt động với xác thực văn bản gốc.
#auth_cache_ttl = 1 giờ
# TTL cho các lần truy cập tiêu cực (không tìm thấy người dùng, mật khẩu không khớp).
# 0 vô hiệu hóa hoàn toàn việc lưu chúng vào bộ nhớ đệm.
#auth_cache_negative_ttl = 1 giờ
# Danh sách các lĩnh vực được phân tách bằng dấu cách cho các cơ chế xác thực SASL cần
# họ. Bạn có thể để trống nếu không muốn hỗ trợ nhiều cõi.
# Nhiều khách hàng chỉ cần sử dụng cái đầu tiên được liệt kê ở đây, vì vậy hãy giữ vùng mặc định
# đầu tiên.
#auth_realms =
# Khu vực/miền mặc định sẽ sử dụng nếu không được chỉ định. Điều này được sử dụng cho cả hai
# Vùng SASL và nối thêm @domain vào tên người dùng trong thông tin đăng nhập bằng văn bản thuần túy.
#auth_default_realm =
# Danh sách các ký tự được phép trong tên người dùng. Nếu tên người dùng do người dùng cung cấp có chứa
# một ký tự không được liệt kê ở đây, đăng nhập tự động thất bại. Đây chỉ là
# kiểm tra thêm để đảm bảo người dùng không thể khai thác bất kỳ câu trích dẫn tiềm năng nào thoát ra
# lỗ hổng với cơ sở dữ liệu SQL/LDAP. Nếu bạn muốn cho phép tất cả các ký tự,
# đặt giá trị này thành rỗng.
#auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
# Bản dịch ký tự tên người dùng trước khi tra cứu từ cơ sở dữ liệu. Các
# giá trị chứa chuỗi từ -> đến ký tự. Ví dụ "#@/@" có nghĩa là
# các ký tự '#' và '/' được dịch thành '@'.
#auth_username_translation =
# Định dạng tên người dùng trước khi tra cứu từ cơ sở dữ liệu. Bạn có thể dùng
# các biến tiêu chuẩn ở đây, vd. %Lu sẽ viết thường tên người dùng, %n sẽ
# xóa tên miền nếu nó được cung cấp, hoặc "%n-AT-%d" sẽ thay đổi '@' thành
# "-TẠI-". Bản dịch này được thực hiện sau khi auth_username_translation thay đổi.
auth_username_format = %n
# Nếu bạn muốn cho phép người dùng chính đăng nhập bằng cách chỉ định người dùng chính
# tên người dùng trong chuỗi tên người dùng thông thường (nghĩa là không sử dụng cơ chế SASL
# hỗ trợ cho nó), bạn có thể chỉ định ký tự phân cách tại đây. định dạng
# sau đó là <tên người dùng><dấu phân cách><tên người dùng chính>. UW-IMAP sử dụng "*" làm
# dấu tách, vì vậy đó có thể là một lựa chọn tốt.
#auth_master_user_separator =
# Tên người dùng để sử dụng cho người dùng đăng nhập bằng cơ chế SASL ANONYMOUS
#auth_anonymous_username = ẩn danh
# Số lượng quy trình worker dovecot-auth tối đa. Chúng được sử dụng để thực hiện
# chặn các truy vấn passdb và userdb (ví dụ: MySQL và PAM). Họ là
# tự động tạo và hủy khi cần.
#auth_worker_max_count = 30
# Tên máy chủ để sử dụng trong tên chính của GSSAPI. Mặc định là sử dụng
# tên được trả về bởi gethostname(). Sử dụng "$ALL" (có dấu ngoặc kép) để cho phép tất cả keytab
# mục.
#auth_gssapi_hostname =
# Keytab Kerberos để sử dụng cho cơ chế GSSAPI. Sẽ sử dụng hệ thống
# mặc định (thường là /etc/krb5.keytab) nếu không được chỉ định. Bạn có thể cần phải thay đổi
# dịch vụ xác thực chạy với quyền root để có thể đọc tệp này.
#auth_krb5_keytab =
# Thực hiện xác thực NTLM và GSS-SPNEGO bằng daemon winbind của Samba và
trình trợ giúp # ntlm_auth. <doc/wiki/Xác thực/Cơ chế/Winbind.txt>
#auth_use_winbind = không
# Đường dẫn cho tệp nhị phân trợ giúp ntlm_auth của Samba.
#auth_winbind_helper_path = /usr/bin/ntlm_auth
# Thời gian trì hoãn trước khi trả lời xác thực không thành công.
#auth_failure_delay = 2 giây
# Yêu cầu chứng chỉ ứng dụng khách SSL hợp lệ hoặc xác thực không thành công.
#auth_ssl_require_client_cert = không
# Lấy tên người dùng từ chứng chỉ SSL của khách hàng, sử dụng
# X509_NAME_get_text_by_NID() trả về DN của đối tượng
# Tên gọi chung.
#auth_ssl_username_from_cert = không
# Danh sách các cơ chế xác thực mong muốn được phân tách bằng dấu cách:
# đăng nhập đơn giản digest-md5 cram-md5 ntlm rpa apop ẩn danh gssapi otp skey
# gss-spnego
# LƯU Ý: Xem thêm cài đặt disable_plaintext_auth.
auth_mechanisms = đăng nhập đơn giản
##
## Mật khẩu và cơ sở dữ liệu người dùng
##
#
# Cơ sở dữ liệu mật khẩu được sử dụng để xác minh mật khẩu của người dùng (và không có gì khác).
# Bạn có thể có nhiều passdb và userdb. Điều này rất hữu ích nếu bạn muốn
# cho phép cả người dùng hệ thống (/etc/passwd) và người dùng ảo đăng nhập mà không cần
# sao chép người dùng hệ thống vào cơ sở dữ liệu ảo.
#
# <doc/wiki/PasswordDatabase.txt>
#
# Cơ sở dữ liệu người dùng chỉ định vị trí đặt thư và ID người dùng/nhóm nào
# sở hữu chúng. Đối với cấu hình một UID, hãy sử dụng userdb "tĩnh".
#
# <doc/wiki/UserDatabase.txt>
#!bao gồm auth-deny.conf.ext
#!bao gồm auth-master.conf.ext
!bao gồm auth-system.conf.ext
#!bao gồm auth-sql.conf.ext
#!bao gồm auth-ldap.conf.ext
#!bao gồm auth-passwdfile.conf.ext
#!bao gồm auth-checkpassword.conf.ext
#!bao gồm auth-vpopmail.conf.ext
#!bao gồm auth-static.conf.ext
Trong cài đặt DNS của mình, tôi có bản ghi "IP thư" và bản ghi "MX domain.net mail.domain.net".