Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/12/2018, à 14:57

arthrax

Postfix mapping réseau par port

Bonjour,

Je suis en train de monter un serveur postfix 3.1 sur un ubuntu 16.04 pour faire de l'envoi de mail uniquement.
J'ai besoin d'envoyer en smtp et smtps et je souhaitais savoir comment faire du mapping réseau par port.

Exemple :
L'adresse 192.168.1.69 doit utiliser du smtp sur le port 25.
L'adresse 192.168.1.70 doit faire du smtps sur le port 587 avec encryptage et authentification depuis un serveur windows à partir d'un active directory.

Question 1 : Est-ce que Postfix est capable de le faire ?
Question 2 : Comment le mettre en place ?
Question 3 : Est-ce qu'il existe une interface web pour pouvoir ajouter, modifier ou supprimer ce mapping ip/port ?

Actuellement le serveur est monté et je peux envoyer des mails en smtp sur le port 25 en anonyme. J'utilise Webmin 1.9 pour l'administration.

Merci pour votre aide.

Hors ligne

#2 Le 31/12/2018, à 15:10

TontonAyo

Re : Postfix mapping réseau par port

tu peux essayer de bloquer certains ports avec certaines ip via iptables ? Webmin sais gérer iptables facilement

Hors ligne

#3 Le 31/12/2018, à 15:32

LeoMajor

Re : Postfix mapping réseau par port

bonjour,
peut-être, sender_dependent_default_transport_maps; un peu le même genre que ci-dessous; adapter le contexte

Solution - Postfix version 2.7 or above required:
/etc/postfix/master.cf

#smtp      inet  n       -       n       -       -       smtpd
127.0.0.1:smtp inet  n     -       n       -       -       smtpd
      -o syslog_name=postfix-localhost
      -o smtp_helo_name=localhost
      -o smtp_bind_address=127.0.0.1
      -o myhostname=localhost

65.xxx.xxx.100:smtp inet  n     -       n       -       -       smtpd
      -o syslog_name=postfix-mail.abc.com
      -o smtp_helo_name=mail.abc.com
      -o smtp_bind_address=65.xxx.xxx.100
      -o myhostname=mail.abc.com

65.xxx.xxx.200:smtp inet  n     -       n       -       -       smtpd
      -o syslog_name=postfix-mail.xyz.com
      -o smtp_helo_name=mail.zyx.com
      -o smtp_bind_address=65.xxx.xxx.200
      -o myhostname=mail.xyz.com

abc-out  unix -       -       n       -       -       smtp
   -o smtp_bind_address=65.xxx.xxx.100
   -o smtp_helo_name=mail.abc.com
   -o syslog_name=postfix-mail.abc.com

xyz-out  unix -       -       n       -       -       smtp
   -o smtp_bind_address=65.xxx.xxx.200
   -o smtp_helo_name=mail.xyz.com
   -o syslog_name=postfix-mail.xyz.com
/etc/postfix/main.cf

sender_dependent_default_transport_maps = hash:/etc/postfix/sender_transport
/etc/postfix/sender_transport

# Use source IP - 65.xxx.xxx.100
@abc.com                abc-out:
@example.com            abc-out:

# Use source IP - 65.xxx.xxx.200 
@xyz.com                xyz-out:
Run command to generate hash db

postmap hash:/etc/postfix/sender_transport
Restart/Reload postfix

service postfix reload
Testing

[root@localhost ~]# telnet 65.xxx.xxx.200 25
Trying 65.xxx.xxx.200...
Connected to 65.xxx.xxx.200.
Escape character is '^]'.
220 mail.xyz.com ESMTP Postfix
Sending email test

[root@localhost ~]# telnet localhost 25
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost ESMTP Postfix
helo localhost
250 localhost
mail from: spatel@xyz.com
250 2.1.0 Ok
rcpt to: spatel@gmail.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Hello world!
.
250 2.0.0 Ok: queued as 93E708207BA
Got to gmail Inbox > Show Original

Delivered-To: spatel@gmail.com
Received: by 10.xxx.xxx.xxx with SMTP id w64csp782609qgd;
        Tue, 9 Dec 2014 09:35:57 -0800 (PST)
X-Received: by 10.xxx.xxx.xxx with SMTP id o28mr4132552yha.168.1418146557180;
        Tue, 09 Dec 2014 09:35:57 -0800 (PST)
Return-Path: <spatel@xyz.com>
Received: from mail.xyz.com ([65.xxx.xxx.200])
        by mx.google.com with ESMTPS id n10si743294ykc.114.2014.12.09.09.35.56
        for <spatel@gmail.com>
        (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Tue, 09 Dec 2014 09:35:56 -0800 (PST)
...
...
Message-Id: <20141209173720.93E708207BA@localhost.localdomain>
Date: Tue,  9 Dec 2014 12:37:11 -0500 (EST)
From: spatel@xyz.com

Hello world!
Voila!! see it used 65.xxx.xxx.200 IP address to sent out email..

Received: from mail.xyz.com ([65.xxx.xxx.200])

(source)

Hors ligne

#4 Le 01/01/2019, à 02:15

arthrax

Re : Postfix mapping réseau par port

Bonjour,

Déjà merci pour vos réponses.

TontonAyo, c'est une bonne idée mais j'ai peur de me retrouver avec une usine à gaz. Je vais avoir des milliers d'ip à autoriser. Il faut que je regarde le nombre d'étape et la complexité depuis webmin.

LeoMajor, c'est une bonne idée mais pas dans mon contexte car je vais avoir beaucoup trop d'ip à configurer et à maintenir. Cette méthode est bien pour des vlan ou un découpage réseau.

Est-ce qu'il existe un systeme de connecteur d'envoi comme sur un serveur Exchange ?

Dernière modification par arthrax (Le 01/01/2019, à 15:32)

Hors ligne

#5 Le 04/01/2019, à 16:46

LeoMajor

Re : Postfix mapping réseau par port

il faut adapter; pour utiliser un agent de transport (par exemple testa)  par rapport  à une ip cliente.
si ip distante wan, hors mynetworks

smtpd_relay_restrictions = check_client_access regexp:/etc/postfix/auto_access_clients_denied.cf, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

si mynetworks (il devrait suffire dans ce cas)

smtpd_client_restrictions = reject_unknown_client, check_client_access regexp:/etc/postfix/auto_access_clients_denied.cf, permit

check_client_access  regexp:/etc/postfix/auto_access_clients_denied.cf

#/77\.11\.22\.33/ FILTER testa:[smtp3-g21.free.fr]:587  #OK fonctionne sur le wan + relais
#/ip_cliente/ FILTER testa:        # OK sans relais
/ip_cliente/FILTER agent_transport:[relais]:port

master.cf

testa  unix -       -       y       -       -       smtp -v
        -o smtp_helo_name=testa.testa
        -o smtpd_tls_security_level=encrypt
        -o smtpd_sasl_auth_enable=yes
        -o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unknown_client,permit

les classiques:

smtp_tls_security_level = may
smtp_sasl_auth_enable = yes
smtp_tls_CAfile = $smtpd_tls_CAfile
smtp_tls_cert_file = $smtpd_tls_cert_file
smtp_tls_key_file = $smtpd_tls_key_file
idem pour smtpd_
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd.cf  # si relais

à remarquer que FILTER ne fonctionne que si smtpd_delay_reject = yes (par défaut)

sender_dependent_default_transport_maps = regexp:/etc/postfix/sender_dependent_default_transport.cf
cat /etc/postfix/sender_dependent_default_transport.cf

# chocolat.fr est ton domaine de courrier
/chocolat\.fr/	testa:[smtp3-g21.free.fr]:587
#sans relais  /chocolat\.fr/     testa:

transport_maps = hash:/etc/postfix/transport.cf

contact@chocolat.fr	local:
chocolat.fr       lmtp:unix:private/dovecot-lmtp
# *	smtp:[smtp3-g21.free.fr]:587  # si relais
smtpd_sasl_exceptions_networks =

smtpd_sasl_exceptions_networks (default: empty)
What remote SMTP clients the Postfix SMTP server will not offer AUTH support to. ...
jamais testé, la plupart du temps, c'est inutile.

Hors ligne

#6 Le 09/01/2019, à 17:54

arthrax

Re : Postfix mapping réseau par port

Merci pour tout ce détail mais pour être honnête je suis perdu.
J'ai d'autre problème lié au certificat et TLS.

Je vais ouvrir un autre post et revenir sur celui là par la suite.

Merci

Hors ligne