Estou tentando configurar o Postfix pela primeira vez. Eu não preciso de caixas de correio, quero apenas aliases virtuais, encaminhando [email protected] --> [email protected]
Meu Postfix está sendo executado em um contêiner Docker em um droplet Digital Ocean.
Eu tenho chegado até:
$ postalias -q [email protected]
[email protected]
... de dentro do contêiner, ou seja, meu arquivo /etc/postfix/virtual
está funcionando.
Além disso, de fora do contêiner na gota:
telnet example.com 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 example.com ESMTP Postfix (Ubuntu)
Mas do meu próprio computador:
$ telnet example.com 25
Trying <droplet IP>...
telnet: connect to address <droplet IP>: Operation timed out
telnet: Unable to connect to remote host
Acho que isso é esperado e correto como resultado da configuração mynetworks
config (veja abaixo) que é como recomendado pela Digital Ocean - Eu não quero hospedar um relé SMTP 'aberto'.
Eu tenho um registro MX para example.com.
configurado e posso ping example.com
bem e acessar sites nele. Também (do meu computador):
$ host -t mx example.com
example.com mail is handled by 1 example.com.
Então parece certo.
Mas se eu enviar uma mensagem de teste para [email protected]
, nada aparece e não vejo nada nos logs do Postfix ... Eu não sei dizer em que ponto ela falhou.
Não tenho certeza se o problema está na configuração do Postfix ou no roteamento para o container.
O container expõe a porta 25 (somente) e é executado via Fig com
ports:
- "25:25"
Do shell no droplet:
$ netstat -tulpn | grep 25
tcp6 0 0 :::25 :::* LISTEN 10680/docker-proxy
Meu /etc/postfix/main.cf
tem isso:
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
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_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = example.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = /etc/mailname, <container id>, localhost.localdomain, localhost, example.com
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_alias_domains = example.com
virtual_alias_maps = hash:/etc/postfix/virtual
inet_protocols = ipv4
Não estou muito claro sobre a distinção entre myhostname
(que foi originalmente definido como <container id>
) mydestination
e virtual_alias_domains
Atualizado
com saída do link
Connecting to <server IP>
220 example.com ESMTP Postfix (Ubuntu) [733 ms]
EHLO MXTB-PWS3.mxtoolbox.com
250-example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN [714 ms]
MAIL FROM: <[email protected]>
250 2.1.0 Ok [722 ms]
RCPT TO: <[email protected]>
454 4.7.1 <[email protected]>: Relay access denied [715 ms]
MXTB-PWS3v2 4006ms
Atualizar
Como @masegaloeh me ajudou a descobrir, meu servidor postfix estava basicamente funcionando. Eu tinha dois problemas que confundiam as coisas:
-
Devido a um erro no meu Dockerfile, eu tinha /var/log/mail.log
de propriedade do usuário root ... e é por isso que ele ficou vazio. Eu não vi nenhum erro sobre isso, mas basicamente o rsyslog não pôde escrever nele. Uma etapa chown syslog:adm /var/log/mail.log
corrigiu isso e pude ver que, de fato, o postfix estava manipulando e encaminhando mensagens para o alias.
-
Eu acreditei erroneamente que era possível fazer telnet para outros servidores na porta 25 do meu laptop, só porque achei que tinha feito coisas no passado que precisariam disso para funcionar. Mas na verdade não posso. No entanto, fui capaz de telnet example.com 25
de outro servidor, então, novamente, as coisas estavam realmente funcionando.
-
O envio de e-mails para o alias de outro servidor funciona e chega ao meu endereço de destino do Gmail.
-
Parece que o meu problema é, na verdade, com o Gmail ... quando eu envio a mensagem para [email protected]
da minha conta do Gmail, ela não aparece. Eu já tentei com aliases que eu tinha configurado em outra hospedagem ... algum trabalho e outros não ... levando a:
Conclusão:
parece que o Gmail só aceitará e-mails para aliases configurados em Settings > Accounts and Import > Send mail as
... infelizmente o Gmail agora exige que você especifique um servidor SMTP de terceiros para ele ao configurar um novo, então parece que terei que ir apertos com TLS etc na minha instalação de postfix.