Bug#406686: [Pkg-exim4-devel] Re: Bug#406686: exim4: Client Auth
Can't Handle Special Characters in Passwords
Marc Haber
mh+debian-packages at zugschlus.de
Wed Jan 17 22:52:37 CET 2007
tags #406686 confirmed pending
thanks
On Sun, Jan 14, 2007 at 02:02:01PM +0100, Marc Haber wrote:
> On Sat, Jan 13, 2007 at 05:42:41PM +0100, Marc Haber wrote:
> > On Sat, Jan 13, 2007 at 11:39:26AM -0500, Steaphan Greene wrote:
> > > On Sat, Jan 13, 2007 at 05:35:14PM +0100, Marc Haber wrote:
> > > > Yes, and for the versions allowing unencrypted authentication as well.
> > > > I just wanted to know if the change works outside my lab.
> > >
> > > Yep, it seems to, but I only tried my tests with test-passwords with
> > > shifted-number-keys (US QWERTY keyboard, so, "!@#$%^&*()"). I did not
> > > test it with any others, such as ":".
> >
> > : is not addressed by this change. I need to ponder a little bit more
> > about that to find a solution.
>
> No go with extract, but using a RE helped. Thanks to exim-users for
> helping here.
>
> Can you please try this new, simplified authenticator?
>
> Cc'ing pkg-exim4-devel to solicit comments from the other guys there.
No response to this message was received. I have extended these
changes to the other parts of the LOGIN and PLAIN client
authenticators and introduced a macro which has greatly simplified the
code:
PASSWDLINE=${sg{\
${lookup{$host}nwildlsearch{CONFDIR/passwd.client}{$value}fail}\
}\
{\\N[\\^]\\N}\
{^^}\
}
plain:
driver = plaintext
public_name = PLAIN
.ifndef AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS
client_send = "<; ${if !eq{$tls_cipher}{}\
{^${extract{1}{:}{PASSWDLINE}}\
^${sg{PASSWDLINE}{\\N([^:]+:)(.*)\\N}{\\$2}}\
}fail}"
.else
client_send = "<; ^${extract{1}{:}{PASSWDLINE}}\
^${sg{PASSWDLINE}{\\N([^:]+:)(.*)\\N}{\\$2}}"
.endif
login:
driver = plaintext
public_name = LOGIN
.ifndef AUTH_CLIENT_ALLOW_NOTLS_PASSWORDS
# Return empty string if not non-TLS AND looking up $host in passwd-file
# yields a non-empty string; fail otherwise.
client_send = "<; ${if and{\
{!eq{$tls_cipher}{}}\
{!eq{PASSWDLINE}{}}\
}\
{}fail}\
; ${extract{1}{::}{PASSWDLINE}}\
; ${sg{PASSWDLINE}{\\N([^:]+:)(.*)\\N}{\\$2}}"
.else
# Return empty string if looking up $host in passwd-file yields a
# non-empty string; fail otherwise.
client_send = "<; ${if !eq{PASSWDLINE}{}
{}fail}\
; ${extract{1}{::}{PASSWDLINE}}\
; ${sg{PASSWDLINE}{\\N([^:]+:)(.*)\\N}{\\$2}}"
.endif
I am planning to upload early next week. If there are any objections,
please voice them.
Greetings
Marc
--
-----------------------------------------------------------------------------
Marc Haber | "I don't trust Computers. They | Mailadresse im Header
Mannheim, Germany | lose things." Winona Ryder | Fon: *49 621 72739834
Nordisch by Nature | How to make an American Quilt | Fax: *49 621 72739835
More information about the Pkg-exim4-maintainers
mailing list