QMAIL a mail from <>

Radim Roženek rozenek na vos.cz
Středa Listopad 20 14:59:55 CET 2002


Predpokladam, ze tento spam-patch je kamen urazu:

diff -cru qmail-1.03-orig/qmail-pop3d.c qmail-1.03/qmail-pop3d.c
--- qmail-1.03-orig/qmail-pop3d.c Mon Jun 15 12:53:16 1998
+++ qmail-1.03/qmail-pop3d.c Tue Jun 12 15:16:15 2001
@@ -63,6 +63,7 @@

 void die_nomem() { err("out of memory"); die(); }
 void die_nomaildir() { err("this user has no $HOME/Maildir"); die(); }
+void die_nomaildir1() { err("this user can't go to $HOME/Maildir");
die(); }
 void die_scan() { err("unable to scan $HOME/Maildir"); die(); }

 void err_syntax() { err("syntax error"); }
@@ -295,7 +296,7 @@
   sig_pipeignore();

   if (!argv[1]) die_nomaildir();
-  if (chdir(argv[1]) == -1) die_nomaildir();
+  if (chdir(argv[1]) == -1) die_nomaildir1();

   getlist();

diff -cru qmail-1.03-orig/qmail-smtpd.c qmail-1.03/qmail-smtpd.c
--- qmail-1.03-orig/qmail-smtpd.c Mon Jun 15 12:53:16 1998
+++ qmail-1.03/qmail-smtpd.c Wed Jul  4 06:42:47 2001
@@ -96,6 +96,8 @@
 int bmfok = 0;
 stralloc bmf = {0};
 struct constmap mapbmf;
+int miplrec = 0;
+int miplsen = 0;

 void setup()
 {
@@ -216,7 +218,6 @@
   return r;
 }

-
 int seenmail = 0;
 int flagbarf; /* defined if seenmail */
 stralloc mailfrom = {0};
@@ -245,6 +246,7 @@
   if (!stralloc_copys(&rcptto,"")) die_nomem();
   if (!stralloc_copys(&mailfrom,addr.s)) die_nomem();
   if (!stralloc_0(&mailfrom)) die_nomem();
+  if (addrallowed()) miplsen = 1;
   out("250 ok\r\n");
 }
 void smtp_rcpt(arg) char *arg; {
@@ -261,6 +263,7 @@
   if (!stralloc_cats(&rcptto,"T")) die_nomem();
   if (!stralloc_cats(&rcptto,addr.s)) die_nomem();
   if (!stralloc_0(&rcptto)) die_nomem();
+  if (addrallowed()) miplrec = 1;
   out("250 ok\r\n");
 }

@@ -365,6 +368,14 @@
   out("\r\n");
 }

+int istofromlocal() {
+ int r,i;
+ r=0;
+ if (miplrec) r = 1;
+ if (miplsen) r = 1;
+ return r;
+}
+
 void smtp_data() {
   int hops;
   unsigned long qp;
@@ -372,6 +383,7 @@

   if (!seenmail) { err_wantmail(); return; }
   if (!rcptto.len) { err_wantrcpt(); return; }
+  if (!istofromlocal()) { err_bmf(); return; }
   seenmail = 0;
   if (databytes) bytestooverflow = databytes + 1;
   if (qmail_open(&qqt) == -1) { err_qqt(); return; }

Slo by patchovane soubory uvest do puvodniho stavu bez potreby preinstalace
celeho qmailu?

Radim Roženek
----- Original Message -----
From: "Ondrej Sury" <sury.ondrej na globe.cz>
To: <sendmail na linux.cz>
Sent: Wednesday, November 20, 2002 2:33 PM
Subject: Re: QMAIL a mail from <>


Radim Roženek <rozenek na vos.cz> writes:

> Bohuzel jsem tento mailserver neinstaloval ja, ale muj predchudce, ktery
byl
> odejden. Krome patche na overovani pres MySQL by nemel byt Q nijak
> patchovan, ale zpetne to tezko zjistim...
>
> Nemate nekdo potuchu v cem by mohl byt problem?
> Co muze toto zpusobit krome badmailfrom a relayingovych pravidel?

Toto vidim na chybu nekde v tom patchi...  neco vam ukazu:

void err_wantmail() { out("503 MAIL first (#5.5.1)\r\n"); }

toto se pousti pri zadani MAIL FROM:
(povsimnete si seenmail = 1)

void smtp_mail(arg) char *arg;
{
  if (!addrparse(arg)) { err_syntax(); return; }
  flagbarf = bmfcheck();
  seenmail = 1;
  if (!stralloc_copys(&rcptto,"")) die_nomem();
  if (!stralloc_copys(&mailfrom,addr.s)) die_nomem();
  if (!stralloc_0(&mailfrom)) die_nomem();
  out("250 ok\r\n");
}

toto se pousti pri RCPT TO:

void smtp_rcpt(arg) char *arg; {
  if (!seenmail) { err_wantmail(); return; }
  if (!addrparse(arg)) { err_syntax(); return; }
  if (flagbarf) { err_bmf(); return; }
  if (relayclient) {
    --addr.len;
    if (!stralloc_cats(&addr,relayclient)) die_nomem();
    if (!stralloc_0(&addr)) die_nomem();
  }
  else
    if (!addrallowed()) { err_nogateway(); return; }
  if (!stralloc_cats(&rcptto,"T")) die_nomem();
  if (!stralloc_cats(&rcptto,addr.s)) die_nomem();
  if (!stralloc_0(&rcptto)) die_nomem();
  out("250 ok\r\n");
}

toto se pousti pri DATA

void smtp_data() {
  int hops;
  unsigned long qp;
  char *qqx;

  if (!seenmail) { err_wantmail(); return; }
  if (!rcptto.len) { err_wantrcpt(); return; }
  seenmail = 0;
[...]
}

Takze pokud mate zdrojaky toho opeceneho qmailu, tak zkuste zkontrolovat,
jestli nekde v smtp_mail() nebo smtp_rcpt() a funkcich jimi volanych se
nenastavuje seenmail na 0.

O.

--
Ondrej Sury - CIO                   Globe Internet s.r.o. http://globe.cz/
Tel: +420(2)35365000 Fax: +420(2)35365009     Planickova 1, 162 00 Praha 6



Další informace o konferenci Sendmail