Andesi - forum

Forum francophone pour Debian

Vous n'êtes pas identifié(e).

#1 27/05/2007 17:37:10

Elrohir
Membre
Lieu : Lyon
Inscription : 09/10/2005
Messages : 64
Site Web

Interdire l'accès smtp aux machines extérieures

Hello,

j'me suis fait mon petit serveur mail avec postfix, avec tout ce qui va avec, les filtres dans les headers, et cie... il marche pas mal. J'ai lu des tonnes et des tonnes de tutos ainsi que la doc officielle. Mais il me reste une information que je n'arrive pas à résoudre, c'est à bloquer l'accès smtp aux machines extérieures. Mon serveur fait juste du pop/imap, rien d'autres.

J'avoue que je n'arrive pas à bloquer ça dans postfix (dans iptables, oui smile).
Les permit_network ne font rien là-dessus. Enfin, si, ils autorisent l'envoi de mail de n'importe qui du moment que c'est un mail stocké sur mon serveur. Or, ce n'est pas ça que je veux.

Je vous joint mon main.cf :

smtp_banner = $myhostname ESMTP (Debian / GNU)
biff = no
disable_vrfy_command = yes
#smtpd_helo_required = yes
append_dot_mydomain = no
mydestination = xxx.yyyy.net, localhost, localhost.yyyy.net
mydomain = xxx.yyyy.net
myhostname = xxx.yyyy.net
myorigin = $mydomain
relayhost =
header_checks = regexp:/etc/postfix/header_checks.cf
mynetworks = 127.0.0.0/8 91.121.29.185
inet_interfaces = all
smtpd_sender_restrictions =
        permit_mynetworks,
        reject_unknown_sender_domain,
        warn_if_reject reject_unverified_sender,
#smtpd_recipient_restrictions =
#        permit_mynetworks,
#        reject_unauth_destination,
#        reject_unknown_recipient_domain,
#        reject_non_fqdn_recipient
#    permit
smtpd_client_restrictions =
#        reject_unknown_client,
        permit_mynetworks
smtpd_etrn_restrictions = 
    reject
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_aliases.cf, mysql:/etc/postfix/mysql-virtual_aliases_mailbox.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailboxes.cf
virtual_mailbox_base = /var/spool/vmail/
virtual_uid_maps = static:2002
virtual_gid_maps = static:2002
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql-virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = "Sorry, full mailbox !"
virtual_overquota_bounce = yes

j'ai du décommenter pas mal d'options pour éviter certaines règles trop restrictives... Par exemple, les adresses [email protected] qui sont par défaut rejetées, c'est pas terrible smile

Merci de m'indiquer de bons conseils/tutos pour interdire cette question smile


ArchLinux (desktop), Debian Etch (serveur)

Hors ligne

#2 27/05/2007 17:51:53

braouazou
Membre
Inscription : 05/03/2005
Messages : 181

Re : Interdire l'accès smtp aux machines extérieures

Je ne comprends pas vraiment où se situe ton problème : si tu n'autorises pas l'accès à ton serveur SMTP depuis l'extérieur, comment vas-tu recevoir tes e-mails ?

Julien

Hors ligne

#3 27/05/2007 17:58:08

armen
Membre
Lieu : 48°03'03" N - 04°59'55" W
Inscription : 09/03/2004
Messages : 1 937

Re : Interdire l'accès smtp aux machines extérieures

Bonjour,

Même si l'extérieur ne peut pas utiliser un smtp local, on peut utiliser des outils style fetchmail pour aller chercher ses messages sur un serveur externe.


"La grandeur d'un métier est peut-etre, avant tout, d'unir des hommes : il n'est qu'un luxe véritable, et c'est celui des relations humaines." Antoine de Saint-Exupéry

Hors ligne

#4 27/05/2007 18:07:17

braouazou
Membre
Inscription : 05/03/2005
Messages : 181

Re : Interdire l'accès smtp aux machines extérieures

Oui, c'est vrai ;-) Mais ça limite l'intérêt d'un serveur smtp, d'autant que je vois qu'Elrohir utilise des utilisateurs virtuels...

Julien

Hors ligne

#5 27/05/2007 18:14:47

Elrohir
Membre
Lieu : Lyon
Inscription : 09/10/2005
Messages : 64
Site Web

Re : Interdire l'accès smtp aux machines extérieures

Hello,

je ne pensais pas que ma question était compliquée :-))
En fait, je veux que personne n'utilise l'adresse IP de mon serveur (ou un domaine/sous-domaine pointant dessus) pour envoyer des mails. La seule machine capable d'envoyer des mails sera ma machine locale.

Je veux que les utilisateurs externes ne puissent QUE recevoir leur mail (pop/imap). Mais je veux interdire l'envoie de mail pour tout le monde en passant par cette machine. Pour envoyer des mails, ils n'ont qu'à utiliser le serveur smtp de leur FAI smile

Est-ce possible de faire ça dans postfix ? Ou je dois faire mon bourrain dans iptables à rejetter tout ce qui rentre par le port 25 et qui n'est pas le loopback ? :-)

Dernière modification par Elrohir (27/05/2007 18:19:11)


ArchLinux (desktop), Debian Etch (serveur)

Hors ligne

#6 27/05/2007 18:34:10

braouazou
Membre
Inscription : 05/03/2005
Messages : 181

Re : Interdire l'accès smtp aux machines extérieures

C'est plus clair ;-)

check_client_access est fait pour cela.
Voir http://www.postfix.org/access.5.html

Julien

Hors ligne

#7 27/05/2007 18:38:01

Elrohir
Membre
Lieu : Lyon
Inscription : 09/10/2005
Messages : 64
Site Web

Re : Interdire l'accès smtp aux machines extérieures

Oui, j'avais vu ça, il me semble. Mais je ne cherche pas une liste de client à accepter, mais je cherche à rejetter tout. On est obligé de passer par une liste ?

Sinon, désolé de ne pas avoir été assez clair au début smile


ArchLinux (desktop), Debian Etch (serveur)

Hors ligne

#8 27/05/2007 18:46:38

braouazou
Membre
Inscription : 05/03/2005
Messages : 181

Re : Interdire l'accès smtp aux machines extérieures

Tu dois pouvoir rejeter tout grâce à une regex :
main.cf

smtpd_recipient_restrictions =  permit_mynetworks,
      check_client_access pcre:/etc/postfix/access,
      permit

access

/./ REJECT

Nécessite l'installation de postfix-pcre

/./ veut dire tout
Attention de bien placer la restriction *après* permit_mynetworks si tu veux pouvoir utiliser ton serveur depuis la machine locale ou le réseau local

Je n'ai pas testé, dis-nous si cela fonctionne...

Dernière modification par braouazou (27/05/2007 18:47:51)

Hors ligne

#9 27/05/2007 19:11:08

Elrohir
Membre
Lieu : Lyon
Inscription : 09/10/2005
Messages : 64
Site Web

Re : Interdire l'accès smtp aux machines extérieures

"smtpd_recipient_restrictions", ça ne va s'appliquer que à ceux qui veulent envoyer du courrier, c'est bien ça ?


ArchLinux (desktop), Debian Etch (serveur)

Hors ligne

#10 27/05/2007 19:25:06

braouazou
Membre
Inscription : 05/03/2005
Messages : 181

Re : Interdire l'accès smtp aux machines extérieures

Voir : http://postfix.traduc.org/index.php/pos … strictions

Par contre, je pense qu'il y a beaucoup plus simple, justement en relisant cette page...

smtpd_recipient_restrictions =
        permit_mynetworks,
        reject

devrait tout à fait correspondre à ton besoin...

Hors ligne

#11 27/05/2007 20:00:06

Elrohir
Membre
Lieu : Lyon
Inscription : 09/10/2005
Messages : 64
Site Web

Re : Interdire l'accès smtp aux machines extérieures

Euh, ça me bloque tous les mails entrants avec un message de ce type : Recipient address rejected :-/


ArchLinux (desktop), Debian Etch (serveur)

Hors ligne

#12 27/05/2007 20:15:03

braouazou
Membre
Inscription : 05/03/2005
Messages : 181

Re : Interdire l'accès smtp aux machines extérieures

Ce n'est pas ce que tu veux ?!? J'ai cru comprendre que tu voulais que seule la machine locale soit autorisée à utiliser le serveur SMTP, si elle est bien dans $my_networks, elle doit pouvoir le faire. Les autres machines ne pourront pas, c'est normal.

Hors ligne

#13 27/05/2007 21:29:05

Elrohir
Membre
Lieu : Lyon
Inscription : 09/10/2005
Messages : 64
Site Web

Re : Interdire l'accès smtp aux machines extérieures

Mais non ! Je veux juste bloquer l'ENVOIE de mail pour les autres machines.
Envoie de mail : localhost
Réception (pop/imap) : tout le monde


Or, avec cette règle, plus personne ne peut envoyer de mail à une adresse existant chez moi, quelque soit le smtp par lequel il passe...

Bon, ben j'vais bloquer le port 25 avec iptables... ça semble le plus simple à faire......... j'aurais pas l'impression de parler chinois au moins wink

Dernière modification par Elrohir (27/05/2007 21:33:02)


ArchLinux (desktop), Debian Etch (serveur)

Hors ligne

#14 27/05/2007 21:38:13

braouazou
Membre
Inscription : 05/03/2005
Messages : 181

Re : Interdire l'accès smtp aux machines extérieures

Ça aura bien le même effet...  Tu sembles ne pas comprendre le rôle d'un serveur SMTP.  Si tu bloques le port 25, personne ne pourra plus non plus contacter ton serveur depuis l'extérieur, tes utilisateurs ne pourront donc pas non plus recevoir de mail (oui, ils pourront toujours accéder à leur boîte via pop/imap, mais cela n'a rien à voir).

Avec permit_mynetworks, tu joues bien avec les restrictions : de l'extérieur, les autres machines ne pourront utiliser ton serveur SMTP UNIQUEMENT pour transmettre un message adressé à un domaine dont ton serveur est MX. Les machines listées dans $mynetworks pourront quant à elles utiliser le SMTP pour envoyer des messages à l'extérieur. Ton serveur n'est alors pas un open relay (et si je comprends bien, c'est ce que tu souhaites éviter). En aucun cas une machine extérieure à ton réseau ne pourrra envoyer un mail vers une autre machine extérieure...

Hors ligne

#15 27/05/2007 21:44:11

Elrohir
Membre
Lieu : Lyon
Inscription : 09/10/2005
Messages : 64
Site Web

Re : Interdire l'accès smtp aux machines extérieures

Hum... je semble comprendre...
Si je bloque le port 25, je pourrais toujours récupérer mes mils via POP/IMAP mais mon serveur ne recevra aucun mail qui lui sera destiné.
J'ai toujours pensé -à tord- que smtp ne servait qu'à envoyer des mails...

Ca commence à devenir un peu plus clair, là !

Si je comprends bien, il n'y a aucun moyen de bloquer l'envoie de mail par mon serveur depuis l'extérieur, sans bloquer les réceptions ?

Dernière modification par Elrohir (27/05/2007 21:45:07)


ArchLinux (desktop), Debian Etch (serveur)

Hors ligne

#16 27/05/2007 21:48:34

braouazou
Membre
Inscription : 05/03/2005
Messages : 181

Re : Interdire l'accès smtp aux machines extérieures

SMTP sert à Transférer les messages d'un serveur à l'autre (acheminer serait sans doute plus adapté, mais on perd le T de Simple Mail Transfer Protocol) : http://fr.wikipedia.org/wiki/Simple_Mai … r_Protocol te permettra de comprendre. POP et IMAP ne sont utiles aux utilisateurs distants que pour relever leur boite à lettres.

Hors ligne

#17 28/05/2007 09:30:46

Elrohir
Membre
Lieu : Lyon
Inscription : 09/10/2005
Messages : 64
Site Web

Re : Interdire l'accès smtp aux machines extérieures

Bonjour,

j'ai bien lu ce que tu m'as envoyé, et ça me fait bien comprendre.
Seulement, je viens de penser à autre chose?
Est-il possible (et efficace) de bloquer le flux sortants de postfix (pour en gros bloquer les autres utilisateurs de se servir de mon smtp pour envoyer des mails, même ds mon réseau).
On autorise tout ce qui sort par le port 25 qui vient de localhost, mais on rejette tout ce qui sort par le port 25 qui n'est pas de localhost.

Est-ce que ça marcherait ? Ou quelque soit l'utilisateur qui envoit un mail, c'est considéré comme venant de localhost puisque c'est mon postfix local qui envoit le mail ?


ArchLinux (desktop), Debian Etch (serveur)

Hors ligne

#18 28/05/2007 11:36:14

braouazou
Membre
Inscription : 05/03/2005
Messages : 181

Re : Interdire l'accès smtp aux machines extérieures

Pas convaincu que tu aies tout compris, et j'avoue ne pas comprendre non plus ce que tu veux dire.

Peux-tu expliquer le cas général ? A quoi sert ton serveur, qui sont les utilisateurs etc... Ça aidera sans doute à mieux comprendre ton objectif...

Hors ligne

#19 28/05/2007 14:41:45

Tihz
Membre
Lieu : Paname
Inscription : 02/11/2006
Messages : 876

Re : Interdire l'accès smtp aux machines extérieures

J'ai lu en diagonale mais je voulais preciser que, ce que Elrohir appelle mail entrant, arrive egalement par SMTP

Un petit schema plutot qu'un long discours :

Icedove --> Serveur SMTP (celui d'un FAI par ex.) --> Serveurs SMTP (ceux par lequel le mail transite) --> [postfix(SMTP) --> courier-pop(POP)] (machine d'Elrohir) ---> IceDove

Donc lorsque tu coupe ton serveur SMTP du monde exterieur, tu ne peux recevoir de mail depuis l'exterieur. Donc pour continuer a les recevoir depuis l'exterieur, tu dois accepter toutes les connexion externe sur postfix mais ne traiter que les mail concernant ton domaine (en gros tout les mails ayant un champ to: [email protected]). Ces restriction ce font dans cette partie : smtpd_recipient_restrictions.

J'espère que j'ai bien compris le sujet du mail.

Dernière modification par Tihz (28/05/2007 14:42:19)


Ce qu'il y a de bien avec les standards, c'est qu'il y en a beaucoup entre lesquels choisir.

Hors ligne

#20 28/05/2007 15:36:21

Elrohir
Membre
Lieu : Lyon
Inscription : 09/10/2005
Messages : 64
Site Web

Re : Interdire l'accès smtp aux machines extérieures

braouazou a écrit :

Pas convaincu que tu aies tout compris, et j'avoue ne pas comprendre non plus ce que tu veux dire.

Peux-tu expliquer le cas général ? A quoi sert ton serveur, qui sont les utilisateurs etc... Ça aidera sans doute à mieux comprendre ton objectif...

Hum.
Alors, mon serveur fait du mail avec postfix, et principalement du pop/imap.
J'aimerais EMPECHER les utilisateurs (càd tout le monde, je ne met pas de SASL ou autre) de se servir de mon smtp pour ENVOYER des courriers (que ce soit en interne ou en externe).

Je veux que mon serveur smtp ne serve qu'à recevoir les courriers des utilisateurs. Et c'est TOUT.
Je ne sais pas si postfix fait une distinction là-dessus. Plus j'avance, plus il me semble que non.

On a vraiment du mal à se comprendre par des phrases, alors parlons informaticiens :
/sbin/iptables -A OUTPUT -i eth0 -p tcp -i lo --dport 25 -j ACCEPT
/sbin/iptables -A OUTPUT -i eth0 -p tcp --dport 25 -j DROP

/sbin/iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT

Sinon, ce n'est pas grave, j'arrête. C'est un peu chiant d'avoir l'impression de parler chinois (alors que j'ai pas l'impression de parler une langue étrangère...), et pour vous d'avoir l'impression de parler à un neuneu.

J'veux juste qu'on ne se serve pas de mon smtp pour relayer ses messages, qui que ce soit, où que ce soit, pour qui que ce soit. MAIS que ce smtp puisse recevoir des messages qu'on lui envoit et les donner aux utilisateurs pour qu'il puisse les récup par POP ou IMAP.
Possible ou pas ? (oui/non)

Dernière modification par Elrohir (28/05/2007 15:39:23)


ArchLinux (desktop), Debian Etch (serveur)

Hors ligne

#21 28/05/2007 15:41:22

Elrohir
Membre
Lieu : Lyon
Inscription : 09/10/2005
Messages : 64
Site Web

Re : Interdire l'accès smtp aux machines extérieures

Tihz a écrit :

J'ai lu en diagonale mais je voulais preciser que, ce que Elrohir appelle mail entrant, arrive egalement par SMTP

Voilà. Ce qui entre par smtp, on prend. Ce qui sort par smtp, on vire. Possible ? smile Ou alors ça bloquera carrément tout ?

Dernière modification par Elrohir (28/05/2007 15:41:54)


ArchLinux (desktop), Debian Etch (serveur)

Hors ligne

#22 28/05/2007 16:33:47

Elrohir
Membre
Lieu : Lyon
Inscription : 09/10/2005
Messages : 64
Site Web

Re : Interdire l'accès smtp aux machines extérieures

Hop hop, et bien voilà : http://broux.developpez.com/articles/pr … nement.png
Sur cette image on voit comment fonctionne le transport d'un mail.
Eh bien je voudrais interdire le contraire. Je veux que mon MTA puisse recevoir des mails, mais pas en envoyer. Possible ? smile


ArchLinux (desktop), Debian Etch (serveur)

Hors ligne

#23 28/05/2007 17:07:02

Tihz
Membre
Lieu : Paname
Inscription : 02/11/2006
Messages : 876

Re : Interdire l'accès smtp aux machines extérieures

Oui c'est possible. Je pense qu'il suffit d'une regle comme celle-ci

smtpd_recipient_restrictions = reject_unauth_destination

En gros tout les destinations non autorisé sont rejeté. Celles autorisé sont celles parametré dans les variable $mydestination, $inet_interfaces, $proxy_interfaces, $virtual_alias_domains ou $virtual_mailbox_domains. Ainsi que dans $relay_domains.


Ce qu'il y a de bien avec les standards, c'est qu'il y en a beaucoup entre lesquels choisir.

Hors ligne

#24 28/05/2007 17:13:54

Elrohir
Membre
Lieu : Lyon
Inscription : 09/10/2005
Messages : 64
Site Web

Re : Interdire l'accès smtp aux machines extérieures

Ca va me filtrer aussi tout ce qui rentre, non ?


ArchLinux (desktop), Debian Etch (serveur)

Hors ligne

#25 28/05/2007 17:42:33

Tihz
Membre
Lieu : Paname
Inscription : 02/11/2006
Messages : 876

Re : Interdire l'accès smtp aux machines extérieures

Oui sauf ceux qui envoyer à $mydestination (dans ton cas [email protected] ou user_bidule@localhost ou [email protected])


Ce qu'il y a de bien avec les standards, c'est qu'il y en a beaucoup entre lesquels choisir.

Hors ligne

Pied de page des forums