Filtrer SMTP Postfix avec Access et Regexp

Filtrer SMTP Postfix avec Access et Regexp - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 26-03-2003 à 11:18:37    

salut,
 
J'ai un serveur sur lequel j'heberge un serveur de messagerie POSTFIX. J'aimerais empecher certaines adresses mail de mon serveur de recevoir et d'envoyer du courier ailleurs que sur mon domain(serveur).
 
Donc je pourrais mettre en regles des regles de filtrage ou niveau du champ "To" pour les entrées et au niveau du champ "From" pour les sorties.
 
Que dois-je utiliser pour ca ??
Je ne veux rien faire d'autres comme filtrage, et la solution la plus légére a mettre en place sera la mieux.
 
olivier


Message édité par olicel le 27-03-2003 à 12:13:35

---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 26-03-2003 à 11:18:37   

Reply

Marsh Posté le 26-03-2003 à 12:40:17    

[/][/]

olicel a écrit :

salut,
 
J'ai un serveur sur lequel j'heberge un serveur de messagerie POSTFIX. J'aimerais empecher certaines adresses mail de mon serveur de recevoir et d'envoyer du courier ailleurs que sur mon domain(serveur).
 
Donc je pourrais mettre en regles des regles de filtrage ou niveau du champ "To" pour les entrées et au niveau du champ "From" pour les sorties.
 
Que dois-je utiliser pour ca ??
Je ne veux rien faire d'autres comme filtrage, et la solution la plus légére a mettre en place sera la mieux.
 
olivier


 
En fait, tout ce passe au niveau du fichier etc/postfix/main.cf
qui inclu des regles de securite + il fait references a d'autres fichiers qu'il faut avoir dans le meme repertoire et passes a la moulinette avec la commande postmap et postalias pour des fichiers comme aliases.
 
Voici ma quelques fichiers relatif a la securite si ça t'interesse(je ne les ai pas tous ici car je ne suis pas chez moi) :
 
le fichier /etc/postfix/main.cf :
 
# SOFT BOUNCE
soft_bounce = yes
 
# LOCAL PATHNAME INFORMATION
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
 
# QUEUE AND PROCESS OWNERSHIP
mail_owner = postfix
default_privs = nobody
 
# INTERNET HOST AND DOMAIN NAMES
myhostname = nomtamachine.nomtondomaine
mydomain = nomtondomaine
 
# SENDING MAIL
myorigin = $myhostname
myorigin = $mydomain
 
# RECEIVING MAIL
inet_interfaces = $myhostname, localhost
 
mydestination = $myhostname, localhost.$mydomain, $mydomain
 
# TRUST AND RELAY CONTROL
mynetworks = 192.168.4.0/24, 127.0.0.0/8
relay_domains = $mydestination
 
# INTERNET OR INTRANET
relayhost =nomtamachine.nomtondomaine:25
relayhost = $mydomain
 
# REJECTING UNKNOWN LOCAL USERS
#local_recipient_maps = $alias_maps unix:passwd.byname
 
# ADDRESS REWRITING
sender_canonical_maps = hash:/etc/postfix/canonical
 
# ADDRESS REDIRECTION (VIRTUAL DOMAIN)
virtual_maps = hash:/etc/postfix/virtual
 
# "USER HAS MOVED" BOUNCE MESSAGES
 
# TRANSPORT MAP
default_transport = smtp
transport_maps = hash:/etc/postfix/transport
 
# ALIAS DATABASE
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
 
# ADDRESS EXTENSIONS (e.g., user+foo)
 
# DELIVERY TO MAILBOX
mail_spool_directory = /var/spool/mail
 
# EXTENSION (address extension), DOMAIN (domain part of address),
 
# IF YOU USE THIS TO DELIVER MAIL SYSTEM-WIDE, YOU MUST SET UP AN
# ALIAS THAT FORWARDS MAIL FOR ROOT TO A REAL USER.
mailbox_command = /usr/bin/procmail -a $DOMAIN -d $LOGNAME
   
# JUNK MAIL CONTROLS
#header_checks = regexp:/etc/postfix/header_checks
 
# FAST ETRN SERVICE
#fast_flush_domains = $relay_domains
#fast_flush_domains =
 
# SHOW SOFTWARE VERSION OR NOT
#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) (Mandrake Linux)
 
# PARALLEL DELIVERY TO THE SAME DESTINATION
local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 10
 
# DEBUGGING CONTROL
debug_peer_level = 2
#debug_peer_list = 127.0.0.1
#debug_peer_list = some.domain
debugger_command =
  PATH=/usr/bin:/usr/X11R6/bin
  xxgdb $daemon_directory/$process_name $process_id & sleep 5
 
# OTHER OPTIONS (Mandrake)
delay_warning_time = 4
 
# INSTALL-TIME CONFIGURATION INFORMATION
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-1.1.11/samples
readme_directory = /usr/share/doc/postfix-1.1.11/README_FILES
 
# LIMITATIONS
defaultdestination_recipient_limite = 20
maximal_queue_lifetime = 5
header_sizelimit = 102400
message_size_limit = 10240000
queue_min_free = 10000000
smtpd_error_sleep_time = 5
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 10
 
# SECURITY
disable_vrfy_command = yes
smtpd_helo_required = yes
#
smtpd_recipient_restrictions = check_client_access hash:/etc/postfix/clients, permit_mynetworks, check_relay_domains,reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient,reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, reject_unauth_destination, check_recipient_access pcre:/etc/postfix/recipient_checks.pcre, check_sender_access hash:/etc/postfix/sender_checks,check_sender_access hash:/etc/postfix/freemail_access, check_client_access hash:/etc/postfix/client_checks, check_client_access pcre:/etc/postfix/client_checks.pcre, reject_rbl_client relays.ordb.org, reject_rbl_client inputs.relays.osirusoft.com, reject_rbl_client dialups.relays.osirusoft.com, reject_rbl_client spamhaus.relays.osirusoft.com, reject_rbl_client proxies.relays.monkeys.com, reject_rbl_client opm.blitzed.org, permit_mynetworks, check_relay_domains, maps_rbl_domains = rbl.maps.vix.com, dul.maps.vix.com, relays.ordb.org, bl.spamcop.net
smtpd_sender_restrictions = reject_unknown_sender_domain, check_client_access hash:/etc/postfix/clients, permit_mynetworks, check_relay_domains
smtpd_client_restrictions = check_client_access hash:/etc/postfix/access, check_relay_domains, reject_maps_rbl, permit_mynetworks, check_relay_domains, permit_auth_destination, reject_unauth_destination, reject_unknown_recipient_domain, permit_mx_backup, reject_unknown_client, reject_unknown_sender_domain, check_sender_access hash:/etc/postfix/access, reject_non_fqdn_sender, local_recipient_maps = $alias_maps unix:passwd.byname
header_checks = regexp:/etc/postfix/headers_checks
smtpd_restriction_classes = from_freemail_host
from_freemail_host = check_client_access hash:/etc/postfix/freemail_hosts, reject  
 
le fichier /etc/postfix/client_checks.pcre :
 
# /etc/postfix/client_checks.pcre:
 
# Postfix' dbm/hash files don't allow CIDR notation, netmasks
# or address ranges, but you can achieve the same end with
# regular expressions.
#
# Again: these are in PCRE notation.  But you could accomplish
# the same with POSIX RE's.  (I just don't know how.)
 
# 10.9.8.0 - 10.9.9.255
/10\.9\.[89]\.\d+/ REJECT
 
# 10.9.8.0 - 10.9.10.255 is generally no good, but 10.9.8.7 is OK
/10\.9\.8\.7/  OK
/10\.9\.([89]|10)\.\d+/ 554 Go away. We don't want any!
 
 
le fichier /etc/postfix/recipient_checks.pcre:
 
# /etc/postfix/recipient_checks.pcre:
 
# Note: you have to have PCRE support support built in to Postfix
# at compile time to use this.  (Tho I've been told the following
# are valid POSIX RE's that do the same thing.)
#
# Postfix doesn't relay by default.  But it may *appear* to do so
# to some testers.  The first two statements below remove all
# doubt.
 
/^\@/  550 Invalid address format.
/[!%\@].*\@/ 550 This server disallows weird address syntax.
 
# Let email to the following destinations bypass all the remaining
# "reject" and "check" tests.  We always want to let email for these
# recipients in.
 
/^postmaster\@/ OK
/^hostmaster\@/ OK
/^abuse\@/ OK


---------------
Linuxois1 ex- Linuxois pour perte de mot de passe et @ adresse mail n'existant plus.
Reply

Marsh Posté le 26-03-2003 à 13:52:22    

j'ai deja essayé de trouver une solution au niveau de postifx, mais je suis arrivé a rien du tout :-( J'avoue etre un peu largué dans les regles de trie postfix
 
Pourrais tu me detailler un petit peu les paramètre qui doivent m'interresser pour faire mon trie. Ormis ce trie postfix fonctionne, donc explique moi juste les paramètre concerné par ce trie.
 
Je suppose, au vue de ton fichier, que ces paramétres sont a la fin ??


---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 26-03-2003 à 14:43:38    

olicel a écrit :

j'ai deja essayé de trouver une solution au niveau de postifx, mais je suis arrivé a rien du tout :-( J'avoue etre un peu largué dans les regles de trie postfix
 
Pourrais tu me detailler un petit peu les paramètre qui doivent m'interresser pour faire mon trie. Ormis ce trie postfix fonctionne, donc explique moi juste les paramètre concerné par ce trie.
 
Je suppose, au vue de ton fichier, que ces paramétres sont a la fin ??


 
Je peux pas te donner une explication detaillee pour chaque ligne de chaque fichier ce serait trop long mais de toute façon c'est assez claire par exemple on prend une ligne qui se trouve dans un fichier /etc/header_checks :
 
/^from: .+@.*indesirable.com/ REJECT
 
veut dire : Rejette toute adresse ayant pour nom de domaine indesirable.com
 
Cherche sur me web ya plein de site.
 
 
 
 


---------------
Linuxois1 ex- Linuxois pour perte de mot de passe et @ adresse mail n'existant plus.
Reply

Marsh Posté le 26-03-2003 à 14:51:51    

ok mais si je rejette les adresses en fonction du champ FROM, je vais les rejeter aussi pour le domaine local ???
 
Puis c pas tres clair les caracteres :
/^from: .+@.*indesirable


---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 26-03-2003 à 15:00:00    

olicel a écrit :

ok mais si je rejette les adresses en fonction du champ FROM, je vais les rejeter aussi pour le domaine local ???
 
Puis c pas tres clair les caracteres :
/^from: .+@.*indesirable


 
Oui tu rejette toute adresse se rattachant au domaine indesirable.com si ce dernier est fiché dans les blacks list.
mais d'autre regles specifient que tu rejette toutes adresses qui n'appartiennent pas a ton domaine cf fichier main.cf


---------------
Linuxois1 ex- Linuxois pour perte de mot de passe et @ adresse mail n'existant plus.
Reply

Marsh Posté le 26-03-2003 à 15:04:26    

moi ce que je veux faire c'est rejeter certaines adresses de mon domaine, lorsqu'elles essayent d'aller vers un autre domaine que le mien. Ou lorsqu'elles recoivent un mail en provenance d'un autre domaine que le mien. Je veux rien de plus !


---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 26-03-2003 à 15:15:24    

olicel a écrit :

moi ce que je veux faire c'est rejeter certaines adresses de mon domaine, lorsqu'elles essayent d'aller vers un autre domaine que le mien. Ou lorsqu'elles recoivent un mail en provenance d'un autre domaine que le mien. Je veux rien de plus !


 
Désolé, je ne sais pas. je n'interdis aucune adresse de mon domaine d'envoyer ou de recevoir du courrier. Je passe le relai à d'autres.


---------------
Linuxois1 ex- Linuxois pour perte de mot de passe et @ adresse mail n'existant plus.
Reply

Marsh Posté le 27-03-2003 à 12:13:08    

Bon j'ai un peu avancé ;-) grâce a vous ... mais la je vais denouveau avoir
besoin de vos lumieres.
 
Je suis arrivé a bloquer l'envoi des mails suivant l'expediteur. comme ceci
dans main.cf
smtpd_sender_restrictions = permit_auth_destination,check_sender_access
hash:/etc/postfix/access
 
Avec ca, les adresses contenu dans access (test@toto.fr    REJECT) ne
peuvent envoyé des mails que sur mon domain toto.fr :D et pas sur les
autres, donc le filtre pour les envois est ok.
 
Reste celui pour les reception :-( et la je pensais utiliser
smtpd-recipient_restrictions, mais j'arrive a tout bloquer , ou rien
bloquer, je n'arrive pas a laisser passer uniquement lorsque l'expediteur
viens de mon domaine ....
 
Donc j'ai regarder du coté de la table regexp.... et j'ai l'impression que c'est ma solution.
Seulement j'ai pas trop compris la syntaxe des commandes qu'on lui passe.
J'aimerais aussi faire des tri en fonction de To et de From, est-ce qu'on peut faire les deux en meme temps ??? genre ceci
To: * From: test@toto.fr REJECT
To: @toto.fr From test@toto.fr OK
 
Ca marcherais ca ??? on peut melancger From et To ??
 
olivier


---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 28-03-2003 à 08:59:22    

personne ne connais la table regexp ?


---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 28-03-2003 à 08:59:22   

Reply

Marsh Posté le 29-03-2003 à 18:25:36    

olicel a écrit :


Reste celui pour les reception :-( et la je pensais utiliser
smtpd-recipient_restrictions, mais j'arrive a tout bloquer , ou rien bloquer, je n'arrive pas a laisser passer uniquement lorsque l'expediteur viens de mon domaine ....


 
 
# By default, Postfix relays mail
# - from "trusted" clients whose IP address matches $mynetworks,  
# - from "trusted" clients matching $relay_domains or subdomains thereof,
# - from untrusted clients to destinations that match $relay_domains
#   or subdomains thereof, except addresses with sender-specified routing.
# The default relay_domains value is $mydestination.
#  
# In addition to the above, the Postfix SMTP server by default accepts mail
# that Postfix is final destination for:
# - destinations that match $inet_interfaces,
# - destinations that match $mydestination
# - destinations that match $virtual_maps.
# These destinations do not need to be listed in $relay_domains.
 
mydestination = $myhostname, localhost.$mydomain, $mydomain
relay_domains = $mydestination
 
Ca ne repond pas à tes attentes ?
 
Tu peux le coupler avec smtpd_recipient_restrictions qui lui filtre les entrées sur servmail.
 
smtpd_recipient_restrictions = check_recipient_access,  
     reject_rbl_client relays.ordb.org,
     reject_rbl_client bl.spamcop.net,
     reject_rbl_client rbl.maps.vix.com,
     reject_rbl_client dul.maps.vix.com,
     reject_rbl_client relays.mail-abuse.org,
     reject_rbl_client blackholes.mail-abuse.org,
     reject_rbl_client relays.osirusoft.com,
     permit_mynetworks, reject_unauth_destination
 
maps_rbl_reject_code = 554
 
Fred.


Message édité par _Evangelion_ le 29-03-2003 à 18:29:33
Reply

Marsh Posté le 01-04-2003 à 10:06:08    

salut,
 
Alors je recapitule, j'essai de créer des groupe d'adresse mail,
1 groupe qui peut envoyer et recevoir de partout
1 autre groupe qui peut envoyer/recevoir uniquement de mon domaine interne.
 
Donc j'ai créer une table access avec ceci
test@toto.fr EJECT
test2@toto.fr OK
 
Donc dans cette table je saisi chaque adresse valide sur mon domaine, et si je met 'OK' elle peut envoyer/recevoir de partout et si je met 'REJECT' elle peut envoyer/recevoir uniquement de mon domaine toto.fr
 
J'ai donc pensé a créer 2 regles, une utiliser lors de l'envoi des mails et une autre pour la reception des mails,
Pour l'envoi voici ce que j'ai fait dans main.cf, et ca marche:

smtpd_sender_restrictions = permit_auth_destination,check_sender_access
hash:/etc/postfix/access


 
Maintenant il me reste a créer une regle pour refuser les mails a la reception, si l'expediteur n'est pas interne au domain toto.fr, voila ce qu'il m'a ete propose par _Evangelion_
 

smtpd_recipient_restrictions = check_recipient_access, permit_mynetworks,reject_unauth_destination


 
J'ai essayé et ceci refuse effectivement les mail mis comme reject dans access, mais il les refuse quelques soit l'expediteur, donc meme si il provient de mon domain toto.fr
 
Comment faire ?


Message édité par olicel le 01-04-2003 à 10:07:27

---------------
toujours un petit mot gentil:
Reply

Marsh Posté le 02-04-2003 à 09:02:37    

up !


---------------
toujours un petit mot gentil:
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed