8 votes

Utiliser Postfix pour transférer le courrier destiné à un domaine vers la même adresse dans un autre domaine.

Existe-t-il un moyen de configurer Postfix pour qu'il accepte n'importe quel courrier pour un domaine (catch-all), et qu'il transfère ensuite ce courrier au même destinataire dans un domaine différent, sans tenir compte du fait que le destinataire existe réellement ?

J'utilise Postfix avec un support MySQL pour les comptes virtuels.

8voto

mailq Points 16792

Non, ce n'est pas directement possible. Il existe une exception à cette règle, décrite dans le document suivant http://www.postfix.org/ADDRESS_REWRITING_README.html#luser_relay

Une autre solution grossière consisterait à utiliser SQL (substr + concat) pour gérer cela pour vous dans la fonction virtual_alias_maps .

Editer : Oh. Il y a une dernière possibilité. Utiliser le délégation de pouvoir mécanisme et retour REDIRECT localpart@other-domain.example là où vous en avez besoin et DUNNO si vous ne voulez pas réécrire.

Édition 2 : Inspiré par Squidly (mais sa solution ne fonctionne pas !) vous pouvez configurer

virtual_alias_maps = pcre:/etc/postfix/forward_user.pcre, ...

et dans ce fichier, mettre

/^(.*)@adomain\.example/    $(1)@other-domain.example

(Attention au point échappé ( \. ) dans la première colonne.) Personnellement, je préfère cette version.

1voto

Richard Hansen Points 3530

Le type de table pcre n'étant pas disponible sur mon système, j'ai procédé comme suit :

  • En /etc/postfix/main.cf :

    virtual_alias_maps = regexp:/etc/postfix/virtual
  • En /etc/postfix/virtual :

    /^([^@]*)@olddomain/ $(1)@newdomain

1voto

BaseZen Points 364

Ce n'est pas directement possible ? J'ai trouvé cela très simple et direct, sans SQL, expressions régulières ou mécanismes de politique.

En main.cf :

virtual_alias_domains = alias-destination1.com alias-destination2.com
virtual_alias_maps = hash:/etc/postfix/virtual

En /etc/postfix/virtual :

# I want @true-destination.com to have two incoming aliases
@alias-destination1.com @true-destination.com
@alias-destination2.com @true-destination.com

Envoi d'un e-mail de test à partir du serveur :

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 smtp.myserver.com ESMTP Postfix
HELO smtp.myserver.com
250 smtp.myserver.com
MAIL FROM:<somebody@gmail.com>
RCPT TO:<anyuser@alias-destination1.com>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Message-ID: <4DC3723F.8010907@myserver.com>                                                                                                               
Date: Thu, 05 May 2011 23:59:59 -0400                                                                                                                    
From: Some Body <somebody@gmail.com>                                                                                                                   
To: anyuser@alias-destination1.com                                                                                                                                
Subject: Hello                                                                                                                                           
Just testing.                                                                                                                                            
.

Et le résultat actuel dans mail.log (j'ai amavis sur le port 10025 en cours d'exécution) :

Apr  6 22:39:43 smtp-a postfix/smtpd[4411]: connect from localhost[127.0.0.1]
Apr  6 22:39:43 smtp-a postfix/smtpd[4411]: 6B47641AF2: client=localhost[127.0.0.1]
Apr  6 22:39:43 smtp-a postfix/cleanup[3706]: 6B47641AF2: message-id=<4DC3723F.8010907@myserver.com>
Apr  6 22:39:43 smtp-a postfix/qmgr[3681]: 6B47641AF2: from=<somebody@gmail.com>, size=1115, nrcpt=1 (queue active)
Apr  6 22:39:43 smtp-a postfix/smtpd[4411]: disconnect from localhost[127.0.0.1]
Apr  6 22:39:43 smtp-a amavis-incoming[2159]: (02159-13) Passed CLEAN {RelayedInternal}, LOCAL [127.0.0.1]:42426 [127.0.0.1] <somebody@gmail.com> -> <anyuser@alias-destination1.com>, Queue-ID: 5C61F41AE5, Message-ID: <4DC3723F.8010907@myserver.com>, mail_id: hUbzH1PtXlzl, Hits: 2.605, size: 394, queued_as: 6B47641AF2, 1224 ms
Apr  6 22:39:43 smtp-a postfix/lmtp[3687]: 5C61F41AE5: to=<anyuser@alias-destination1.com>, relay=127.0.0.1[127.0.0.1]:10024, delay=25, delays=24/0/0/1.2, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 6B47641AF2)
Apr  6 22:39:43 smtp-a postfix/qmgr[3681]: 5C61F41AE5: removed

Ligne clé séparée pour accentuation :

Apr  6 22:39:43 smtp-a postfix/smtp[3684]: 6B47641AF2: to=<anyuser@true-destination.com>, orig_to=<anyuser@alias-destination1.com>, relay=10.0.0.245[10.0.0.245]:2525, delay=0.03, delays=0.01/0/0/0.02, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 705AA40459)
Apr  6 22:39:43 smtp-a postfix/qmgr[3681]: 6B47641AF2: removed

0voto

Kutyel Points 325

Si vous utilisez MySQL comme système de stockage, je pense que vous pouvez spécifier un "catch all forward" comme ceci :

Transferts de table

| source       | destination   |
|==============|===============|
| @example.com | @yoursite.com |

Si je lis bien la documentation, cela signifie que user1@example.com sera désormais transmis à user1@yoursite.com, etc.

J'ai trouvé ceci dans ce tutoriel de howtoforge

-1voto

Squidly Points 1635

Selon la façon dont vous avez configuré votre Postfix, vous pouvez utiliser un alias pour transférer tout le courrier.

éditer

Vous pouvez également mettre en place une redirection qui le fera facilement pour vous.

Dans /etc/postfix/main.cf, ajoutez ceci :

recipient_bcc_maps = pcre:/etc/postfix/forward_bcc.pcre

Ensuite, dans /etc/postfix/forward_bcc.pcre, ajoutez ceci :

/^user@olddomain.com/ user@newdomain.com

Il s'agit d'un peu de bricolage, mais cela fonctionnera pour transférer des utilisateurs spécifiques d'un domaine à un autre.

Vous pouvez également consulter cette pour savoir comment faire de la réécriture au sein même de Postfix.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X