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 [email protected]
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 [email protected] para [email protected] 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 [email protected] usando o Thunderbird sendo logado em [email protected] , 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 [email protected] 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.
postconf -n
parte. Copie e cole resultou em um arquivo cert e uma chave não relacionado e incidindo sobre a saída do que me deixe ver o erro de digitação no arquivo de configuração que eu já tinha verificado, mas perdeu ...Essas instruções não
chmod o= /etc/ssl/private/postfix.pem
dizem nada sobre o usuário que possui o arquivo.Nas minhas caixas, o
smtpd
processo é executado comopostfix
usuário. Verifique se opostfix
usuário pode acessar/etc/ssl/private/postfix.pem
. Ou possivelmente apenaschown postfix:postfix /etc/ssl/private/postfix.pem
.O outro problema óbvio é exatamente o que a mensagem de erro diz: Não há uma chave RSA válida nesse arquivo. Dê uma olhada
/etc/ssl/private/postfix.pem
e verifique se ele contém pelo menos algo que se parece com uma chave RSA. Não cole na sua pergunta.Na verdade, acabei de perceber que a mensagem de erro é para
/etc/ssl/certs/postfix.pem
, não/etc/ssl/private/postfix.pem
. Verifique também a propriedade, as permissões e o conteúdo/etc/ssl/certs/postfix.pem
.Essa mensagem de erro é um pouco confusa. Ele diz
cannot get RSA private key from file /etc/ssl/certs/postfix.pem
, mas a chave privada deve ser em/etc/ssl/private/postfix.pem
. Não tenho experiência suficiente com o Postfix usando TLS para saber se este é um bug do Postfix ou um erro na sua configuração.fonte
Cert tem que corresponder à chave, no meu caso não tinha nada a ver com permissões
crie um certificado e uma chave autoassinados https://msol.io/blog/tech/create-a-self-signed-ssl-certificate-with-openssl/
Espero que isto ajude
fonte
verifique se a chave não possui uma senha. Você pode removê-lo com
se eles estiverem juntos, use
A frase secreta emitirá um aviso nos logs dizendo que não foi possível obter a chave privada RSAA, que, por sua vez, desativa o suporte ao TLS. Espero que isso ajude alguém!
fonte