Tôi chỉ làm theo hướng dẫn này để thiết lập một mailserver postfix với dovecot và mysql làm phụ trợ cho người dùng ảo.
Bây giờ tôi đã có hầu hết các phần hoạt động, tôi có thể kết nối với POP3 (S) và IMAP (S).
Sử dụng
echo TEST-MAIL | mail myaccount@hotmail.com
hoạt động tốt, khi tôi đăng nhập vào tài khoản hotmail của mình, nó sẽ hiển thị email.
Nó cũng hoạt động ngược lại do đó mục nhập MX của tôi cho example.com cuối cùng đã được truyền bá, vì vậy tôi có thể nhận email được gửi từ myaccount@hotmail.com đến myvirtualuser@example.com và xem chúng trong Thunderbird bằng STARTTLS qua IMAP.
Nghiên cứu thêm một chút sau khi tôi nhận được thông báo lỗi " 5.7.1: Truy cập chuyển tiếp bị từ chối " khi cố gắng gửi thư đến myaccount@hotmail.com bằng Thunderbird được đăng nhập vào myvirtualuser@example.com , tôi nhận ra rằng máy chủ của mình đang hoạt động như một "Chuyển tiếp thư mở", mà - dĩ nhiên - là một điều xấu.
Đi sâu hơn vào các phần tùy chọn của hướng dẫn như nhận xét này và phần khác , tôi quyết định hoàn thành các bước này để có thể gửi thư qua myvirtualuser@example.com qua Mozilla Thunderbird, không nhận được thông báo lỗi " 5.7.1 : Truy cập chuyển tiếp bị từ chối "nữa (vì các máy chủ thư thông thường từ chối các email chuyển tiếp mở).
Nhưng bây giờ tôi gặp phải một lỗi khi cố gắng để postfix hoạt động với SMTPS, trong /var/log/mail.log nó đọc
Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: cannot get RSA private key from file /etc/ssl/certs/postfix.pem: disabling TLS support
Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: TLS library problem: 20251:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:650:Expecting: ANY PRIVATE KEY:
Sep 28 17:29:34 domain postfix/smtpd[20251]: warning: TLS library problem: 20251:error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib:ssl_rsa.c:669:
Lỗi đó được ghi lại ngay sau khi tôi cố gắng gửi thư từ máy chủ mới được cài đặt của mình bằng cách sử dụng SMTP SSL / TLS qua cổng 465 trong Thunderbird. Thunderbird sau đó nói với tôi một khoảng thời gian chờ xảy ra.
Google có một vài kết quả liên quan đến vấn đề đó, nhưng tôi không thể làm cho nó hoạt động với bất kỳ vấn đề nào. Tôi sẽ liên kết một số trong số họ ở đây nhưng là một người dùng mới, tôi chỉ được phép sử dụng hai siêu liên kết.
/Etc/postfix/master.cf của tôi trông giống như
smtp inet n - - - - smtpd
smtps inet n - - - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
và nmap cho tôi biết
PORT STATE SERVICE
[...]
465/tcp open smtps
[...]
/etc/postfix/main.cf của tôi trông giống như
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = no
#smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem #default postfix generated
#smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key #default postfix generated
smtpd_tls_cert_file = /etc/ssl/certs/postfix.pem
smptd_tls_key_file = /etc/ssl/private/postfix.pem
smtpd_use_tls = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smptd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost.com, localhost
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
mailbox_command = /usr/lib/dovecot/deliver
Các tệp * .pem đã được tạo như mô tả trong hướng dẫn ở trên, sử dụng
Postfix
To create a certificate to be used by Postfix use:
openssl req -new -x509 -days 3650 -nodes -out /etc/ssl/certs/postfix.pem -keyout /etc/ssl/private/postfix.pem
Do not forget to set the permissions on the private key so that no unauthorized people can read it:
chmod o= /etc/ssl/private/postfix.pem
You will have to tell Postfix where to find your certificate and private key because by default it will look for a dummy certificate file called "ssl-cert-snakeoil":
postconf -e smtpd_tls_cert_file=/etc/ssl/certs/postfix.pem
postconf -e smtpd_tls_key_file=/etc/ssl/private/postfix.pem
Tôi nghĩ rằng tôi không phải bao gồm /etc/dovecot/dovecot.conf ở đây, vì đăng nhập qua imaps và pop3s hoạt động tốt theo nhật ký. Chỉ có vấn đề là làm cho postfix sử dụng đúng các chứng chỉ tự tạo, tự ký.
Bất kỳ trợ giúp đánh giá cao!
EDIT: Tôi vừa thử hướng dẫn khác nhau này về việc tạo chứng chỉ tự ký cho postfix, vẫn nhận được cùng một lỗi. Tôi thực sự không biết những gì khác để kiểm tra.
Tôi cũng đã kiểm tra các thư viện SSL, nhưng tất cả dường như đều ổn:
root@domain:~# ldd /usr/sbin/postfix
linux-vdso.so.1 => (0x00007fff91b25000)
libpostfix-global.so.1 => /usr/lib/libpostfix-global.so.1 (0x00007f6f8313d000)
libpostfix-util.so.1 => /usr/lib/libpostfix-util.so.1 (0x00007f6f82f07000)
libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0x00007f6f82cb1000)
libcrypto.so.0.9.8 => /usr/lib/libcrypto.so.0.9.8 (0x00007f6f82910000)
libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0x00007f6f826f7000)
libdb-4.8.so => /usr/lib/libdb-4.8.so (0x00007f6f8237c000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00007f6f82164000)
libresolv.so.2 => /lib/libresolv.so.2 (0x00007f6f81f4e000)
libc.so.6 => /lib/libc.so.6 (0x00007f6f81beb000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f6f819e7000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007f6f817d0000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f6f815b3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6f83581000)
Sau khi làm theo Ansgar Wiechers, cuối cùng nó cũng hoạt động.
postconf -n
chứa các dòng như nó cần. Việc kiểm tra chứng chỉ / khóa thông qua openssl đã cho thấy rằng cả hai tệp đều hợp lệ.
Vì vậy, nó thực sự đã là một vấn đề quyền! Không biết rằng việc cài đặt các tập tin /etc/ssl/*/postfix.pem thành postfix: postfix là không đủ để postfix đọc các tập tin.