comment configurer postfix pour envoyer un courrier local à un autre server local?

J'ai une paire de servers de messagerie composés principalement de Postfix, Procmail et Cyrus-IMAP et ils fonctionnent tous les deux. Les servers IMAP sont configurés dans une simple paire maître / réplique. Tout le courrier «normal» est accepté par Postfix de la maîsortingse qui le traite via Procmail pour la livraison au Cyrus-IMAP en cours d'exécution sur le même server. Les deux servers sont capables de s'exécuter de la sorte, mais seul le maître reçoit des courriels externes.

À l'heure actuelle, les counts locaux de chaque boîte envoient un courrier (par exemple, généré par des emplois cron) par l'intermédiaire de son Postfix local qui est livré localement au Cyrus-IMAP sur la même boîte.

Cependant, la réplication de Cyrus n'aime pas que les modifications se produisent directement sur le réplique, de sorte que je préférerais que le réplica fournisse son courrier local pour être livré au maître.

Je vois deux façons d'y parvenir:

  • modifier le transport local de la réplique pour envoyer un courrier à Postfix sur le server maître

ou

  • modifiez le procmail de la réplique pour envoyer le courrier à Cyrus-IMAP sur le server maître.

Il existe une troisième manière qui permet au server de réplication de transmettre tout au server maître (c'est-à-dire les e-mails internes et externes) mais cela semble quelque peu inutile. Je n'ai pas besoin de modifier la façon dont le courrier externe est traité – il est correct que l'une ou l'autre boîte envoie un courrier électronique externe via Postfix local qui la relie à l'extérieur.

Ce que j'aimerais vraiment faire, c'est simplement de modifier la façon dont les courriels internes sont traités sur la réplique afin de les transmettre au maître, soit dans Postfix, soit dans le server IMAP.

Configuration existante, fonctionnelle, de mon transport local dans master.cf de Postfix:

procmail-local unix - nn - - pipe flags=OR user=cyrus argv=/usr/bin/procmail -t -m RECIPIENT=${mailbox} SENDER=${sender} EXTENSION=${extension} /etc/procmailrc 

Existant, fonctionnant, configuration de livraison à Cyrus dans procmailrc:

 DELIVERMAIL="/usr/lib/cyrus/bin/deliver -r $SENDER -a $RECIPIENT $RECIPIENT 

Je le ferais encore plus tôt – en supprimant votre nom de domaine de mydestination , le courrier pour ce domaine devrait être envoyé au server répertorié comme MX pour votre domaine. Si vous souhaitez spécifier un server, par opposition à l'utilisation de la MX, vous devez utiliser le file /path/to/postfix/etc/transport pour cela. Ce file devrait ressembler à ceci:

 # all mails to our own domain should go to our main incoming server ourdomain.com smtp:[mainserver.ourdomain.com] 

Notez que les marques [] sont importantes – sans elles, votre server searchra toujours l'logging MX pour mainerver.ourdomain.com.

Après avoir édité le file, utilisez la command `postmap / path / to / postfix / etc / transport '

Vous devez également vous assurer que postfix sait utiliser ce file, en éditant /path/to/postfix/etc/main.cf avec la ligne suivante:

 transport_maps = hash:/path/to/postfix/etc/transport 

si votre système utilise des files db. Si au lieu de cela il utilise les files dbm, la ligne devrait être

 transport_maps = dbm:/path/to/postfix/etc/transport 

Vous pouvez essayer d'utiliser transport_maps, sur la réplique que vous avez ajoutée main.cf

 transport_maps = hash:/etc/postfix/transport 

Ensuite, dans / etc / postfix / transport, vous mettez

 localdomain smtp:yourmasterserver 

n'oubliez pas de:

 postmap /etc/postfix/transport 

et redémarrer postfix

La configuration est:

 $ grep domain.com /etc/postfix/* /etc/postfix/main.cf:relay_domains = domain.com /etc/postfix/relay_recipients:"@domain.com OK" Binary file /etc/postfix/relay_recipients.db matches /etc/postfix/transport:domain.com smtp:[ip.address.of.the.mail.server] Binary file /etc/postfix/transport.db matches 

N'oubliez pas non plus:

 $ postmap /etc/postfix/transport $ postmap /etc/postfix/relay_recipients $ /etc/init.d/postfix restart 

(CentOS, RedHat)