Forum Linux.général Routage mail

Posté par  (site web personnel) .
Étiquettes : aucune
0
25
fév.
2005
Salutations,

J'ai un problème assez simple en fait :
http://ftp.cqfd-corp.org/archi.png(...)
Le serveur de messagerie doit pouvoir recevoir les mails extérieurs alors qu'il n'est pas directement connecté à internet (masquerade).

J'ai pensé utiliser un programme du style "redir" (voire iptables) pour faire transiter le flux tcp/25 de l'extérieur du firewall vers le serveur de messagerie, mais j'obtiens alors un superbe relais ouvert (non ?).

J'ai la possibilité d'installer sendmail ou postfix sur le firewall, et/ou de modifier la configuration du sendmail du serveur de messagerie. Une des contraintes étant qu'il y'a environ 150 comptes sur le serveur de messagerie et que cette liste est très changeante, il m'est donc impossible de construire une liste d'alias ou quelque chose de ce genre sur le MTA du firewall.

Face à l'urgence de la situation, je suis ouvert à tout commentaire.
  • # euh ?

    Posté par  (site web personnel) . Évalué à 4.

    J'ai pensé utiliser un programme du style "redir" (voire iptables) pour faire transiter le flux tcp/25 de l'extérieur du firewall vers le serveur de messagerie, mais j'obtiens alors un superbe relais ouvert (non ?).


    Bah non, le fait d'être Open Relay c''est simplement si ton MTA à permet à n'importe qui d'envoyer un mail à n'importe qui, ça se situe au niveau de la config du MTA. D'une manière ou d'une autre si tu veux pouvoir recevoir des mails de l'extérieur, il faut forcément que tu aies un port 25 ouvert quelque part...

    Sinon ta deuxième solution est bonne aussi, il suffit de centraliser la liste des comptes dans un SGBD ou un annuaire LDAP centralisé. Le MTA en frontal la consulte pour savoir il doit accepter le mail, tout comme le MTA sur ton intranet pour savoir où stocker ce qu'il reçoit.

    https://damien.pobel.fr

    • [^] # Re: euh ?

      Posté par  (site web personnel) . Évalué à 2.

      Si je fais une redirection avec "redir" sur le firewall, les connexions vont arriver sur le serveur de messagerie avec l'IP "privée" du firewall (192.168.0.1) et il m'est donc impossible de faire la différence entre les envois légitimes et le reste, puisque tout arrive du même réseau (192.168.0.0) -> relais ouvert.
      • [^] # Re: euh ?

        Posté par  (site web personnel) . Évalué à 2.

        bah non parce que tu vas dire à ton mta d'accepter les mails pour ton domaine.com et mais pas pour le domaine ton-voisin.com

        https://damien.pobel.fr

        • [^] # Re: euh ?

          Posté par  (site web personnel) . Évalué à 2.

          Et les sortants ?
          • [^] # Re: euh ?

            Posté par  . Évalué à 3.

            En gros voilà comment ça se passe :

            - Un client se connecte sur le port 25 de ton serveur de mail : Bonjour je suis truc@machin.com et je veux envoyer à bidule@chouette.com

            - ton MTA regarde si il doit prendre pour lui les mails vers chouette.com.

            - Si oui il les envoye au MDA qui délivre le mail dans la boite locale.
            - Si non il regarde si il a le droit de relayer les mails.

            Pour vérifier si il a le droit de relayer les mails, soiy tes clients sont sur un sous réseau identifié, il n'y a pas de problème. Soit tes clients se connectent à ton serveur par l'intermédiaire de ton firewall, alors il faut faire de l'authentification :
            - Auth au travers de SASL/TLS
            - POP3BeforeSMTP
            - ou autres...
            • [^] # Re: euh ?

              Posté par  (site web personnel) . Évalué à 1.

              Le problème est justement qu'il m'est impossible de faire la distinction entre les demandes internes (toujours légitimes) et externes (qui arrive sur le même réseau, depuis le firewall) qui ne sont légitimes que si le domaine de destination est le bon.
              Ton idée d'authentifier les clients SMTP me semble pas mal du tout, mais je n'ai absolument pas la main sur la configuration des postes clients.
              Je pense que je vais utiliser en partie l'idée de Damien, en utilisant une autre machine à l'intérieur du réseau comme SMTP sortant, et configurer le serveur de messagerie pour qu'il n'accepte que des mails entrants dont les destination est donc le bon domaine. Je vais chercher de la doc sur sendmail sur ce point (si quelqu'un à un pointeur, ça m'intéresse aussi).

              Merci de vos réponses, les gars.
              • [^] # Re: euh ?

                Posté par  . Évalué à 1.

                la solution est d'avoir 2 ports ouverts... un pour l'entrée, un pour la sortie.
                Tu fais ton redir sur le port 10025, qui checke que le domaine destination est bien tondomaine.com
                sur le port 25, c'est la sortie standard, accessible que de l'interne, dixit une jolie règle sur ton firewall.
                • [^] # Re: euh ?

                  Posté par  (site web personnel) . Évalué à 1.

                  J'avais pensé à cette solution, mais je ne suis capable de la mettre en oeuvre qu'avec postfix (master.cf), et non avec le sendmail qui tourne sur le serveur de messagerie, que je ne maîtrise franchement pas assez pour me lancer cet après-midi dans cette solution, surtout directement sur ce réseau en production ;)
                  J'ai trouvé exim (c'est par un 3ème serveur basé sur une Debian que j'ai fait passer ma solution au problème [voir plus bas]) très accessible pour sa configuration.
      • [^] # Re: euh ?

        Posté par  (site web personnel) . Évalué à 3.

        Si je fais une redirection avec "redir" sur le firewall, les connexions vont arriver sur le serveur de messagerie avec l'IP "privée" du firewall (192.168.0.1)

        Même avec une redirection (=port forwarding?), les paquets arrivent quand même avec leur ip d'origine, et pas avec l'ip du firewall.
        • [^] # Re: euh ?

          Posté par  (site web personnel) . Évalué à 2.

          avec redir, si. Les règles iptables en amont (ce que j'ai représenté comme un routeur sur mon schéma est en fait une cascade de machine) sont tellement complexes qu'on essaye d'éviter d'y toucher tant que ça n'est pas absolument nécessaire (effets de bord assez fréquents), d'ou le choix de redir (accessoirement, je trouve ce logiciel très bien fichu pour un truc qui me semblait ne pouvoir être que bancal).
          • [^] # Re: euh ?

            Posté par  (site web personnel) . Évalué à 3.

            Dans ce cas, comme un firewall n'est pas censé envoyer de mails à l'extérieur, tu n'as qu'à dire au MTA de le considérer comme externe.

            Cependant, je te suggère de simplifier tes règles de firewall, bien souvent règles complexes = trou de sécu. Et puis si tu veux des stat pour les mails, ce sera plus simple si le serveur a les IP...
        • [^] # Re: euh ?

          Posté par  . Évalué à 1.

          Et un coup de SNAT? En plus je suis sur (enfin si je me souviens bien) que tu utilises du SNAT niol pour ton partage de connexion:-)
      • [^] # Re: euh ?

        Posté par  . Évalué à 1.

        les connexions vont arriver sur le serveur de messagerie avec l'IP "privée" du firewall (192.168.0.1) et il m'est donc impossible de faire la différence entre les envois légitimes et le reste, puisque tout arrive du même réseau (192.168.0.0) -> relais ouvert.
        Qu'est-ce qui t'empêche de faire un cas particulier pour l'addresse IP du firewall?
        • [^] # Re: euh ?

          Posté par  (site web personnel) . Évalué à 1.

          Pour la simple raison que ce serveur est lui aussi sensé envoyer des mails.
          • [^] # Re: euh ?

            Posté par  . Évalué à 2.

            Je suppose que par "ce serveur" tu parles du firewall. Tu pourrais faire une config qui regarde l'IP source. Si c'est 192.168.0.1, si le domaine est local tu acceptes sinon tu acceptes uniquement si le client est authentifié. Vu que tu contrôles le firewall, tu peux le forcer à s'authentifier. Ça me paraît beaucoup moins usine à gaz comme procédure que celles avec je ne sais combien de serveurs.
            • [^] # Re: euh ?

              Posté par  (site web personnel) . Évalué à 1.

              Effectivement, je n'y avais pas pensé. En revanche, je doute que cette configuration soit simple à appliquer, puisqu'elle implique les applications qui émettent des mails sur le firewall, et ce surtout en tenant compte de ce que j'explique dans un autre message à propos de sendmail, que je ne maîtrise pas.

              Reste que la solution en cours est basée sur des serveurs qui étaient déjà là, avec une moindre configuration (un sortant, et un entrant "par rebond"), ce qui ne me semble encore loin d'une usine à gaz.
  • # Résolu

    Posté par  (site web personnel) . Évalué à 1.

    Je me suis basé sur la méthode que j'énnonce un peu plus haut (redir + deux MTA : 1 entrant et 1 sortant), a priori avec succès.
    Merci pour vos réponses.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.