Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Postfix, Maildrop et les quotas

18 réponses
Avatar
Frédéric Massot
Bonjour,

Sur un serveur de messagerie, il y a d'installé Postfix,
Courier-pop/imap et Maildrop pour délivrer les mails dans les boites
virtuels. Les quotas sont gérés par Maildrop.

Dans le fichier "main.cf", il y a :
virtual_transport = maildrop
maildrop_destination_recipient_limit = 1


Et dans le fichier "master.cf", il y a :
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/bin/maildrop -w 90 -d $user@$nexthop
2 $user $nexthop $sender


Mon problème est que lorsque les quotas sont atteints, les mails ne sont
pas rejetés, mais mis dans la file d'attente.

postfix/pipe: to=<contact@toto.com>, relay=maildrop, delay=167816,
delays=167810/0.03/0/5.8, dsn=4.3.0, status=deferred (temporary failure.
Command output: maildrop: maildir over quota. )

Le postconf :

$ postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases, mysql:/etc/postfix/maps/sql-aliases.cf
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
config_directory = /etc/postfix
content_filter = smtp-amavis:[127.0.0.1]:10024
inet_interfaces = all
mailbox_size_limit = 0
message_size_limit = 15728640
mydestination = mail.toto.net, localhost.toto.net, , localhost
mydomain = toto.net
myhostname = mail.toto.net
mynetworks = 127.0.0.0/8, 123.123.123.0/24
myorigin = $myhostname
recipient_delimiter = +
relay_domains = mysql:/etc/postfix/maps/sql-mx-domains.cf
relayhost =
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated,
check_helo_access hash:/etc/postfix/access_helo,
reject_invalid_hostname, reject_non_fqdn_hostname
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated, reject_unauth_destination,
reject_non_fqdn_sender, reject_non_fqdn_recipient
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sasl_security_options = noanonymous
smtpd_sender_login_maps = mysql:/etc/postfix/maps/sql-smtp-auth.cf
smtpd_sender_restrictions = permit_mynetworks,
reject_unknown_sender_domain, reject_non_fqdn_sender
smtpd_tls_auth_only = no
smtpd_use_tls = no
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/maps/sql-aliases.cf
virtual_gid_maps = static:5000
virtual_mailbox_base = static:/home/vmail
virtual_mailbox_domains = mysql:/etc/postfix/maps/sql-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/maps/sql-mailboxes.cf
virtual_minimum_uid = 1000
virtual_transport = maildrop
virtual_uid_maps = static:5000


Voyez-vous d'où peut venir le problème, pourquoi les mails ne sont pas
rejetés avec la notification habituelle de dépassement de quota ?

Merci.
--
==============================================
| FRÉDÉRIC MASSOT |
| http://www.juliana-multimedia.com |
| mailto:frederic@juliana-multimedia.com |
===========================Debian=GNU/Linux===


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

8 réponses

1 2
Avatar
mouss
Frédéric Massot wrote:
mouss wrote:
Frédéric Massot wrote:
Le problème quand les quotas sont atteints, c'est que les émetteurs
des mails ne sont pas avertis immédiatement que leurs mails n'ont pas
été distribués. Postfix place les mails dans la file d'attente,
re-essaye régulierement et au bout de quelques jours avertit
l'émetteur que son mail n'a pas été délivré.



C'est pareil à la poste. Après tout, smtp n'est pas un protocole de
messagerie instantanée. Lorsqu'une erreur "temporaire" est detectée,
le serveur doit garder le message et réessayer, et ce pendant une
certaine durée (configurable), généralement de 4 à 5 jours. certains
serveurs peuvent activer les notifications de délai pour informer
l'expéditeur (mais ça devient lassant si ça arrive souvent). Dans tous
les cas, la livraison n'est pas garantie (si le disque meurt après que
le message a été mis en queue, y a rien à faire), et en ces jours
spamatiques, ça l'est de moins en moins (parfois, les mails sont mis
en quarantaine ou dans un dossier qui peut être inconsultable
tellement il contient de pourriel. mais les mails commencenet aussi à
disparaitre, tout simplement! et il n'y a pas que hotmail qui fait
disparaitre les messages).



J'ai un autre serveur de messagerie avec Postfix, sans hôte virtuel
(compte Unix) et avec les quotas du système de fichier.

Avec celui-ci lorsque les quotas d'une boite sont atteints, l'émetteur
d'un mail vers cette boite à tout de suite un mail en retour lui
indiquant que son mail n'a pas été délivré pour cause de quota dépassé.

J'aimerai avoir le même fonctionnement avec Maildrop, est-ce possible ?




En principe, maildrop fait pareil. il faudrait que tu simules une
livraison à une boute pleine et que tu voies quel est le code de retour
(l'exists status). par contre, il faut que la boite soit pleine au sens
de maildrop (courier) et non au sens du système de fichiers ou au sens
d'un serveur imap avec qui maildrop ne sait pas s'entendre.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Frédéric Massot
mouss wrote:
Frédéric Massot wrote:


[...]
Avec celui-ci lorsque les quotas d'une boite sont atteints, l'émetteur
d'un mail vers cette boite à tout de suite un mail en retour lui
indiquant que son mail n'a pas été délivré pour cause de quota dépassé.

J'aimerai avoir le même fonctionnement avec Maildrop, est-ce possible ?




En principe, maildrop fait pareil. il faudrait que tu simules une
livraison à une boute pleine et que tu voies quel est le code de retour
(l'exists status). par contre, il faut que la boite soit pleine au sens
de maildrop (courier) et non au sens du système de fichiers ou au sens
d'un serveur imap avec qui maildrop ne sait pas s'entendre.



Maildrop retourne le code 75, ce qui correspond à EX_TEMPFAIL. Il
faudrait qu'il retourne le code 77 (EX_NOPERM) comme l'indique la page
de manuel de deliverquota.


--
============================================= | FRÉDÉRIC MASSOT |
| http://www.juliana-multimedia.com |
| mailto: |
==========================Þbian=GNU/Linux==

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
mouss
Frédéric Massot wrote:
mouss wrote:
Frédéric Massot wrote:


[...]
Avec celui-ci lorsque les quotas d'une boite sont atteints, l'émetteur
d'un mail vers cette boite à tout de suite un mail en retour lui
indiquant que son mail n'a pas été délivré pour cause de quota dépassé.

J'aimerai avoir le même fonctionnement avec Maildrop, est-ce possible ?




En principe, maildrop fait pareil. il faudrait que tu simules une
livraison à une boute pleine et que tu voies quel est le code de retour
(l'exists status). par contre, il faut que la boite soit pleine au sens
de maildrop (courier) et non au sens du système de fichiers ou au sens
d'un serveur imap avec qui maildrop ne sait pas s'entendre.



Maildrop retourne le code 75, ce qui correspond à EX_TEMPFAIL. Il
faudrait qu'il retourne le code 77 (EX_NOPERM) comme l'indique la page
de manuel de deliverquota.





Dans un mail sur la liste de maildrop (ça date de Juin), l'auteur dit:

"
maildrop should terminate with exit code 77, if the maildir is full,
which should be treated as a permanent failure code.

You'll need to double check which failure codes are considered permanent
codes by Postfix.
"

tu peux voir le petit échange sur:

http://www.nabble.com/Maildrop-for-bouncing-back-messages-on-overquota-mailboxes-to11136293.html








--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Frédéric Massot
mouss wrote:
Frédéric Massot wrote:


[...]

Maildrop retourne le code 75, ce qui correspond à EX_TEMPFAIL. Il
faudrait qu'il retourne le code 77 (EX_NOPERM) comme l'indique la page
de manuel de deliverquota.




Dans un mail sur la liste de maildrop (ça date de Juin), l'auteur dit:

"
maildrop should terminate with exit code 77, if the maildir is full,
which should be treated as a permanent failure code.

You'll need to double check which failure codes are considered permanent
codes by Postfix.
"

tu peux voir le petit échange sur:

http://www.nabble.com/Maildrop-for-bouncing-back-messages-on-overquota-mailboxes-to11136293.html



Dans le fichier "maildrop/deliver.C" on peut voir les lignes qui gèrent
le code de sortie de maildrop en cas de quotas dépassés :

if ( deliver_maildir.MaildirOpen(mailbox, deliver_file,
maildrop.msgptr->MessageSize()) < 0)
{
#if HAVE_COURIER
throw 75;
#else
throw 77;
#endif
}


Si Maildrop est inclus dans la suite Courier le code de sortie est 75
(EX_TEMPFAIL), sinon 77 (EX_NOPERM).

On trouve la définition de HAVE_COURIER dans le fichier
"maildrop/configure.in" :

if test -d $srcdir/../courier
then
#
# This version of maildrop is integrated into Courier mail server

AC_DEFINE_UNQUOTED(HAVE_COURIER,1,
[ Whether this version of maildrop is part of Courier ])
fi


Le code source correspond bien à mon besoin, le code de sortie indique
une erreur permanente en cas de quota atteint. J'ai bien installé le
paquet maildrop et non pas courier-maildrop, je comprends de moins en
moins... vivement les vacances. :o)

--
============================================= | FRÉDÉRIC MASSOT |
| http://www.juliana-multimedia.com |
| mailto: |
==========================Þbian=GNU/Linux==

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
mouss
Frédéric Massot wrote:
mouss wrote:
Frédéric Massot wrote:


[...]

Maildrop retourne le code 75, ce qui correspond à EX_TEMPFAIL. Il
faudrait qu'il retourne le code 77 (EX_NOPERM) comme l'indique la
page de manuel de deliverquota.




Dans un mail sur la liste de maildrop (ça date de Juin), l'auteur dit:

"
maildrop should terminate with exit code 77, if the maildir is full,
which should be treated as a permanent failure code.

You'll need to double check which failure codes are considered permanent
codes by Postfix.
"

tu peux voir le petit échange sur:

http://www.nabble.com/Maildrop-for-bouncing-back-messages-on-overquota-mailboxes-to11136293.html




Dans le fichier "maildrop/deliver.C" on peut voir les lignes qui gèrent
le code de sortie de maildrop en cas de quotas dépassés :

if ( deliver_maildir.MaildirOpen(mailbox, deliver_file,
maildrop.msgptr->MessageSize()) < 0)
{
#if HAVE_COURIER
throw 75;
#else
throw 77;
#endif
}


Si Maildrop est inclus dans la suite Courier le code de sortie est 75
(EX_TEMPFAIL), sinon 77 (EX_NOPERM).

On trouve la définition de HAVE_COURIER dans le fichier
"maildrop/configure.in" :

if test -d $srcdir/../courier
then
#
# This version of maildrop is integrated into Courier mail server

AC_DEFINE_UNQUOTED(HAVE_COURIER,1,
[ Whether this version of maildrop is part of Courier ])
fi


Le code source correspond bien à mon besoin, le code de sortie indique
une erreur permanente en cas de quota atteint. J'ai bien installé le
paquet maildrop et non pas courier-maildrop, je comprends de moins en
moins... vivement les vacances. :o)




sauf que c'est viré dans le package:

--- maildrop-2.0.2.orig/debian/patches/004-maildrop-permanent-err.patch
+++ maildrop-2.0.2/debian/patches/004-maildrop-permanent-err.patch
@@ -0,0 +1,15 @@
+diff --git a/maildrop/deliver.C b/maildrop/deliver.C
+--- a/maildrop/deliver.C
++++ b/maildrop/deliver.C
+@@ -153,11 +153,7 @@ Buffer b;
+ if ( deliver_maildir.MaildirOpen(mailbox, deliver_file,
+ maildrop.msgptr->MessageSize()) < 0)
+ {
+-#if HAVE_COURIER
+ throw 75;
+-#else
+- throw 77;
+-#endif
+ }
+
+ format_mbox.Init(0);











--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Frédéric Massot
mouss wrote:
[...]

sauf que c'est viré dans le package:

--- maildrop-2.0.2.orig/debian/patches/004-maildrop-permanent-err.patch
+++ maildrop-2.0.2/debian/patches/004-maildrop-permanent-err.patch
@@ -0,0 +1,15 @@
+diff --git a/maildrop/deliver.C b/maildrop/deliver.C
+--- a/maildrop/deliver.C
++++ b/maildrop/deliver.C
+@@ -153,11 +153,7 @@ Buffer b;
+ if ( deliver_maildir.MaildirOpen(mailbox, deliver_file,
+ maildrop.msgptr->MessageSize()) < 0)
+ {
+-#if HAVE_COURIER
+ throw 75;
+-#else
+- throw 77;
+-#endif
+ }
+
+ format_mbox.Init(0);



Ça sent le rapport de bug. :o)

Merci pour l'aide.
--
============================================= | FRÉDÉRIC MASSOT |
| http://www.juliana-multimedia.com |
| mailto: |
==========================Þbian=GNU/Linux==

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
mouss
Frédéric Massot wrote:
mouss wrote:
[...]

sauf que c'est viré dans le package:

--- maildrop-2.0.2.orig/debian/patches/004-maildrop-permanent-err.patch
+++ maildrop-2.0.2/debian/patches/004-maildrop-permanent-err.patch
@@ -0,0 +1,15 @@
+diff --git a/maildrop/deliver.C b/maildrop/deliver.C
+--- a/maildrop/deliver.C
++++ b/maildrop/deliver.C
+@@ -153,11 +153,7 @@ Buffer b;
+ if ( deliver_maildir.MaildirOpen(mailbox, deliver_file,
+ maildrop.msgptr->MessageSize()) < 0)
+ {
+-#if HAVE_COURIER
+ throw 75;
+-#else
+- throw 77;
+-#endif
+ }
+
+ format_mbox.Init(0);



Ça sent le rapport de bug. :o)




ce qui est dommage, c'est qu'il n'y a pas de commentaire pour justifier
le diff. j'ai envoyé un mail sur la liste de maildrop pour demander s'il
serait possible que le HAVE_COURIER soit remplacé par du run-time au
lieu du compile-time. cela permettrait d'avoir un seul package et de ne
plus s'embeter avec des patches selon le MTA.


Merci pour l'aide.




--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Frédéric Massot
mouss wrote:
Frédéric Massot wrote:
mouss wrote:
[...]
sauf que c'est viré dans le package:

--- maildrop-2.0.2.orig/debian/patches/004-maildrop-permanent-err.patch
+++ maildrop-2.0.2/debian/patches/004-maildrop-permanent-err.patch
@@ -0,0 +1,15 @@
+diff --git a/maildrop/deliver.C b/maildrop/deliver.C
+--- a/maildrop/deliver.C
++++ b/maildrop/deliver.C
+@@ -153,11 +153,7 @@ Buffer b;
+ if ( deliver_maildir.MaildirOpen(mailbox, deliver_file,
+ maildrop.msgptr->MessageSize()) < 0)
+ {
+-#if HAVE_COURIER
+ throw 75;
+-#else
+- throw 77;
+-#endif
+ }
+
+ format_mbox.Init(0);


Ça sent le rapport de bug. :o)




ce qui est dommage, c'est qu'il n'y a pas de commentaire pour justifier
le diff. j'ai envoyé un mail sur la liste de maildrop pour demander s'il
serait possible que le HAVE_COURIER soit remplacé par du run-time au
lieu du compile-time. cela permettrait d'avoir un seul package et de ne
plus s'embeter avec des patches selon le MTA.



Oui, ou ajouter une option à la commande "maildrop" pour laisser le
choix de l'utilisation.


--
============================================= | FRÉDÉRIC MASSOT |
| http://www.juliana-multimedia.com |
| mailto: |
==========================Þbian=GNU/Linux==

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
1 2