I don't know what is wrong with your config... I guess your smtp server
does not answer properly. 

Is 127.0.0.2:143 really your SMTP-server? 
Because port 143 is mostly an IMAP port - but you've specified PROTOCOL
SMTP in the server section. 

Anyway I tested your config with my settings (replaced name and
smtp-server, here 192.0.2.222:25) and enabled debug: 

+ error_log logs/error-mail.log DEBUG;
 mail {
 - server_name localhost;
 + server_name EXAMPLE.COM;
...
 http {
...
 - add_header Auth-Server 127.0.0.2;
 - add_header Auth-Port 143;
 + add_header Auth-Server 192.0.2.222;
 + add_header Auth-Port 25; 

it works well - I see the test incoming mail (I send to myself via 8025
port) and following output in the log (a lot of irrelevant messages are
removed): 

>>>>>>>>> 

2020/02/14 11:24:04 [debug] 121280#128244: *1 smtp mail from:"mail
FROM:<[email protected]>"
...
2020/02/14 11:24:04 [debug] 121280#128244: *3 http request line: "GET
/cgi-bin/nginxauth.cgi HTTP/1.0"
2020/02/14 11:24:04 [debug] 121280#128244: *3 http uri:
"/cgi-bin/nginxauth.cgi"
2020/02/14 11:24:04 [debug] 121280#128244: *3 http args: ""
2020/02/14 11:24:04 [debug] 121280#128244: *3 http exten: "cgi"
2020/02/14 11:24:04 [debug] 121280#128244: *3 http process request
header line
2020/02/14 11:24:04 [debug] 121280#128244: *3 http header: "Host:
localhost"
2020/02/14 11:24:04 [debug] 121280#128244: *3 http header: "Auth-Method:
none"
2020/02/14 11:24:04 [debug] 121280#128244: *3 http header: "Auth-User: "
2020/02/14 11:24:04 [debug] 121280#128244: *3 http header: "Auth-Pass: "
2020/02/14 11:24:04 [debug] 121280#128244: *3 http header:
"Auth-Protocol: smtp"
2020/02/14 11:24:04 [debug] 121280#128244: *3 http header:
"Auth-Login-Attempt: 1"
2020/02/14 11:24:04 [debug] 121280#128244: *3 http header: "Client-IP:
127.0.0.1"
2020/02/14 11:24:04 [debug] 121280#128244: *3 http header: "Client-Host:
[UNAVAILABLE]"
2020/02/14 11:24:04 [debug] 121280#128244: *3 http header:
"Auth-SMTP-Helo: myhost.example.com"
2020/02/14 11:24:04 [debug] 121280#128244: *3 http header:
"Auth-SMTP-From: mail FROM:<[email protected]>"
2020/02/14 11:24:04 [debug] 121280#128244: *3 http header:
"Auth-SMTP-To: rcpt TO:<[email protected]>"
2020/02/14 11:24:04 [debug] 121280#128244: *3 http header done
2020/02/14 11:24:04 [debug] 121280#128244: *3 event timer del: 512:
1127939767
2020/02/14 11:24:04 [debug] 121280#128244: *3 generic phase: 0
2020/02/14 11:24:04 [debug] 121280#128244: *3 rewrite phase: 1
2020/02/14 11:24:04 [debug] 121280#128244: *3 search through nested
static locations of ""
2020/02/14 11:24:04 [debug] 121280#128244: *3 test location:
"/cgi-bin/nginxauth.cgi"
2020/02/14 11:24:04 [debug] 121280#128244: *3 using configuration
"/cgi-bin/nginxauth.cgi"
2020/02/14 11:24:04 [debug] 121280#128244: *3 http cl:-1 max:1048576
2020/02/14 11:24:04 [debug] 121280#128244: *3 rewrite phase: 3
2020/02/14 11:24:04 [debug] 121280#128244: *3 http set discard body
2020/02/14 11:24:04 [debug] 121280#128244: *3 HTTP/1.1 204 No Content
Server: nginx/1.17.4
Date: Fri, 14 Feb 2020 10:24:04 GMT
Connection: close
Auth-Status: OK
Auth-Server: 192.0.2.222
Auth-Port: 25

2020/02/14 11:24:04 [debug] 121280#128244: *3 write new buf t:1 f:0
008AD6A0, pos 008AD6A0, size: 164 file: 0, size: 0
2020/02/14 11:24:04 [debug] 121280#128244: *3 http write filter: l:1 f:0
s:164
2020/02/14 11:24:04 [debug] 121280#128244: *3 http write filter limit 0
2020/02/14 11:24:04 [debug] 121280#128244: *3 WSASend: fd:512, s:164
2020/02/14 11:24:04 [debug] 121280#128244: *3 http write filter 00000000
2020/02/14 11:24:04 [debug] 121280#128244: *3 http finalize request: 0,
"/cgi-bin/nginxauth.cgi?" a:1, c:1
2020/02/14 11:24:04 [debug] 121280#128244: *3 http request count:1 blk:0
2020/02/14 11:24:04 [debug] 121280#128244: *3 http close request
2020/02/14 11:24:04 [debug] 121280#128244: *3 http log handler
2020/02/14 11:24:04 [debug] 121280#128244: *3 free: 008ACC50, unused:
1161
2020/02/14 11:24:04 [debug] 121280#128244: *3 close http connection: 512
2020/02/14 11:24:04 [debug] 121280#128244: *3 reusable connection: 0
2020/02/14 11:24:04 [debug] 121280#128244: *3 free: 008AC848
2020/02/14 11:24:04 [debug] 121280#128244: *3 free: 0039FDE0, unused: 28
2020/02/14 11:24:04 [debug] 121280#128244: worker cycle
2020/02/14 11:24:04 [debug] 121280#128244: *1 mail auth http read
handler
2020/02/14 11:24:04 [debug] 121280#128244: *1 WSARecv: fd:496 rc:0 164
of 1024
2020/02/14 11:24:04 [debug] 121280#128244: *1 mail auth http process
status line
2020/02/14 11:24:04 [debug] 121280#128244: *1 mail auth http process
headers
2020/02/14 11:24:04 [debug] 121280#128244: *1 mail auth http header:
"Server: nginx/1.17.4"
2020/02/14 11:24:04 [debug] 121280#128244: *1 mail auth http header:
"Date: Fri, 14 Feb 2020 10:24:04 GMT"
2020/02/14 11:24:04 [debug] 121280#128244: *1 mail auth http header:
"Connection: close"
2020/02/14 11:24:04 [debug] 121280#128244: *1 mail auth http header:
"Auth-Status: OK"
2020/02/14 11:24:04 [debug] 121280#128244: *1 mail auth http header:
"Auth-Server: 192.0.2.222"
2020/02/14 11:24:04 [debug] 121280#128244: *1 mail auth http header:
"Auth-Port: 25"
2020/02/14 11:24:04 [debug] 121280#128244: *1 mail auth http header done
2020/02/14 11:24:04 [debug] 121280#128244: *1 event timer del: 496:
1127939764
2020/02/14 11:24:04 [debug] 121280#128244: *1 reusable connection: 0
2020/02/14 11:24:04 [debug] 121280#128244: *1 free: 008AC040, unused:
196
2020/02/14 11:24:04 [debug] 121280#128244: *1 stream socket 496
2020/02/14 11:24:04 [debug] 121280#128244: *1 connect to 192.0.2.222:25,
fd:496 #4
2020/02/14 11:24:04 [debug] 121280#128244: *1 event timer add: 496:
60000:1127939769
2020/02/14 11:24:04 [debug] 121280#128244: *1 malloc: 008AC040:4096
2020/02/14 11:24:04 [debug] 121280#128244: worker cycle
2020/02/14 11:24:04 [debug] 121280#128244: *1 post event 00897120
2020/02/14 11:24:04 [debug] 121280#128244: posted event 00897120
2020/02/14 11:24:04 [debug] 121280#128244: *1 delete posted event
00897120
2020/02/14 11:24:04 [debug] 121280#128244: *1 mail proxy dummy handler
2020/02/14 11:24:04 [debug] 121280#128244: worker cycle
2020/02/14 11:24:04 [debug] 121280#128244: *1 mail proxy smtp auth
handler
2020/02/14 11:24:04 [debug] 121280#128244: *1 WSARecv: fd:496 rc:0 22 of
4096
2020/02/14 11:24:04 [debug] 121280#128244: *1 mail proxy send ehlo
2020/02/14 11:24:04 [debug] 121280#128244: *1 malloc: 0039FDE0:256
2020/02/14 11:24:04 [debug] 121280#128244: *1 WSASend: fd:496, 0, 25 of
25
2020/02/14 11:24:04 [debug] 121280#128244: worker cycle
2020/02/14 11:24:05 [debug] 121280#128244: *1 mail proxy smtp auth
handler
2020/02/14 11:24:05 [debug] 121280#128244: *1 WSARecv: fd:496 rc:0 196
of 4096
2020/02/14 11:24:05 [debug] 121280#128244: *1 mail proxy send mail from
2020/02/14 11:24:05 [debug] 121280#128244: *1 WSASend: fd:496, 0, 47 of
47
2020/02/14 11:24:05 [debug] 121280#128244: worker cycle
2020/02/14 11:24:05 [debug] 121280#128244: *1 mail proxy smtp auth
handler
2020/02/14 11:24:05 [debug] 121280#128244: *1 WSARecv: fd:496 rc:0 60 of
4096
2020/02/14 11:24:05 [debug] 121280#128244: *1 mail proxy send rcpt to
2020/02/14 11:24:05 [debug] 121280#128244: *1 WSASend: fd:496, 0, 45 of
45
2020/02/14 11:24:05 [debug] 121280#128244: worker cycle
2020/02/14 11:24:05 [debug] 121280#128244: *1 mail proxy smtp auth
handler
2020/02/14 11:24:05 [debug] 121280#128244: *1 WSARecv: fd:496 rc:0 63 of
4096
2020/02/14 11:24:05 [debug] 121280#128244: *1 event timer add: 492:
86400000:1214280441
2020/02/14 11:24:05 [debug] 121280#128244: *1 event timer del: 496:
1127939769
2020/02/14 11:24:05 [info] 121280#128244: *1 client logged in, client:
127.0.0.1, server: 0.0.0.0:8025
2020/02/14 11:24:05 [debug] 121280#128244: *1 mail proxy handler: 1,
#496 > #492
2020/02/14 11:24:05 [debug] 121280#128244: *1 WSASend: fd:492, 0, 63 of
63
2020/02/14 11:24:05 [debug] 121280#128244: *1 event timer: 492, old:
1214280441, new: 1214280441
2020/02/14 11:24:05 [debug] 121280#128244: worker cycle
2020/02/14 11:24:05 [debug] 121280#128244: *1 post event 008830C8
2020/02/14 11:24:05 [debug] 121280#128244: posted event 008830C8
2020/02/14 11:24:05 [debug] 121280#128244: *1 delete posted event
008830C8
2020/02/14 11:24:05 [debug] 121280#128244: *1 mail proxy handler: 0,
#492 > #496
2020/02/14 11:24:05 [debug] 121280#128244: *1 WSARecv: fd:492 rc:0 6 of
4096
2020/02/14 11:24:05 [debug] 121280#128244: *1 WSASend: fd:496, 0, 6 of 6
2020/02/14 11:24:05 [debug] 121280#128244: *1 event timer: 492, old:
1214280441, new: 1214280441
2020/02/14 11:24:05 [debug] 121280#128244: worker cycle
2020/02/14 11:24:05 [debug] 121280#128244: *1 mail proxy handler: 0,
#496 > #492
2020/02/14 11:24:05 [debug] 121280#128244: *1 WSARecv: fd:496 rc:0 50 of
4096
2020/02/14 11:24:05 [debug] 121280#128244: *1 WSASend: fd:492, 0, 50 of
50
2020/02/14 11:24:05 [debug] 121280#128244: worker cycle
2020/02/14 11:24:05 [debug] 121280#128244: *1 post event 008830C8
2020/02/14 11:24:05 [debug] 121280#128244: posted event 008830C8
2020/02/14 11:24:05 [debug] 121280#128244: *1 delete posted event
008830C8
2020/02/14 11:24:05 [debug] 121280#128244: *1 mail proxy handler: 0,
#492 > #496
2020/02/14 11:24:05 [debug] 121280#128244: *1 WSARecv: fd:492 rc:0 170
of 4096
2020/02/14 11:24:05 [debug] 121280#128244: *1 WSASend: fd:496, 0, 170 of
170
2020/02/14 11:24:05 [debug] 121280#128244: *1 event timer: 492, old:
1214280441, new: 1214280535
2020/02/14 11:24:05 [debug] 121280#128244: worker cycle
2020/02/14 11:24:05 [debug] 121280#128244: *1 mail proxy handler: 0,
#496 > #492
2020/02/14 11:24:05 [debug] 121280#128244: *1 WSARecv: fd:496 rc:0 56 of
4096
2020/02/14 11:24:05 [debug] 121280#128244: *1 WSASend: fd:492, 0, 56 of
56
2020/02/14 11:24:05 [debug] 121280#128244: worker cycle
... 

<<<<<<<<< 

Regards,
Sergey 

13.02.2020 22:45, Yury Shpakov wrote: 

> Hi Sergey, 
> 
> I reconfigured the config file as follows: 
> 
> === === === 
> 
> #user nobody; 
> worker_processes 1; 
> 
> #error_log logs/error.log; 
> #error_log logs/error.log notice; 
> #error_log logs/error.log info; 
> 
> #pid logs/nginx.pid; 
> 
> events { 
> worker_connections 1024; 
> } 
> 
> mail { 
> server_name localhost; 
> auth_http localhost:9000/cgi-bin/nginxauth.cgi; 
> # auth_http none; 
> 
> smtp_auth none; 
> # smtp_auth login plain cram-md5; 
> # smtp_capabilities "SIZE 10485760" ENHANCEDSTATUSCODES 8BITMIME DSN; 
> xclient off; 
> 
> server { 
> listen 8025; 
> protocol smtp; 
> proxy on; 
> proxy_pass_error_message on; 
> } 
> } 
> 
> http { 
> server { 
> listen 9000; 
> 
> location /cgi-bin/nginxauth.cgi { 
> add_header Auth-Status OK; 
> add_header Auth-Server 127.0.0.2; # backend ip 
> add_header Auth-Port 143; # backend port 
> return 204; 
> } 
> } 
> } 
> === === === 
> 
> And now it's responding on port 9000 as expected: 
> 
> === === === 
> C:WINDOWSsystem32>curl -H "Auth-Method: plain" -H "Auth-User: user" -H 
> "Auth-Pass: pwd" -H "Auth-Protocol: imap" -H "Auth-Login-Attempt: 1" -i 
> http://127.0.0.1:9000/cgi-bin/nginxauth.cgi
> 
> HTTP/1.1 204 No Content 
> Server: nginx/1.17.9 
> Date: Thu, 13 Feb 2020 21:30:54 GMT 
> Connection: keep-alive 
> Auth-Status: OK 
> Auth-Server: 127.0.0.2 Auth-Port: 143 
> === === === 
> 
> However I'm still experiencing the same issue (in log file): 
> 
> === === === 
> 2020/02/13 16:29:24 [notice] 35048#26192: signal process started
> 
> 2020/02/13 16:29:34 [error] 31732#22720: *1 WSASend() failed (10057: A 
> request to send or receive data was disallowed because the socket is not 
> connected and (when sending on a datagram socket using a sendto call) no 
> address was supplied) while in http auth state, client: 127.0.0.1, server: 
> 0.0.0.0:8025 === === === 
> 
> Tried under both admin and regular user. 
> 
> Any further ideas how to get it fixed please? 
> 
> Thank you, 
> Yury 
> 
> -------------------------
> 
> FROM: Sergey Brester <[email protected]>
> SENT: Wednesday, February 12, 2020 1:51 PM
> TO: Yury Shpakov <[email protected]>
> CC: [email protected] <[email protected]>
> SUBJECT: Re: nginx for Windows - WSASend() socket error 10057 
> 
> I answered inline... 
> 
> 12.02.2020 18:59, Yury Shpakov wrote: 
> 
>> Hi Sergey, 
>> 
>> Thank you for you response. 
>> 
>> I tried netstat /nabo and I don't see any reference to port 9000 at all. 
>> So a problem is to make nginx to listen on port 9000 (as server)? 
>> Or nginx is not listening on port 9000 but rather sending requests to port 
>> 9000 (as client)?
> 
> With setting of `auth_http`, you are defining an URL to the service 
> responsible for authentication (and upstream choice). 
> Of course then you should have something that would response to the 
> auth-requests (your own upstream, or some nginx location, or some "foreign" 
> http-server). 
> 
> See https://docs.nginx.com/nginx/admin-guide/mail-proxy/mail-proxy/ [2] for 
> more examples. 
> 
>> Maybe it's easier not to use auth_http at all? I was trying to remove it 
>> from configuration file but nginx was not happy.
> 
> I have my own auth-module so I don't know how it can be solved in stock-nginx 
> without this directive. 
> 
> Take a look here - 
> https://serverfault.com/questions/594962/nginx-understanding-the-purpose-of-auth-http-imap-proxy
>  [3] - you can use some nginx location (and internal URL to same nginx 
> instance) to specify that.
> 
> Anyway it is recommended to use some auth (on nginx side), because it'd 
> preserve the resources of mail-servers, allow you to authenticate email 
> clients with same user/password for all mail-servers (smtp, imap, pop3, etc) 
> as well as the same user/pwd as for some other http-services. And it is used 
> to choose an upstream server (if multiple) for the email processing. 
> 
>> At this point I don't need any authentication. I was told by my boss to use 
>> nginx for load testing of our service sending emails (SMTP client). I've got 
>> some SMTP Server and nginx would be used as SMTP proxy because it allows to 
>> set up delays.
> 
> Well, an auth request to some nginx-location would allow you to set up delays 
> even on authentication phase. 
> 
>> And take into account that I REMOVED "--with-http_ssl_module" from 
>> parameters when I was building nginx. 
>> 
>> And you advised to download some nginx.exe files but I believe they were 
>> built without "--with-mail" parameter (which I need).
> 
> Although, it was compiled with "--with-mail" (you can see all parameters in 
> provided GH-link [4]) 
> But it would not help, because basically your issue seems to be the 
> configuration (not the nginx.exe). 
> 
> Thank you, 
> Yury 
> 
> -------------------------
> 
> FROM: Sergey Brester <[email protected]>
> SENT: Wednesday, February 12, 2020 7:38 AM
> TO: [email protected] <[email protected]>
> CC: Yury Shpakov <[email protected]>
> SUBJECT: Re: nginx for Windows - WSASend() socket error 10057 
> 
> It looks like your service defined in auth_http doesn't answer (or no 
> listener on 127.0.0.1 port 9000?)... 
> 
> try netstat (in cmd as admin): 
> 
> netstat /nabo
> netstat /nabo | grep -A 1 ":9000b" 
> 
> and check whether the listener on port 9000 is bound to 127.0.0.1 (or it is 
> 0.0.0.0 only?) and it is the process you expect to see there (can be 
> "reserved" by some other windows-service). 
> 
> additionally try to telnet or curl it: 
> 
> curl -H "Auth-Method: plain" -H "Auth-User: user" -H "Auth-Pass: pwd" -H 
> "Auth-Protocol: imap" -H "Auth-Login-Attempt: 1" -i 
> http://127.0.0.1:9000/cgi-bin/nginxauth.cgi 
> 
> if it does not answer, make another attempt by replace 127.0.0.1 with 0.0.0.0 
> (or a host-name). 
> 
> If it answers - see whether it is the expected response (some examples of 
> good and bad responses are described in 
> http://nginx.org/en/docs/mail/ngx_mail_auth_http_module.html [5]). 
> 
> But I guess if WSASend fails, it would probably (unexpected) reject the 
> connection during the send (or even connect) process.
> It can be also invalid (unexpected) content-length in keep-alive connect to 
> auth-upstream - so send but still receive is expected (or vice versa). 
> 
> Also follow this forum topic addressing similar issue: 
> https://forum.nginx.org/read.php?2,257206,257207#msg-257207 [6] 
> 
> Anyway it doesn't look to me like an issue of nginx (regardless windows or 
> not), but you can also try some other ready build (for example on my GH [4] - 
> nginx.zip [7], where it works well). 
> 
> Regards,
> Sergey 
> 
> 12.02.2020 03:01, Yury Shpakov wrote: 
> Hi there, 
> 
> Trying to make nginx work as SMTP server and/or SMTP proxy. Done everything 
> according to: 
> http://nginx.org/en/docs/howto_build_on_win32.html [8] 
> But excluded (don't care about SSL at this point so don't want to 
> install/configure Perl now): 
> --with-openssl=objs/lib/openssl-master 
> 
> --with-openssl-opt=no-asm 
> --with-http_ssl_module 
> And added: 
> --with-mail
> 
> nmake was successful and nginx.exe was created. 
> However nginx.exe keeps failing with the error: 
> WSASend() failed (10057: A request to send or receive data was disallowed 
> because the socket is not connected and (when sending on a datagram socket 
> using a sendto call) no address was supplied) while in http auth state, 
> client: 127.0.0.1, server: 0.0.0.0:8025 
> Windows API says the following about this error: 
> 
> WSAENOTCONN10057
> Socket is not connected.A request to send or receive data was disallowed 
> because the socket is not connected and (when sending on a datagram socket 
> using SENDTO [9]) no address was supplied. Any other type of operation might 
> also return this error--for example, SETSOCKOPT [10] setting SO_KEEPALIVE 
> [11] if the connection has been reset.
> 
> https://docs.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2
>  [12]
> 
> Windows Sockets Error Codes (Winsock2.h) - Win32 apps | Microsoft Docs [12] 
> Return code/value Description; WSA_INVALID_HANDLE 6: Specified event object 
> handle is invalid. An application attempts to use an event object, but the 
> specified handle is not valid. 
> docs.microsoft.com 
> 
> Managed to debug your code in VS 2010 a little bit but it's brutal C so it's 
> hard to figure your code out. And this debugger doesn't show you any local 
> variables values. 
> Any recommendation for me to make it work? 
> Tried to play with config (commenting/uncommenting): 
> 
> #user nobody; 
> worker_processes 1; 
> #error_log logs/error.log; 
> #error_log logs/error.log notice; 
> #error_log logs/error.log info; 
> #pid logs/nginx.pid; 
> events { 
> worker_connections 1024; 
> } 
> mail { 
> server_name localhost; 
> auth_http localhost:9000/cgi-bin/nginxauth.cgi; 
> # auth_http none; 
> smtp_auth none; 
> # smtp_auth login plain cram-md5; 
> # smtp_capabilities "SIZE 10485760" ENHANCEDSTATUSCODES 8BITMIME DSN; 
> xclient off; 
> server { 
> listen 8025; 
> protocol smtp; 
> proxy on; 
> proxy_pass_error_message on; 
> } 
> } Tried both under a regular user and under admin. Tried on 25, 1025 and 8025 
> ports. 
> Thank you, 
> Yury 
> 
> _______________________________________________
> nginx-devel mailing list
> [email protected]http://mailman.nginx.org/mailman/listinfo/nginx-devel [1]
 

Links:
------
[1] http://mailman.nginx.org/mailman/listinfo/nginx-devel
[2] https://docs.nginx.com/nginx/admin-guide/mail-proxy/mail-proxy/
[3]
https://serverfault.com/questions/594962/nginx-understanding-the-purpose-of-auth-http-imap-proxy
[4] https://github.com/sebres/nginx/releases/tag/release-1.13.0
[5] http://nginx.org/en/docs/mail/ngx_mail_auth_http_module.html
[6] https://forum.nginx.org/read.php?2,257206,257207#msg-257207
[7] https://github.com/sebres/nginx/files/2246440/nginx.zip
[8] http://nginx.org/en/docs/howto_build_on_win32.html
[9]
https://docs.microsoft.com/en-us/windows/desktop/api/winsock/nf-winsock-sendto
[10]
https://docs.microsoft.com/en-us/windows/desktop/api/winsock/nf-winsock-setsockopt
[11]
https://docs.microsoft.com/en-us/windows/desktop/winsock/so-keepalive
[12]
https://docs.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2
_______________________________________________
nginx-devel mailing list
[email protected]
http://mailman.nginx.org/mailman/listinfo/nginx-devel

Reply via email to