postfix smtp_fallback_relay para mensagens adiadas para um único domínio

1

Eu uso o Postfix para enviar mensagens para um servidor de e-mail fora da minha organização, que freqüentemente rejeita / adia meu e-mail. Meu servidor Postfix vê que essas mensagens são adiadas e tentam novamente, acabando por passar. A entrega final pode levar até uma hora, o que deixa meus usuários insatisfeitos. Em comparação, o correio do meu servidor Postfix para outros hosts funciona normalmente.

Descobri agora um segundo MX não oficial para este domínio que não rejeita / adia o correio. Este segundo MX não aparece ao fazer uma consulta MX do DNS para o domínio. Portanto, para o domínio do problema, eu gostaria de usar esse segundo MX como fallback. Ou seja: sempre que o e-mail for adiado pelo MX principal, tente novamente no segundo MX não oficial.

Eu vejo que já existe uma configuração de postfix "smtp_fallback_relay". No entanto, a documentação parece indicar que não posso restringir o uso do fallback a um único domínio. A documentação também não menciona o tratamento de mensagens adiadas.

Então, existe uma maneira de configurar um host de fallback de domínio diferido e de repetição adiada no Postfix?

Para referência, estou incluindo minha saída pós-conf (os nomes de host e endereços IP são falsos):

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases, hash:/etc/postfix/legacy_mailman, ldap:/etc/postfix/ldap-aliases.cf
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
default_destination_concurrency_limit = 2
inet_interfaces = all
inet_protocols = all
local_destination_concurrency_limit = 2
local_recipient_maps = $alias_maps
mailbox_size_limit = 0
mydestination = myhost.my.network, localhost.my.network, localhost, my.network
myhostname = myhost.my.network
mynetworks = 127.0.0.0/8, [::ffff:127.0.0.0]/104, [::1]/128, 10.10.10.0/24
myorigin = my.network
readme_directory = no
recipient_delimiter = +
relay_domains = $mydestination
relayhost = 
smtp_fallback_relay = the.problem.host
smtp_header_checks = 
smtpd_banner = $myhostname ESMTP $mail_name
virtual_alias_maps = hash:/etc/postfix/virtual
    
por EdwardTeach 28.11.2012 / 01:26

2 respostas

4

smtp_fallback_relay não aceita mensagens adiadas; ele será tentado imediatamente quando o destino principal não estiver disponível.
Normalmente, isso é o que você deseja - conforme a configuração indica, é um fallback para o retransmitir e-mail.

Sugiro que você investigue por que este servidor de e-mail rejeita suas mensagens.

Dito isto, há várias maneiras de abordar isso.
A primeira - e mais fácil - solução seria falsificar esse MX localmente para que o postfix o inclua durante a entrega normal.
Para isso, defina smtp_host_lookup como nativo ; Isto irá consultar o seu arquivo / etc / hosts assim como o DNS (através do resolvedor nativo do sistema, ou, mais especificamente, através do que estiver configurado no nsswitch.conf.)

Você também pode instalar algo como dnsmasq para permitir que você substitua ou adicione entradas de DNS específicas a domínios existentes; se ambos os relés tiverem registros MX, esta é a única solução baseada em DNS, uma vez que o / etc / hosts só suporta registros A.

A solução de postfix envolve alguns truques de pesquisa, que só é possível ao usar mapas SQL:

Você precisa adicionar uma entrada transport_maps que consiste em uma pesquisa que pode retornar um resultado alternativo com base na manipulação fora de banda; por exemplo, uma verificação periódica da disponibilidade MX (via cron ou similar) poderia substituir uma tabela de consulta regex que altera o nexthop para esse domínio específico; O postfix selecionará as alterações nessas tabelas imediatamente.

    
por 28.11.2012 / 15:31
1

Então aqui estava a configuração que eu usei no Ubuntu Lucid:

  • apt-get install dnsmaq
  • em /etc/dnsmasq.d , adicione o arquivo problem_domain_mx_override.conf :

    mx-host=problem.domain,existing-mx.problem.domain,25
    mx-host=problem.domain,backdoor-mx.problem.domain,10
    
    • a porta dos fundos tem um valor mais baixo e, portanto, será tentada primeiro, mas voltará para o padrão mx se a porta traseira desaparecer
  • /etc/init.d/dnsmasq restart
  • em /etc/resolv.conf :

    search my.domain
    nameserver 127.0.0.1
    nameserver 8.8.8.8 # "normal" name servers
    
  • %código%
    • parece que uma recarga de postfix é insuficiente para aceitar o truque de DNS
por 29.11.2012 / 19:29

Tags