Comment faire en sorte que Postfix utilise une autre adresse IP?

21

J'utilise le serveur de messagerie Postfix et j'ai 6 adresses IP disponibles. J'aimerais utiliser une autre adresse IP pour le serveur de messagerie Postfix pour l'envoi de courrier que celle utilisée par le serveur Web.

Comment puis-je faire ceci? Ma version de postfix est 2.3.3.

Par exemple: IP principale: 66.66.66.66 autre IP: 66.66.66.67

EarthMind
la source

Réponses:

25

Vous voulez smtp_bind_address=66.66.66.67et inet_interfaces=allou inet_interfaces=eth(whatever)que 66.66.66.67 est activé.

Apportez cette modification, puis arrêtez / démarrez le suffixe. Vous ne pouvez pas simplement recharger si vous changezinet_interfaces

Bill Weiss
la source
J'ai essayé l'option smtp_bind_address mais mon serveur de messagerie n'envoie plus de courrier. Et je ne pense pas que inet_interfaces doive être changé car je ne veux pas recevoir de courrier sur ce serveur. Remarque, cette adresse IP est uniquement utilisée pour l'envoi de courrier.
EarthMind
Veuillez poster votre postconf -nafin que nous puissions voir de quoi vous parlez. Anonymisez les IP en IP privées (10.xxx, etc.) et les domaines en exemple (com | net | org | quel que soit) si vous en avez besoin.
Bill Weiss,
2
smtp_bind_address était la bonne façon et j'ai juste eu un retard dans la livraison des e-mails car la nouvelle IP que j'utilisais n'avait pas d'enregistrement rDNS. Merci pour votre aide.
EarthMind
3
smtp_bind_addressdéfinit l'adresse IPv4, l'équivalent IPv6 estsmtp_bind_address6
Paul Tobias
16

Si vous utilisez la solution "smtp_bind_address", votre serveur de messagerie n'écoutera que l'adresse IP spécifiée pour le courrier entrant également. La même chose s'applique à la solution "inet_interfaces". Ce n'est peut-être pas la solution souhaitée si vous souhaitez écouter le courrier entrant sur plusieurs adresses IP / interfaces.

Ma solution est meilleure, car je suggère de ne pas modifier les paramètres par défaut "smtp_bind_address" et "inet_interfaces", de sorte que votre serveur de messagerie écoutera toujours le courrier entrant sur toutes les adresses IP.

Il suffit de faire une petite modification dans votre fichier /etc/postfix/master.cf.

Modifiez cette partie:

smtp unix - - - - - smtp
# Lors du relais du courrier en tant que MX de sauvegarde, désactivez fallback_relay pour éviter les boucles MX
relais unix - - - - - smtp
        -o smtp_fallback_relay =

pour ça:

smtp unix - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
# Lors du relais du courrier en tant que MX de sauvegarde, désactivez fallback_relay pour éviter les boucles MX
relais unix - - - - - smtp
        -o smtp_bind_address = 192.168.0.1
        -o smtp_fallback_relay =

Bien sûr, au lieu de 192.168.0.1, vous devez utiliser l'une de vos adresses IP, celle à partir de laquelle vous souhaitez envoyer votre courrier.

Zoltan

Zoltan
la source
Je pense qu'à l'époque, je voulais que le serveur de messagerie n'écoute qu'une seule adresse IP, pour les e-mails entrants et sortants. Mais néanmoins, j'apprécie les informations supplémentaires. Merci.
EarthMind
1
cela fonctionnera-t-il avec ipv6? Si oui, puis-je inclure deux adresses et me lier à l'une de chacune? Avec cette solution, je reçois toujours du courrier sortant via ipv6 et non pas l'adresse ipv4 que j'ai spécifiée
billynoah
J'ai ajouté -o smtp_bind_address6=1:2:3:4:5:6:7:8et semble fonctionner.
billynoah
1
Ce n'est pas exact. Il est possible de faire écouter postfix sur plusieurs interfaces en les ajoutant toutes inet_interfaces- ou simplement en les réglant sur all(par défaut) et en les configurant smtp_bind_address. La seule adresse spécifiée via smtp_bind_address (ou smtp_bind_address6) est ensuite utilisée indépendamment pour le processus d'envoi smtp de Postfix.
maxschlepzig
J'ai ajouté -o smtp_bind_address à mon master.cf et cela n'a pas fonctionné. Je l'ai utilisé dans main.cf et cela a fonctionné.
Areeb Soo Yasir
10

master.cf

Créez différentes interfaces. Un pour chaque domaine:

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. Désactivez toutes les autres cartes de transport, c'est-à-dire: # transport_maps = xxxxx

  2. Activer la carte de transport dépendante (nécessite le suffixe 2.7.x ou ultérieur)

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

transport_random_dependent.cf

Exemple:

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

Table 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.

L'instruction "RAND () LIMIT 1" n'est nécessaire que si vous souhaitez utiliser des transports aléatoires pour le même domaine.

Par exemple, vous souhaitez envoyer depuis mydomain.com à partir de 3 IP différentes.

Ensuite, vous créez 3 transports (rotation1, rotation2 et rotation3) avec 3 adresses IP différentes, puis définissez sur les lignes mysql:

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

Ensuite, lorsque postfix randomisera trois transports différents (tournez un à trois) pour envoyer ces e-mails.

Ramiro
la source
3

Modifiez /etc/postfix/main.cf et assurez-vous que la ligne suivante est présente

inet_interfaces = 66.66.66.67, localhost

Exécutez ensuite "postfix reload"

Matt Simmons
la source
2
Cela définit uniquement l'adresse IP sur laquelle écouter les connexions SMTP, et non l'adresse IP à utiliser pour envoyer le courrier sortant.
ub3rst4r