Postfix- relé aberto. Como configurar para que não seja?

Postfix- relé aberto. Como configurar para que não seja?

Eu configurei o Postfix, mas estou tendo problemas com a configuração.

Sempre que eu enviava e-mails para o servidor, ele rejeitava meus e-mails dizendo 'Relaying Denied', então alterei o seguinte em main.cf:

mynetworks = 0.0.0.0/0
mynetworks_style = subnet

Agora posso enviar e-mail e funciona, mas os testes MX dizem que é uma retransmissão aberta (obviamente não intencional).

Como posso resolver isto? Obviamente, quero que qualquer pessoa possa enviar e-mail para meu domínio, mas não tenho certeza da configuração.

Eu sei que posso alterar o mynetworks, mas isso não restringe quem PODE enviar e-mail para o servidor?

Responder1

O problema que te abre é o

mynetworks = 0.0.0.0/0

Porque em algum lugar abaixo você provavelmente o tem listado em

smtpd_recipient_restrictions = ... permit_mynetworks ...

Se você precisar enviar e-mail de qualquer ip, basta ativar um usuário/senha para enviar e-mail, cujo comum é sasl

Responder2

mynetworks deve conter apenas usuários confiáveis ​​que possam usar o servidor para retransmitir e-mails para outros domínios - caso contrário, como você descobriu, é uma retransmissão aberta. Você pode querer configurá-lo para 192.168.0.0/16, 10/8 ou 172.16.0.0/12 se estiver usando endereços RFC 1918 em sua rede interna.

As configurações que controlam se as pessoas podem enviar e-mails para o seu servidor incluem mydestination e virtual_mailbox_domains - leia a documentaçãoaquiouaqui.

Responder3

Conforme documentado emhttp://www.postfix.org/postconf.5.html#mynetworks:

mynetworks (padrão: consulte a saída "postconf -d")
A lista de clientes SMTP remotos "confiáveis" que possuem mais privilégios que "estranhos".

Em particular, clientes SMTP “confiáveis” podem retransmitir mensagens através do Postfix.
Veja a descrição do parâmetro smtpd_recipient_restrictions no manual postconf(5).

Responder4

use autenticação apenas para o seu ip: main.cf

smtpd_recipient_restrictions =
    permit_mynetworks
    reject_unauth_destination

use o arquivo para armazenar seu ip main.cf:

mynetworks = hash:/etc/postfix/network_table 

Use o script para atualizar seu ip se mudar (executar no cron)

#!/bin/bash
###
## sh /sx_sys/postfix_mynetwork_ip_checker.sh
LOGFILE="/var/log/smtp_relay.log"

curent_ip=$(dig @exemple.com exemple.com | awk '/^;; ANSWER SECTION:$/ { getline ; print $5 }')
#echo $curent_ip

saved_ip=$(</etc/postfix/network_table )
#echo $saved_ip
if [ "$curent_ip OK" != "$saved_ip" && -n "$curent_ip"]; then
echo "$curent_ip OK" > "/etc/postfix/network_table"
postmap /etc/postfix/network_table
echo "$(date) smtp allow for $curent_ip" >> $LOGFILE 2>&1
mail -s "smtp allow for $curent_ip $(date)" [email protected] < /dev/null
fi
exit 0

informação relacionada