ok, discussed with eric, not critical but still very annoying so we'll commit the feature tonight.
On Tue, Oct 09, 2012 at 03:33:03PM +0200, Gilles Chehade wrote: > Argh, you should have talked to me first ... > > Both require ssl and require auth are implemented already ... I did > not commit yet because we stabilized a release and decided to not > add new features to it unless they are critical. > > This feature should be committed in a few days > > Gilles > > > On Tue, Oct 09, 2012 at 03:24:32PM +0200, Alexander Hall wrote: > > Hi, > > > > I suddenly got a flood of incoming spam, and when I could not find > > any trace of them in the spamdb output, I suspected it was coming in > > on port 587, which I had configured with tls and "enable auth" > > > > I did not realize that that would allow anyone to send locally > > addressed mail to me that way, thus bypassing spamd. > > > > So, I hesitated, but quite easily came up with this diff, which > > I'm testing out now. > > > > This allows replacing "enable auth" with "require auth" like this: > > > > listen on bge0 port 587 tls certificate mycert require auth > > listen on bge0 smtps certificate mycert require auth > > > > Note the "require auth", as opposed to "enable auth" > > > > Thoughts? OK? > > > > /Alexander > > > > > > Index: parse.y > > =================================================================== > > RCS file: /data/openbsd/cvs/src/usr.sbin/smtpd/parse.y,v > > retrieving revision 1.104 > > diff -u -p -r1.104 parse.y > > --- parse.y 30 Sep 2012 17:25:09 -0000 1.104 > > +++ parse.y 9 Oct 2012 13:07:54 -0000 > > @@ -124,7 +124,7 @@ typedef struct { > > %token DB LDAP PLAIN DOMAIN SOURCE > > %token RELAY BACKUP VIA DELIVER TO MAILDIR MBOX HOSTNAME > > %token ACCEPT REJECT INCLUDE ERROR MDA FROM FOR > > -%token ARROW ENABLE AUTH TLS LOCAL VIRTUAL TAG ALIAS FILTER KEY DIGEST > > +%token ARROW ENABLE REQUIRE AUTH TLS LOCAL VIRTUAL TAG ALIAS FILTER > > KEY DIGEST > > %token <v.string> STRING > > %token <v.number> NUMBER > > %type <v.map> map > > @@ -263,7 +263,9 @@ ssl : SMTPS { $$ = > > F_SMTPS; } > > | /* empty */ { $$ = 0; } > > ; > > > > -auth : ENABLE AUTH { $$ = 1; } > > +auth : ENABLE AUTH { $$ = F_AUTH; } > > + | REQUIRE AUTH { $$ = F_AUTH | > > + F_AUTH_REQUIRED; } > > | /* empty */ { $$ = 0; } > > ; > > > > @@ -364,10 +366,7 @@ main : QUEUE INTERVAL interval { > > } > > > > cert = ($6 != NULL) ? $6 : $3; > > - flags = $5; > > - > > - if ($7) > > - flags |= F_AUTH; > > + flags = $5 | $7; > > > > if ($5 && ssl_load_certfile(cert, F_SCERT) < 0) { > > yyerror("cannot load certificate: %s", cert); > > @@ -967,6 +966,7 @@ lookup(char *s) > > { "queue", QUEUE }, > > { "reject", REJECT }, > > { "relay", RELAY }, > > + { "require", REQUIRE }, > > { "single", SINGLE }, > > { "size", SIZE }, > > { "smtps", SMTPS }, > > Index: smtp_session.c > > =================================================================== > > RCS file: /data/openbsd/cvs/src/usr.sbin/smtpd/smtp_session.c,v > > retrieving revision 1.169 > > diff -u -p -r1.169 smtp_session.c > > --- smtp_session.c 14 Sep 2012 19:22:04 -0000 1.169 > > +++ smtp_session.c 9 Oct 2012 13:21:15 -0000 > > @@ -400,6 +400,12 @@ session_rfc5321_mail_handler(struct sess > > return 1; > > } > > > > + if (s->s_l->flags & F_AUTH_REQUIRED && > > + !(s->s_flags & F_AUTHENTICATED)) { > > + session_respond(s, "530 5.7.0 Authentication required"); > > + return 1; > > + } > > + > > if (s->s_state != S_HELO) { > > session_respond(s, "503 5.5.1 Sender already specified"); > > return 1; > > Index: smtpd.h > > =================================================================== > > RCS file: /data/openbsd/cvs/src/usr.sbin/smtpd/smtpd.h,v > > retrieving revision 1.378 > > diff -u -p -r1.378 smtpd.h > > --- smtpd.h 3 Oct 2012 19:42:16 -0000 1.378 > > +++ smtpd.h 9 Oct 2012 13:07:54 -0000 > > @@ -78,6 +78,7 @@ > > #define F_STARTTLS 0x01 > > #define F_SMTPS 0x02 > > #define F_AUTH 0x04 > > +#define F_AUTH_REQUIRED 0x08 > > #define F_SSL (F_SMTPS|F_STARTTLS) > > > > #define F_BACKUP 0x10 /* XXX */ > > > > -- > Gilles Chehade > > https://www.poolp.org @poolpOrg > -- Gilles Chehade https://www.poolp.org @poolpOrg