Qmail a omezeni poctu prijemcu

Jan Houstek jan.houstek na mff.cuni.cz
Čtvrtek Srpen 19 10:43:09 CEST 2004


On Thu, 19 Aug 2004, [windows-1250] Jiří Retzer wrote:

> Zdravim,
> poradi mi nekdo, jak omezit v Qmailu pocet prijemcu jednoho mailu?

Jak je u DJBware zvykem, toto se nastavi v konfiguracnich souborech s
priponou .c (viz prilozena inspirace).

> A jde udelat "vyjimka", tak aby urcita osoba (napr. sekretarka) mohla
> poslat v ramci firmy (tzn. v ramci domeny) mail na vice prijemcu, nez je
> nastaveny limit?

Pokud to potrebujete mit takto sofistikovane, tak je asi nejlepsi si
napsat vlastni filtr a spoustet pres QMAILQUEUE mechanismus.

Stejne ta ochrana neni prilis ucinna, akorat bude klient donucen poslat
stejny mail vicekrat, pokud si napr. nainstaluje qmail na lokalu, tak se
ho toto omezeni nedotkne vubec, qmail-remote zadnou agreagci prijemcu
neprovadi.

-- Honza Houstek


P.S. Slibena inspirace (by Peak)

--- qmail-smtpd.c.orig	Thu Aug 19 10:33:47 2004
+++ qmail-smtpd.c	Thu Aug 19 10:35:28 2004
@@ -51,6 +51,7 @@

 void err_bmf() { out("553 sorry, your envelope sender is in my badmailfrom list (#5.7.1)\r\n"); }
 void err_nogateway() { out("553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)\r\n"); }
+void err_manyrcpts() { out("552 too many recipients (#5.5.3)\r\n"); }
 void err_unimpl() { out("502 unimplemented (#5.5.1)\r\n"); }
 void err_syntax() { out("555 syntax error (#5.5.4)\r\n"); }
 void err_wantmail() { out("503 MAIL first (#5.5.1)\r\n"); }
@@ -221,6 +222,7 @@
 int flagbarf; /* defined if seenmail */
 stralloc mailfrom = {0};
 stralloc rcptto = {0};
+int rcptlimit = 100; /* max rcpt per smtp transaction */

 void smtp_helo(arg) char *arg;
 {
@@ -251,6 +253,8 @@
   if (!seenmail) { err_wantmail(); return; }
   if (!addrparse(arg)) { err_syntax(); return; }
   if (flagbarf) { err_bmf(); return; }
+  if (rcptlimit < 0) { err_manyrcpts(); return; }
+  --rcptlimit;
   if (relayclient) {
     --addr.len;
     if (!stralloc_cats(&addr,relayclient)) die_nomem();


Další informace o konferenci Linux