hello,
i new to list but i need little help.
I need only imap (later pop3),i have own checkpassword and own user/password database.
i'm using last version v1.0.rc10
But i have problem with auth, user is authorized but cannot login, here is log:
dovecot: Oct 17 15:00:36 Info: Dovecot v1.0.rc10 starting up
dovecot: Oct 17 15:00:40 Info: auth(default): client in: AUTH 1 PLAIN service=IMAP lip=10.0.0.1 rip=
10.0.0.13 resp=AG1kdgBza29sYTY2Ng==
dovecot: Oct 17 15:00:40 Info: auth(default): checkpassword(lampa,10.0.0.13): Executed: /usr/local/checklocalpwd/checkpassword.pl /usr/local/dovecot/bin/dovecot/checkpassword-reply
dovecot: Oct 17 15:00:40 Info: auth(default): checkpassword(lampa,10.0.0.13): Received input: userdb_user=lampa userdb_home=/home/_mail/lampa userdb_uid=65534 userdb_gid=65534
dovecot: Oct 17 15:00:40 Info: auth(default): checkpassword(lampa,10.0.0.13): Received no input
dovecot: Oct 17 15:00:40 Info: auth(default): checkpassword(lampa,
10.0.0.13): exit_status=0
dovecot: Oct 17 15:00:40 Info: auth(default): client out: OK 1 user=lampa
dovecot: Oct 17 15:00:40 Info: auth(default): master in: REQUEST 1 17950 1
dovecot: Oct 17 15:00:40 Info: auth(default): master out: USER 1 lampa user=lampa home=/home/_mail/lampa uid=65534 gid=65534
dovecot: Oct 17 15:00:40 Info: imap-login: Internal login failure: user=<lampa>, method=PLAIN, rip=10.0.0.13, lip=10.0.0.1
dovecot: Oct 17 15:00:40 Error: Logins with UID 65534 (user lampa) not permitted (see first_valid_uid in config file)
i think that problem is that uid and gid is set to user nobody instead 508 and 502 (user lampa , end of message is passwd file)
uid 65534 is user nobody (used in auth section in conf, if i set it to root everyhting is ok)
this is my config:
base_dir = /var/run/dovecot/
protocols = imap
listen = 10.0.0.1
disable_plaintext_auth = no
log_path = /var/log/dovecot/dovecot.log
info_log_path = /var/log/dovecot/dovecot.info
log_timestamp = "%b %d %H:%M:%S "
ssl_disable = yes
login_dir = /var/run/dovecot/login
login_chroot = yes
login_user = dovecot
mail_debug = yes
mail_log_prefix = "%Us(%u): "
verbose_proctitle = yes
first_valid_uid = 508
last_valid_uid = 508
first_valid_gid = 502
last_valid_gid = 502
protocol imap {
login_executable = /usr/local/dovecot/bin/imap-login
mail_executable = /usr/local/dovecot/bin/imap
}
auth_executable = /usr/local/dovecot/bin/dovecot-auth
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
auth default {
mechanisms = plain
passdb checkpassword {
args = /usr/local/checklocalpwd/checkpassword.pl
}
userdb prefetch {
}
user = nobody
}
in file i must comment out chdir $home (program was unable to chdir) i think due to chroot
/usr/local/checklocalpwd/checkpassword.pl:
#!/usr/bin/perl
use POSIX;
use strict qw(vars);
my $PASSWD_FILE = "/usr/local/qmail/control/passwd2";
%ENV=();
my($len, $buf);
open (USER, "<&=3") || _exit(2);
$len = read(USER, $buf, 512);
close USER;
_exit(2) if $len < 4;
my($user, $pass) = split /\x00/, $buf;
$user = lc $user;
$buf = "\x00" x $len;
my $cwd = getcwd;
my ($passwd, $uid, $gid, $gcos, $home, $shell) = "";
open F, $PASSWD_FILE || _exit(111);
while (<F>) {
if (/^$user:/) {
($user, $passwd, $uid, $gid, $gcos, $home, $shell) = split(/:/);
}
}
close F;
_exit(2) unless $uid;
if (crypt($pass, $passwd) ne $passwd) {
_exit(1);
}
$ENV{USER} = $user;
$ENV{UID} = $uid + 0;
$ENV{HOME} = $home;
$ENV{SHELL} = $shell;
_exit(111) unless $ENV{UID};
#chdir $home || _exit(111);
$) = $gid;
$( = $gid;
$> = $uid;
$< = $uid;
exec @ARGV;
_exit(0);
here is passwd/user file:
lampa:HSExFJNuwlKvk:508:502::/home/_mail/lampa:/bin/false