postfix script de retransmissão smtp

1

Eu tenho um servidor Postfix e o uso com o Outlook (POP / SMTP).

Eu tenho endereços de remetentes diferentes para uma conta. Agora quero configurar um relay para um endereço de remetente específico. Por exemplo, eu tenho postfix para o meu domínio principal domain1.com. Agora eu tenho um endereço de remetente que é domain2.com.

Para esse endereço de remetente, quero que o postfix envie mensagens para um segundo servidor SMTP. Eu acho que isso deveria ser possível sem problemas.

Mas o problema é que eu tenho que criar um túnel SSH para o segundo servidor para se conectar ao Servidor SMTP. Mas eu não posso usar uma conexão SSH persistente, então eu quero saber se é possível que o postfix execute algum script antes de retransmitir o email para o segundo servidor SMTP.

Eu já encontrei algumas informações para executar um script ao receber e-mails, mas quero apenas estabelecer o túnel SSH antes que o postfix retransmita o e-mail para o segundo servidor SMTP.

    
por Peter Sander 31.10.2013 / 16:33

2 respostas

2

Exatamente como você implementa, depende de você, mas você pode criar seu próprio transporte, e esse transporte pode ser um script, ou daemon, etc.

Se você pudesse manter o túnel, seria muito fácil, basta definir um

domain2.com smtp:127.0.0.1:2000 (or whatever port you assigned locally)

transporte para cima.

    
por 31.10.2013 / 17:07
2

O postfix não suporta a ligação de scripts na entrega. Para contornar isso, você pode configurar um crontab para executar o script especial. Este script irá:

  1. Configurando o túnel SSH
  2. Fila de descarga.

Primeiro, defina sender_dependent_relayhost_maps com o valor do lado direito como sua porta de túnel (por exemplo, porta 2525).

#/etc/main.cf
sender_dependent_relayhost_maps = hash:/etc/postfix/sshtunnel

#/etc/postfix/sshtunnel
domain2.com smtp:[127.0.0.1]:2525

Quando o túnel não estiver conectado, o postfix irá temporário adiar o email devido a Connection refused -error. Então você não se preocupa em perder um email.

Em seguida, configure o crontab para executar o script acima. Aqui o pseudo-script para atingir esses objetivos. Pequena modificação de este script original .

#!/bin/sh

#setup ssh tunnel. modify the parameter for your needs
ssh -L 2525:localhost:25 [email protected]

# Start mail deliveries.
/usr/sbin/sendmail -q

# Allow deliveries to start.
sleep 10

# Loop until all messages have been tried at least once.
while mailq | grep '^[^ ]*\*' | grep domain2.com >/dev/null
do  
    sleep 10
done
    
por 01.04.2015 / 07:05