Um servidor do CentOS 7 tem o postfix, o dovecot e o mailx instalados. Eu sou capaz de fazer uma conexão IMAP para o servidor do meu cliente Thunderbird remoto em execução no meu devbox local. Mas eu não sou capaz de enviar e-mails através do servidor do meu Thunderbird local instalado no meu devbox. Depois de muita pesquisa, eu identifiquei que a razão é que o meu devbox ISP está bloqueando a porta 25. Então, eu quero mudar a porta de e-mail de saída para 465. Isso envolve mudanças no servidor firewalld e postfix, além de mudar em o devbox Thunderbird.
Esta questão é diferente de questões semelhantes na rede do stackexchange, porque estou perguntando como fazer isso no CentOS 7, que tem o firewalld complicando as coisas.
O problema com a simples alteração da porta SMTP é que outros servidores de e-mail usam a porta 25 para enviar e-mails uns aos outros. Se eu mudar a porta smtp para 465, ninguém será capaz de enviar e-mail para o meu servidor. Como faço para alterar o postfix, o firewalld e o Thunderbird, para que meu e-mail de saída passe pela porta 465, enquanto a porta 25 permanece aberta para receber de outros servidores de e-mail?
Eu preciso de sintaxe específica para arquivos de configuração específicos. Eu já sei a resposta envolve a criação de um host de retransmissão. Mas como configurar isso no CentOS 7?
Aqui está o que eu fiz até agora:
1.) Adicionei a linha 465 inet n - - - - smtpd
a /etc/postfix/master.cf
:
# =========================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ====================================================================
smtp inet n - n - - smtpd
465 inet n - - - - smtpd
2.) Em seguida, alterei o número da porta SMTP no firewalld para 465, tornando /usr/lib/firewalld/services/smtp.xml
como segue:
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>Mail (SMTP)</short>
<description>This option allows incoming SMTP mail delivery. If you need to allow remote hosts to connect directly to your machine to deliver mail, enable this option. You $
<port protocol="tcp" port="465"/>
</service>
3.) Ainda no servidor, digitei systemctl stop postfix
then systemctl start postfix
then systemctl status postfix
e tudo correu bem. Então eu digitei firewall-cmd --reload
sem problemas.
4.) Em seguida, mudei a porta smtp de saída no Thunderbird do meu devbox para 465.
5.) No servidor, segui o conselho do @ derobert e digitei tcpdump -n -i any tcp port 465
e tentei enviar um e-mail pelo servidor usando meu devbox Thunderbird, e o seguinte foi impresso no servidor:
tcpdump -n -i any tcp port 465
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
18:07:36.276193 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [S.], seq 3232257854, ack 2935370285, win 14480, options [mss 1460,sackOK,TS val 979486294 ecr 14200749,nop,wscale 7], length 0
18:07:36.361712 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [.], ack 1, win 115, options [nop,nop,TS val 14200832 ecr 979486294], length 0
18:07:36.362152 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [P.], seq 1:43, ack 1, win 114, options [nop,nop,TS val 979486380 ecr 14200832], length 42
18:07:36.366824 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [P.], seq 1:186, ack 1, win 115, options [nop,nop,TS val 14200832 ecr 979486294], length 185
18:07:36.366865 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [.], ack 186, win 122, options [nop,nop,TS val 979486385 ecr 14200832], length 0
18:07:36.454916 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [.], ack 43, win 115, options [nop,nop,TS val 14200920 ecr 979486380], length 0
18:07:36.454961 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [P.], seq 43:195, ack 186, win 122, options [nop,nop,TS val 979486473 ecr 14200920], length 152
18:07:36.539237 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [.], ack 195, win 123, options [nop,nop,TS val 14201009 ecr 979486473], length 0
18:09:20.466757 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [F.], seq 186, ack 195, win 123, options [nop,nop,TS val 14304941 ecr 979486473], length 0
18:09:20.467113 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [F.], seq 195, ack 187, win 122, options [nop,nop,TS val 979590485 ecr 14304941], length 0
18:09:20.550693 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [.], ack 196, win 123, options [nop,nop,TS val 14305025 ecr 979590485], length 0
^C
11 packets captured
12 packets received by filter
0 packets dropped by kernel
6.) Da mesma forma, também com base no conselho do @ derobert, no devbox eu digitei nc my.server.ip.addr 465 < /dev/null
e o terminal imprimiu 220 mydomain.com ESMTP Postfix
na resposta.
As configurações do servidor de saída (SMTP) no Thunderbird são:
Description: <Not Specified>
Server Name: mydomain.com
Port: 465
User Name: me
Authentication Method: Normal Password
Connection Security: SSL/TLS
Mas a conexão do Thunderbird ainda expira e o e-mail não é enviado. O que mais eu preciso fazer?
OBSERVAÇÃO: Quando eu altero /usr/lib/firewalld/services/smtp.xml
novamente para indicar a porta 25 e deixo tudo igual aos outros 5 passos acima, recupero a capacidade de receber e-mails do servidor, mas não consigo enviar e-mails através do servidor.
EDITAR:
@jsbillings sugeriu que eu definisse a porta de envios no master.cf. Para avançar, digitei postconf -M
no terminal para imprimir o conteúdo relevante do master.cf. Ainda não consigo enviar e-mails, mas aqui estão os resultados após as alterações que venho fazendo hoje durante o trabalho:
smtp inet n - n - - smtpd
587 inet n - - - - smtpd
submission inet n - - - - smtpd
-o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_sender_login_maps=hash:/etc/postfix/virtual
-o smtpd_sender_restrictions=reject_sender_login_mismatch
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache