Como fazer o Postfix usar outro endereço IP?

21

Estou usando o servidor de correio Postfix e tenho 6 IPs disponíveis. Eu gostaria de usar outro IP para o servidor de correio Postfix para enviar e-mail do que o servidor da Web usa.

Como posso fazer isso? Minha versão do postfix é 2.3.3.

Por exemplo: IP principal: 66.66.66.66 outro IP: 66.66.66.67

EarthMind
fonte

Respostas:

25

Você quer smtp_bind_address=66.66.66.67e inet_interfaces=allou inet_interfaces=eth(whatever)que 66.66.66.67 está ativado.

Faça essa alteração e pare / inicie o postfix. Você não pode simplesmente recarregar se estiver mudandoinet_interfaces

Bill Weiss
fonte
Eu tentei a opção smtp_bind_address, mas meu servidor de email não envia mais emails. E não acho que o inet_interfaces precise ser alterado, pois não quero receber emails nesse servidor. Observe que esse IP é usado apenas para enviar email.
EarthMind 08/12/2009
Publique o seu postconf -npara que possamos ver o que você está falando. Anonimize IPs como IPs privados (10.xxx, etc) e domínios como exemplo. (Com | net | org | qualquer que seja), se achar necessário.
Bill Weiss
2
smtp_bind_address era o caminho certo e eu apenas tive um atraso na entrega do email, pois o novo IP que eu estava usando não tinha registro rDNS. Agradecemos sua ajuda.
EarthMind 08/12/2009
3
smtp_bind_addressdefine o endereço IPv4, o equivalente IPv6 ésmtp_bind_address6
Paul Tobias
16

Se você usar a solução "smtp_bind_address", o servidor de correio também escutará no endereço IP especificado também as mensagens recebidas. O mesmo se aplica à solução "inet_interfaces". Essa pode não ser a solução desejada se você deseja receber e-mails recebidos em vários endereços / interfaces IP.

Minha solução é melhor, porque sugiro não alterar as configurações padrão "smtp_bind_address" e "inet_interfaces", para que seu servidor de correio ainda escute as mensagens recebidas em todos os endereços IP.

Só é necessário fazer uma pequena alteração no seu arquivo /etc/postfix/master.cf.

Mude esta parte:

smtp unix - - - - - smtp
# Ao retransmitir correio como MX de backup, desative fallback_relay para evitar loops de MX
relé unix - - - - - smtp
        -o smtp_fallback_relay =

para isso:

smtp unix - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
# Ao retransmitir correio como MX de backup, desative fallback_relay para evitar loops de MX
relé unix - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
        -o smtp_fallback_relay =

Obviamente, em vez de 192.168.0.1, você deve usar um dos seus endereços IP, aquele para o qual deseja enviar seu email.

Zoltan

Zoltan
fonte
Eu acho que na época eu queria que o servidor de email escutasse apenas um endereço IP, para email de entrada e saída. Mas, no entanto, agradeço as informações extras. Obrigado.
EarthMind
1
isso vai funcionar com o ipv6? Em caso afirmativo, posso incluir dois endereços e associar a um de cada? Com esta solução ainda estou recebendo emails de saída em ipv6 e não o endereço IPv4 eu tenha especificado
billynoah
Eu adicionei -o smtp_bind_address6=1:2:3:4:5:6:7:8e parece funcionar.
Billynoah 5/05
1
Isso não é exato. Ele é possível fazer postfix ouvir em múltiplas interfaces através de adicionar todos eles para inet_interfaces- ou apenas definindo-o como all(o padrão) e configurar smtp_bind_address. O único endereço especificado via smtp_bind_address (ou smtp_bind_address6) é usado independentemente para o processo de envio do Postfix smtp.
maxschlepzig
Adicionei o -o smtp_bind_address ao meu master.cf e não funcionou. Eu usei no main.cf e funcionou.
Areeb Soo Yasir
10

master.cf

Crie diferentes interfaces. Um para cada domínio:

rotate1  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-rotate1
          -o smtp_helo_name=domainone.com.br
          -o smtp_bind_address=173.111.111.1

rotate2  unix -       -       n       -       -       smtp
          -o syslog_name=postfix-rotate2
          -o smtp_helo_name=domaintwo.com.br
          -o smtp_bind_address=173.111.111.2

main.cf

  1. Desative todos os outros mapas de transporte, ou seja: # transport_maps = xxxxx

  2. Ativar mapa de transporte dependente (requer o postfix 2.7.x ou posterior)

sender_dependent_default_transport_maps = mysql: /etc/postfix/config/transport_random_dependent.cf

transport_random_dependent.cf

Exemplo:

user = postfix
password = mypassword
dbname = postfixdb
hosts = localhost
query = SELECT transport FROM transport_random WHERE domain = '%d' AND status='1' ORDER BY RAND() LIMIT 1

Tabela transport_random

Column "transport" = rotate1, rotate2, rotate3, rotate4 (etc)
Column "domain" = sender domains (replaced by %d)
Column "status" = boolean (0 or 1) if is enabled the transport.

A instrução "RAND () LIMIT 1" é necessária apenas se você desejar usar transportes aleatórios para o mesmo domínio.

Por exemplo, você deseja enviar do meu domínio.com de 3 IPs diferentes.

Então, você cria 3 transportes (rotate1, rotate2 e rotate3) com 3 IPs diferentes e, em seguida, define as linhas do mysql:

transport = rotate1 | domain = mydomain.com
transport = rotate2 | domain = mydomain.com
transport = rotate3 | domain = mydomain.com

Então, quando o postfix aleatoriamente três transportes diferentes (gire um para três) para enviar esses e-mails.

Ramiro
fonte
3

Edite /etc/postfix/main.cf e verifique se a seguinte linha está presente

inet_interfaces = 66.66.66.67, localhost

Em seguida, execute "postfix reload"

Matt Simmons
fonte
2
Isso define apenas o endereço IP para escutar as conexões SMTP, e não o endereço IP a ser usado para enviar e-mails enviados.
Ub3rst4r