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 = hashetc/postfix/canonical
# ADDRESS REDIRECTION (VIRTUAL DOMAIN)
virtual_maps = hashetc/postfix/virtual
# "USER HAS MOVED" BOUNCE MESSAGES
# TRANSPORT MAP
default_transport = smtp
transport_maps = hashetc/postfix/transport
# ALIAS DATABASE
alias_maps = hashetc/postfix/aliases
alias_database = hashetc/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 = regexpetc/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/binusr/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 hashetc/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 pcreetc/postfix/recipient_checks.pcre, check_sender_access hashetc/postfix/sender_checks,check_sender_access hashetc/postfix/freemail_access, check_client_access hashetc/postfix/client_checks, check_client_access pcreetc/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 hashetc/postfix/clients, permit_mynetworks, check_relay_domains
smtpd_client_restrictions = check_client_access hashetc/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 hashetc/postfix/access, reject_non_fqdn_sender, local_recipient_maps = $alias_maps unix:passwd.byname
header_checks = regexpetc/postfix/headers_checks
smtpd_restriction_classes = from_freemail_host
from_freemail_host = check_client_access hashetc/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
hashetc/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
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: