我只是按照本教程进行操作,以使用dovecot和mysql作为虚拟用户的后端来设置postfix邮件服务器。
现在,我的大部分部件都可以工作了,可以连接到POP3(S)和IMAP(S)。
使用
echo TEST-MAIL | mail myaccount@hotmail.com
工作正常,当我登录到hotmail帐户时,它会显示电子邮件。
它也可以反向运行,因此我的example.com MX条目终于被传播了,因此我能够接收从myaccount@hotmail.com发送到myvirtualuser@example.com的电子邮件,并通过IMAP使用STARTTLS在Thunderbird中查看它们。
尝试使用登录到myvirtualuser@example.com的 Thunderbird 尝试将邮件发送到myaccount@hotmail.com时出现错误消息“ 5.7.1:中继访问被拒绝 ” 后,我需要做一些进一步的研究,我发现服务器正在运行作为“开放邮件中继”,这当然是一件坏事。
我进一步研究了本教程的可选部分,例如此注释和其他文章,我决定也完成这些步骤,以便能够通过Mozilla Thunderbird 通过myvirtualuser@example.com发送邮件,而不会收到错误消息“ 5.7.1” :“中继访问被拒绝 ”(因为普通邮件服务器拒绝打开的中继电子邮件)。
但是现在我遇到了一个错误,试图让SMTPS使用postfix,它在/var/log/mail.log中读取
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:
我尝试通过Thunderbird中的端口465使用SMTP SSL / TLS从新安装的邮件服务器发送邮件后,立即记录该错误。雷鸟然后告诉我发生了超时。
Google对于该问题有一些结果,但我无法将其与任何这些问题一起使用。我会在此处链接其中一些链接,但作为新用户,我只能使用两个超链接。
我的/etc/postfix/master.cf看起来像
smtp inet n - - - - smtpd
smtps inet n - - - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
而nmap告诉我
PORT STATE SERVICE
[...]
465/tcp open smtps
[...]
我的/etc/postfix/main.cf看起来像
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
* .pem文件是使用上面的教程中所述的方法创建的
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
我认为我不必在此处包含/etc/dovecot/dovecot.conf,因为根据日志,通过imaps和pop3s登录可以正常工作。唯一的问题是使postfix正确使用自行生成的自签名证书。
任何帮助表示赞赏!
编辑: 我只是试过这个不同的教程上生成后缀的自签名证书,仍然出现相同的错误。我真的不知道还要测试什么。
我也检查了SSL库,但一切似乎都很好:
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)
在按照Ansgar Wiechers的指示进行操作后,它终于可以工作了。
postconf -n
包含应有的线条。通过openssl进行的证书/密钥检查确实显示两个文件均有效。
因此,这确实是一个权限问题!不知道将/etc/ssl/*/postfix.pem文件整理成postfix:postfix不足以使postfix读取文件。