[Résolu] Limiter l'envoi de mail

Si j’indique 1000 mails par jour dans le fichier, chaque utilisateur pourra envoyer 1000 mails par jour.

Hum, cela fonctionne avec les utilisateurs virtuels de Postfix ou il faut un utilisateur système pour chaque compte ?
Merci pour tes réponses.

Pour le moment j’utilise Postfix avec des comptes virtuels.

Je n’aime pas beaucoup sur le principe car cela s’appuie sur MySql et s’il tombe tout le service mail tombe.
J’ai réussi à faire en sorte que le serveur web et le serveur ftp ne soient plus dépendants, je me planche à faire en sorte que le serveur mail suive le même chemin.

Peux-tu me montrer ton postfix-policyd.conf ?

Penses aussi à configurer postfix pour qu’il fasse appel à policyd.

Voici le fichier, j’ai enlever tous les commentaires des directives dans ce message pour une meilleure visibilité :

[quote]######################################################################

DATABASE CONFIG

######################################################################
MYSQLHOST="“
MYSQLDBASE=”“
MYSQLUSER=”“
MYSQLPASS=”“
MYSQLOPT=”"
FAILSAFE=1
DATABASE_KEEPALIVE=0

######################################################################

DAEMON CONFIG

######################################################################
DEBUG=0
DAEMON=1
BINDHOST=127.0.0.1
BINDPORT=10031
PIDFILE=/var/run/policyd.pid
SYSLOG_FACILITY=“LOG_MAIL | LOG_INFO”

######################################################################

SECURITY

######################################################################
CHROOT=/
UID=200
GID=200
CONN_ACL=“127.0.0.1”

#####################################################################

WHITELISTING (functional)

#####################################################################
WHITELISTING=1
WHITELISTNULL=0
WHITELISTSENDER=0
WHITELISTDNSNAME=0
AUTO_WHITE_LISTING=0
AUTO_WHITELIST_NUMBER=500
AUTO_WHITELIST_NETBLOCK=0
AUTO_WHITELIST_EXPIRE=7d

#####################################################################

BLACKLISTING (functional)

#####################################################################
BLACKLISTING=1
BLACKLISTDNSNAME=0
BLACKLIST_TEMP_REJECT=1
BLACKLIST_NETBLOCK=0
BLACKLIST_REJECTION="Abuse. Go away."
AUTO_BLACK_LISTING=0
AUTO_BLACKLIST_NUMBER=500
AUTO_BLACKLIST_EXPIRE=7d

#####################################################################

BLACKLISTING HELO (functional)

#####################################################################
BLACKLIST_HELO=1
BLACKLIST_HELO_AUTO_EXPIRE=0

#####################################################################

BLACKLIST SENDER (functional)

#####################################################################
BLACKLISTSENDER=1

#####################################################################

HELO_CHECK (functional)

#####################################################################
HELO_CHECK=1
HELO_MAX_COUNT=10
HELO_BLACKLIST_AUTO_EXPIRE=14d
HELO_AUTO_EXPIRE=7d

#####################################################################

SPAMTRAP (functional)

#####################################################################
SPAMTRAPPING=0
SPAMTRAP_REJECTION="Abuse. Go away."
SPAMTRAP_AUTO_EXPIRE=7d

#####################################################################

GREYLISTING (functional)

#####################################################################
GREYLISTING=1
GREYLIST_REJECTION="Please try later."
GREYLIST_X_HEADER=0
GREYLIST_HOSTADDR=3
TRAINING_MODE=0
TRAINING_POLICY_TIMEOUT=0
TRIPLET_TIME=1m
OPTINOUT=0
OPTINOUTALL=0
TRIPLET_AUTH_TIMEOUT=30d
TRIPLET_UNAUTH_TIMEOUT=2d

#####################################################################

SENDER THROTTLE (functional)

#####################################################################
SENDERTHROTTLE=1
SENDER_THROTTLE_SASL=1
SENDER_THROTTLE_HOST=0
QUOTA_EXCEEDED_TEMP_REJECT=0
SENDER_QUOTA_REJECTION="Quota Exceeded."
SENDER_SIZE_REJECTION="Message size too big."
SENDERMSGLIMIT=2000
SENDERRCPTLIMIT=10
SENDERQUOTALIMIT=250000000
SENDERTIMELIMIT=7d
SENDERMSGSIZE=10240000
SENDERMSGSIZE_WARN=50
SENDERMSGSIZE_PANIC=90
SENDER_INACTIVE_EXPIRE=31d

#####################################################################

RECIPIENT THROTTLE (functional)

#####################################################################
RECIPIENTTHROTTLE=1
RECIPIENTMSGLIMIT=64
RECIPIENTTIMELIMIT=1h
RECIPIENT_QUOTA_REJECTION="Quota Exceeded."
RECIPIENT_INACTIVE_EXPIRE=31d
[/quote]

Merci.
J’ai du merder quelque part car c’est quasiment identique.

je continue de fouiner. :slightly_smiling:

Tu as bien mit dans ton fichier de configuration de postfix sans doute /etc/postfix/main.cf de faire appel à policyd via une ligne du style “check_policy_service inet:127.0.0.1:10031” ?

Ouaip, je vais regarder tout ça.
Je te tiens informé. Merci.

Pourrais-tu aussi me poster ton main.cf ?
Je ne pige pas pourquoi ça ne fonctionne pas…

Je mets juste la partie du fichier intéressante :

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_non_fqdn_recipient, reject_non_fqdn_helo_hostname, reject_non_fqdn_sender, reject_non_fqdn_hostname, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_invalid_hostname, reject_invalid_helo_hostname, reject_unlisted_recipient, reject_unlisted_sender, reject_unauth_destination, reject_unauth_pipelining, check_client_access hash:/etc/postfix/internal_networks, check_sender_access hash:/etc/postfix/not_our_domain_as_sender, check_helo_access proxy:mysql:/etc/postfix/mysql-hello.cf, check_sender_access proxy:mysql:/etc/postfix/mysql-sender.cf, check_client_access proxy:mysql:/etc/postfix/mysql-client.cf, reject_rbl_client list.dsbl.org, reject_rbl_client zen.spamhaus.org, reject_rbl_client opm.blitzed.org, reject_rbl_client bl.spamcop.net, reject_rbl_client sbl-xbl.spamhaus.org, reject_rbl_client sbl.spamhaus.org, reject_rbl_client zen.spamhaus.org, reject_rbl_client cbl.abuseat.org, reject_rbl_client dul.dnsbl.sorbs.net, check_policy_service unix:private/spfpolicy, check_policy_service inet:127.0.0.1:10031, permit

J’ai vraiment un problème quelque part…
Quel tuto as-tu suivi pour l’installation de ton serveur de mail ?

Ma configuration est un mélange de plusieurs tuto avec ajout de quelques directives venant de la doc.
As tu essayé de suivre entièrement le tuto que j’avais mit en lien ?

J’ai du nouveau. :wink:

Si j’envoie des emails via un client genre Thunderbird/Outlook il me compte bien les email dans la bases de données.
Par contre via la fonction mail() de PHP il ne filtre ne rien du tout.

Qui est le propriétaire du script php ? un user ou www-data ?

Par www-data.

Si tous tes scripts sont lancés par www-data alors la limitation ne concernera que www-data et donc tous les utilisateurs se partageront le même quota d’envoi de mail.

Si tu as bien paramètré policyd, dans la table throttle tu devrais voir un enregistrement avec par exemple dedans "www-data@tld.com" où le count_max est égale à la limite que tu as configuré dans le fichier de conf de policyd et count_cur qui est la valeur en cours.

Le problème c’est que je n’ai rien en rapport avec www-data dans ma table !! :confused:
Je vais me construire un petit serveur mail ou je vais bidouiller tout ça proprement.