используется
1.
2.
3.
4.
cyrus-sasl2
cyrus-sasl2-saslauthd
postfix
cyrus-imapd22
что касается sasldb
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
> ee /etc/rc.conf
saslauthd_enable="YES"
saslauthd_flags="-a sasldb"
# ps ax | grep sasl
94707 ?? Is 0 : 00 . 00 /usr/local/sbin/saslauthd -a sasldb
94708 ?? I 0 : 00 . 00 /usr/local/sbin/saslauthd -a sasldb
94709 ?? I 0 : 00 . 00 /usr/local/sbin/saslauthd -a sasldb
94710 ?? I 0 : 00 . 00 /usr/local/sbin/saslauthd -a sasldb
94711 ?? I 0 : 00 . 00 /usr/local/sbin/saslauthd -a sasldb
94732 p1 RV 0 : 00 . 00 grep sasl
# sasldblistusers2
admin@zkfsstvp.net: userPassword
# testsaslauthd -u admin -p 295070
0: OK "Success."
# ее /usr/local/lib/sasl2/smtpd.conf
1.
2.
3.
4.
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: plain login
####CDRAM-MD5 DIGEST-MD5
Аутентификация в postfix
# ее /usr/local/etc/postfix/main.cf
1.
2.
3.
4.
5.
6.
7.
8.
mydomain = zkfsstvp.net
.............
# SMTP autentification
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $mydomain
broken_sasl_auth_clients = yes
теперь о cyrus-imapd22
В /usr/local/etc/cyrus.conf
1.
2.
3.
# at least one LMTP is required for delivery
# lmtp cmd="lmtpd" listen="lmtp" prefork= 0
lmtpunix cmd="lmtpd" listen="/var/mail/imap/socket/lmtp" prefork= 0
В /usr/local/etc/imapd.conf
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
configdirectory: /var/mail/imap
partition-default: /var/mail/imap/spool
unixhierarchysep: yes
admins: admin cyrus root
allowanonymouslogin: no
autocreatequota: 104857600
reject8bit: no
quotawarn: 90
timeout: 30
poptimeout: 10
sieveusehomedir: false
sasl_pwcheck_method: saslauthd
sasl_auxprop_plugin: sasldb
sasl_sasldb_path: /usr/local/etc/sasldb2
sasl_mech_list: plain login cram-md5 digest-md5
lmtp_overquota_perm_failure: no
dracinterval: 0
drachost: localhost
virtdomains: userid
defaultdomain: bsd.zkfsstvp.net # hostname
loginrealms: zkfsstvp.net
Имап стартован
1.
2.
3.
sockstat | grep ':143'
cyrus master 74876 7 tcp6 *: 143 *:*
cyrus master 74876 10 tcp4 *: 143 *:*
проверка с сервера
# imtest -m login -a admin localhost
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
S: * OK bsd.zkfsstvp.net Cyrus IMAP4 v2. 2 .13p1 server ready
C: C01 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 ACL QUOTA LITERAL+
MAILBOX-REFERRALS NAMESPACE UIDPLUS ID NO_ATOMIC_
RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT
THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE
AUTH=DIGEST-MD5 AUTH=CRAM-MD5 SASL-IR
S: C01 OK Completed
Please enter your password: 295070 (ввели пароль для пользователя admin )
C: L01 LOGIN admin { 9 }
S: + go ahead
C: <omitted>
S: L01 OK User logged in
Authenticated.
Security strength factor: 0
. select inbox (посмотрели на всякий случай его ящик)
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]
* 3 EXISTS
* 0 RECENT
* OK [UNSEEN 1 ]
* OK [UIDVALIDITY 1279104295 ]
* OK [UIDNEXT 19 ]
Проверяем с клиентской машины под ВинХР
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
# telnet 10 . 107 . 0 . 134 143
Trying 10 . 107 . 0 . 134 ...
Connected to bsd.zkfsstvp.net.
Escape character is '^]'.
* OK bsd.zkfsstvp.ne Cyrus IMAP4 v2. 2 .13p1 server ready
. login admin 295070 (ввели нашего пользователя и его пароль)
. OK User logged in
. select inbox (можно «посмотреть» содержимое inbox)
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]
* 3 EXISTS
* 0 RECENT
* OK [UNSEEN 1 ]
* OK [UIDVALIDITY 1279104295 ]
* OK [UIDNEXT 19 ]
. OK [READ-WRITE] Completed
. logout
* BYE LOGOUT received
. OK Completed
Connection closed by foreign host.
То есть все ОК! Cyrus IMAP авторизирует меня!
Однако при попытке войти через Roundcube
(вводится имя admin и пароль 295070, точно как и везде выше!)
в логах оного вижу
1.
2.
3.
4.
[ 23 -Jul- 2010 12 : 36 : 11 + 0300 ]: IMAP Error: Authentication for admin failed
(AUTH): ""Authentication for admin failed (LOGIN): ""
in /usr/local/www/roundcube/program/include/rcube_imap.php
on line 141 (POST /?_task=&_action=login)
хм on line 141 (rcube_imap.php)
1.
2.
3.
4.
5.
6.
7.
8.
// write error log
else if ($this->conn->error) {
$this->error_code = $this->conn->errornum;
raise_error(array('code' => 403 , 'type' => 'imap',
'file' => __FILE__, 'line' => __LINE__, // (это и есть 141 -я строка)
'message' => $this->conn->error), true, false);
}
return false;
}
В MESSAGES логе еще страшней
1.
2.
3.
Jul 23 13 : 09 : 09 bsd kernel: pid 39763 (imapd), uid 60 : exited on signal 11
Jul 23 13 : 09 : 09 bsd master[ 38947 ]: process 39763 exited,
signaled to death by 11
В настройках самого Roundcube (то что к ИМАП-у относится)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
$rcmail_config['default_host'] = '10.107.0.134'; // IP того злощасного сервера
// TCP port used for IMAP connections
$rcmail_config['default_port'] = 143 ;
// IMAP auth type. Can be "auth" (CRAM-MD5), "plain" (PLAIN) or "check" to auto
// Optional, defaults to "check"
$rcmail_config['imap_auth_type@)'] = null; // "plain" "check" ни то ни то не помогло
// If you know your imap's root directory and its folder delimiter,
// you can specify them here. Otherwise they will be determined automatically.
$rcmail_config['imap_root'] = null;
$rcmail_config['imap_delimiter'] = null;
// By default IMAP capabilities ar81D0e readed after connection to IMAP server
// In some cases, e.g. when using IMAP proxy, there's a need to refresh the list
// after login. Set to True if you've got this case.
$rcmail_config['imap_force_caps'] = false;
Если кто стыкался, подскажите, в чем может быть "затык"?
Идем дальше
создаем простенький index.php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?php
$mbox = imap_open ("{10.107.0.134:143}INBOX", "admin", "295070");
if ( $mbox === false ) {
exit ("Can't connect: " . imap_last_error() ."\n");
}
else
{
echo"Logined:";
//do stuff
}
?>
запускаем с клиентской машины
http://10.107.0.134/
получаем
Can't connect: Can not authenticate to IMAP server: [CLOSED] IMAP connection broken (authenticate)
Замечу, что в сети есть !!работающий!! почтовый сервер01 с !!аналогичными!! настройками,
хотелось по его подобию сделать еще один, чтобы сервер01 (его айпи 10.107.0.205) вывести из эксплуатации, но
вот оно как-то не пошло :)
если в файле index.php
прописать
$mbox = imap_open ("{10.107.0.205:143}INBOX", "admin", "295070");
и далее
http://10.107.0.134/ - ЕСТЬ коннект!!!!!
Иными словами затык скорей всего в настройках собственно ИМАП сервера....
Разница между работающим с РНР сервером (10.107.0.205)
я Неработающим с РНР (10.107.0.134) обнаружилась лишь в двух вещах
На сервере 10.107.0.205 (тут РНР коннектится)
В /usr/local/etc/imapd.conf
1.
2.
3.
4.
5.
6.
7.
8.
9.
configdirectory: /var/imap
partition-default: /var/imap/spool
.......
sasl_pwcheck_method: [SIZE= 3 ]auxprop[/SIZE]
#### установив auxprop на сервере 10 . 107 . 0 . 134 telnet Ms Outlook Express не коннектятся вовсе!
sasl_auxprop_plugin: sasldb
sasl_sasldb_path: /usr/local/etc/sasldb2
sasl_mech_list: plain login cram-md5 digest-md5
lmtp_overquota_perm_failure: no
и получается использовать cyradm вот так
1.
2.
3.
4.
#cyradm --user admin localhost
Password: 295070
localhost.com> lm
user.k_vadym (\HasNoChildren)
localhost.com> quit
На сервере 10.107.0.134 (тут РНР НЕ коннектится)
при попытке cyradm так
1.
#cyradm --user admin localhost
cyradm: cannot authenticate to server with as admin
1.
#cyradm --user admin localhost
cyradm: cannot authenticate to server with as admin
и получается только так
1.
2.
3.
4.
#cyradm --user admin --auth login -–server localhost
IMAP Password: 295070 (пароль admin-а в SASLDB2!!!)
localhost> lm
user.k_vadym (\HasNoChildren)
youhostname.com> quit
может в этом и есть причина...
But He Said, "Leave Me Alone, I'm A Family Man,
And My Bark Is Much Worse Than My Bite!"
He Said, "Leave Me Alone, I'm A Family Man.
If You Push Me Too Far, I Just Might...."
/(c) Mike Oldfield "Family Man"/