Acabei de seguir este tutorial para configurar um servidor de correio postfix com dovecot e mysql como back-end para usuários virtuais.
Agora que tenho o maior número de peças funcionando, posso me conectar ao POP3 (S) e IMAP (S).
Usando
echo TEST-MAIL | mail myaccount@hotmail.com
funciona bem, quando eu faço login na minha conta do hotmail, ele mostra o email.
Também funciona em sentido inverso, portanto, minha entrada MX para example.com finalmente foi propagada, por isso estou sendo capaz de receber e-mails enviados de myaccount@hotmail.com para myvirtualuser@example.com e visualizá-los no Thunderbird usando STARTTLS via IMAP.
Pesquisando um pouco mais depois que recebi a mensagem de erro " 5.7.1: Acesso de retransmissão negado " ao tentar enviar e-mails para myaccount@hotmail.com usando o Thunderbird sendo logado em myvirtualuser@example.com , descobri que meu servidor estava agindo como um "Open Mail Relay", o que - é claro - é uma coisa ruim.
Indo mais para as partes opcionais do tutorial, como este comentário e o outro histórico , decidi concluir essas etapas também para poder enviar e-mails por myvirtualuser@example.com pelo Mozilla Thunderbird, sem receber a mensagem de erro " 5.7.1 : Acesso de retransmissão negado "mais (como servidores de correio comuns rejeitam e-mails retransmitidos abertos).
Mas agora eu corri em um erro ao tentar obter postfix trabalhar com SMTPS, em /var/log/mail.log ele lê
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:
Esse erro é registrado logo após eu tentar enviar um email do meu servidor de email recém-instalado usando SMTP SSL / TLS pela porta 465 no Thunderbird. O Thunderbird então me diz que ocorreu um tempo limite.
O Google tem alguns resultados sobre esse problema, mas não consegui fazê-lo funcionar com nenhum deles. Gostaria de vincular alguns deles aqui, mas como novo usuário, tenho permissão para usar apenas dois hiperlinks.
Meu /etc/postfix/master.cf parece
smtp inet n - - - - smtpd
smtps inet n - - - - smtpd
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
e o nmap me diz
PORT STATE SERVICE
[...]
465/tcp open smtps
[...]
meu /etc/postfix/main.cf parece
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
Os arquivos * .pem foram criados como descrito no tutorial acima, usando
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
Acho que não preciso incluir o /etc/dovecot/dovecot.conf aqui, pois o login via imaps e pop3s funciona bem de acordo com os logs. O único problema é tornar o postfix corretamente usar os certificados autoassinados e auto-gerados.
Qualquer ajuda apreciada!
Edição: Acabei de experimentar este tutorial diferente sobre como gerar um certificado autoassinado para o postfix, ainda recebendo o mesmo erro. Realmente não sei mais o que testar.
Também verifiquei as bibliotecas SSL, mas tudo parece estar bem:
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)
Depois de seguir as instruções de Ansgar Wiechers, finalmente está funcionando.
postconf -n
continha as linhas como deveria. A verificação de certificado / chave via openssl mostrou que os dois arquivos são válidos.
Portanto, de fato tem sido um problema de permissões! Não sabia que exibir os arquivos /etc/ssl/*/postfix.pem no postfix: o postfix não é suficiente para o postfix ler os arquivos.