a0001 LOGIN user at domain.test "abra ca dabra" - проблемы из-за пробелов в пароле

Igor Sysoev is at rambler-co.ru
Sat Aug 18 16:27:09 MSD 2007


On Sat, Aug 18, 2007 at 03:39:44PM +0400, umask wrote:

> Есть сервер с Cyrus IMAP. Телнетом логинюсь под пользователем:
> 
> $ telnet localhost 143
> 
> Connected to localhost
> 
> Escape character is '^]'.
> 
> * OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS] test.XXXXX.ru Cyrus IMAP4 v2.3.7 server ready
> 
> a0001 LOGIN user at domain.test "password abcd ."
> 
> a0001 OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID LOGINDISABLED ACL RIGHTS=kxte QUOTA MAILBOX-REFERRALS NAMESPACE UIDPLUS NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND BINARY SORT SORT=MODSEQ THREAD=ORDEREDSUBJECT THREAD=REFERENCES ANNOTATEMORE CATENATE CONDSTORE IDLE URLAUTH] User logged in
> 
> ^]
> 
> telnet> quit
> 
> Connection closed.
> 
> 
> 
> 
> 
> Вот такая попытка:
> 
> 
> 
> $ telnet localhost 143
> 
> Connected to localhost
> 
> Escape character is '^]'.
> 
> * OK [CAPABILITY IMAP4 IMAP4rev1 LITERAL+ ID STARTTLS] test.XXXXX.ru Cyrus IMAP4 v2.3.7 server ready
> 
> a0001 LOGIN user at domain.test password abcd .
> 
> a0001 BAD Unexpected extra arguments to LOGIN
> 
> ^]
> 
> telnet> quit
> 
> Connection closed.
> 
> 
> 
> 
> 
> 
> 
> Теперь делаю всё тоже самое, но через nginx IMAP4 proxy (nginx - frontend, cyrus imap - backend):
> 
> 
> 
> $ telnet localhost 1143
> 
> Connected to localhost.
> 
> Escape character is '^]'.
> 
> * OK IMAP4 ready
> 
> a0001 LOGIN user at domain.test password abcd .
> 
> a0001 BAD invalid command
> 
> ^]
> 
> telnet> quit
> 
> Connection closed.
> 
> 
> 
> или так:
> 
> 
> 
> $ telnet localhost 1143
> 
> Connected to localhost.
> 
> Escape character is '^]'.
> 
> * OK IMAP4 ready
> 
> a0001 LOGIN user at domain.test "password abcd ."
> 
> a0001 BAD invalid command
> 
> ^]
> 
> telnet> quit
> 
> Connection closed.
> 
> 
> 
> При этом nginx вообще не делает обращения к внешнему серверу аторизации (вижу по access.log веб-сервера, где работает PHP-скрипт).
> 
> 
> 
> В логе nginx пишет только следующее:
> 
> 2007/08/18 15:23:35 [info] 15810#0: *244187 client 127.0.0.1 connected to 127.0.0.1:1143
> 
> 2007/08/18 15:32:20 [info] 15810#0: *244195 client 127.0.0.1 connected to 127.0.0.1:1143
> 
> 
> 
> и более ничего.
> 
> 
> 
> С юзерами, у которых нет пробела в пароле всё работает замечательно как через nginx, так и без него.

Патч должен помочь, применим для любой версии.


-- 
Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
Index: src/mail/ngx_mail_parse.c
===================================================================
--- src/mail/ngx_mail_parse.c	(revision 724)
+++ src/mail/ngx_mail_parse.c	(working copy)
@@ -434,6 +434,10 @@
             break;
 
         case sw_argument:
+            if (ch == ' ' && s->quoted) {
+                break;
+            }
+
             switch (ch) {
             case '"':
                 if (!s->quoted) {


More information about the nginx-ru mailing list