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