Filtrer SMTP Postfix avec Access et Regexp - réseaux et sécurité - Linux et OS Alternatifs
Marsh Posté le 26-03-2003 à 12:40:17
[/][/]
| olicel a écrit : salut,  | 
 
 
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
etc/postfix/canonical 
 
# ADDRESS REDIRECTION (VIRTUAL DOMAIN) 
virtual_maps = hash etc/postfix/virtual
etc/postfix/virtual 
 
# "USER HAS MOVED" BOUNCE MESSAGES 
 
# TRANSPORT MAP 
default_transport = smtp 
transport_maps = hash etc/postfix/transport
etc/postfix/transport 
 
# ALIAS DATABASE 
alias_maps = hash etc/postfix/aliases
etc/postfix/aliases 
alias_database = hash etc/postfix/aliases
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
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
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/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/recipient_checks.pcre, check_sender_access hash etc/postfix/sender_checks,check_sender_access hash
etc/postfix/sender_checks,check_sender_access hash etc/postfix/freemail_access, check_client_access hash
etc/postfix/freemail_access, check_client_access hash etc/postfix/client_checks, check_client_access pcre
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
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
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, 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
etc/postfix/access, reject_non_fqdn_sender, local_recipient_maps = $alias_maps unix:passwd.byname 
header_checks = regexp etc/postfix/headers_checks
etc/postfix/headers_checks 
smtpd_restriction_classes = from_freemail_host 
from_freemail_host = check_client_access hash etc/postfix/freemail_hosts, reject
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 
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 ??
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  | 
 
 
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. 
  
 
 
 
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
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 ???  | 
 
 
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
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 !
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.
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
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  et pas sur les
 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 
Marsh Posté le 28-03-2003 à 08:59:22
personne ne connais la table regexp ?
Marsh Posté le 29-03-2003 à 18:25:36
| olicel a écrit :   | 
 
 
 
# 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.
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  | 
 
 
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 ?
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: