6 messages in net.sourceforge.lists.courier-usersRe: [courier-users] SMTP auth and the...
FromSent OnAttachments
Otto SolaresFeb 15, 2007 5:19 pm 
Sam VarshavchikFeb 15, 2007 6:37 pm 
Gordon MessmerFeb 15, 2007 9:46 pm 
Otto SolaresFeb 15, 2007 10:30 pm.pm
Otto SolaresFeb 16, 2007 12:58 am.pm
Otto SolaresFeb 22, 2007 8:30 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: [courier-users] SMTP auth and the From headerActions...
From:Otto Solares (sol@guug.org)
Date:Feb 16, 2007 12:58:25 am
List:net.sourceforge.lists.courier-users
Attachments:

On Fri, Feb 16, 2007 at 12:30:33AM -0600, Otto Solares wrote:

On Thu, Feb 15, 2007 at 09:47:19PM -0800, Gordon Messmer wrote:

Otto Solares wrote:

I am a happy courier-mta user for a long time, I'm using it in a large University (60k users), now we are facing a problem where users connect to SMTP with authentication in order to send a mail (we don't allow sending email without auth) and some users are changing the From: header, it is possible to tell courier so it'll check the From: header to conform to the auth user?

No, but you could write a courierfilter to do that. Frameworks for Python and Perl exist, if you're comfortable with either of those languages.

Excellent! Although I am not versed in perl here is my first filter attempt, dunno why it doesn't work, when printing (for debugging) any message->* variable, all the message is shown. Does somebody knows what I am missing?

Finally it works, this just checks that MAIL FROM conforms to the AUTH LOGIN, hopefully next version will check the From: header too as originally intended as I presume this is insufficient for my purposes. Thanks.

-otto

# # Courier::Filter::Module::AuthMailFrom # # NOTE: module trusting must be disabled # # Copyright (C) 2007, Otto Solares <sol@guug.org> # Under GPLv2.

package Courier::Filter::Module::AuthMailFrom;

use warnings; use strict;

use base qw(Courier::Filter::Module);

use constant TRUE => (0 == 0); use constant FALSE => not TRUE;

sub match;

sub match { my ($module, $message) = @_; my $class = ref($module);

return if not $message->authenticated;

#STDERR->print("AuthMailFrom: LOGIN: ", $message->authenticated_user, ",
MAIL FROM: ", $message->sender, "\n");

$_ = $message->sender; my $user = $message->authenticated_user;

return if (/^$user@.*/);

return ($module->{response} || 'MAIL FROM does not match AUTH LOGIN'); }

TRUE;