Nginx mail proxy
imwack
nginx-forum at nginx.us
Sat Mar 21 04:37:40 UTC 2015
I want to use nginx as a mail proxy.I am new to nginx and need some help
with the configuration, I got some problems.
I want to use Foxmail ,use ngx proxy , this is my configuration.
mail{
#server_name mailProxy;
auth_http localhost:80/php/auth.php;
pop3_capabilities LAST TOP USER PIPELINING UIDL;
pop3_auth plain apop cram-md5;
imap_capabilities IMAP4rev1 UIDPLUS;
smtp_capabilities "SIZE 10485760" ENHANCEDSTATUSCODES 8BITMIME DSN;
smtp_auth login plain cram-md5;
server{
listen 25;
protocol smtp;
}
server{
listen 110;
protocol pop3;
proxy on;
proxy_pass_error_message on;
}
server{
listen 143;
protocol imap;
proxy on;
}
}
and my auth script using PHP as follow:
<?php
/*
Nginx sends headers as
Auth-User: user
Auth-Pass: password
In php see as HTTP_AUTH_USER HTTP_AUTH_PASS
*/
if(!isset($_SERVER["HTTP_AUTH_USER"]) ||
!isset($_SERVER["HTTP_AUTH_PASS"])){
fail();
}
$uname = $_SERVER["HTTP_AUTH_USER"];
$upass = $_SERVER["HTTP_AUTH_PASS"];
$protocol = $_SERVER["HTTP_AUTH_PROTOCOL"];
$backend_prot = 110;
if($protocol=="imap"){
$backend_prot = 143;
}
if($protocol=="smtp"){
$backend_prot = 25;
}
$backend_ip = "*.*.*.*"; //backend ip
//auth
if(!authuser($uname,$upass)){
fail();
exit;
}
$server_ip = $backend_ip;
pass($server_ip,$backend_prot);
function authuser($user,$pass){
//auth
return true;
}
function fail(){
header("Auth-Status:failed");
exit;
}
function pass($server,$port){
header("Auth-Status:OK");
header("Auth-Server:$server");
header("Auth-Port:$port");
exit;
}
?>
But this does not run,when i use telnet test,as follow
telnet 192.168.42.132 25
Trying 192.168.42.132...
Connected to 192.168.42.132.
Escape character is '^]'.
220 wack ESMTP ready
auth login
334 VXNlcm5hbWU6
base64(username==)
334 UGFzc3dvcmQ6
base64(password)
451 4.3.2 Internal server error
Connection closed by foreign host.
what's wrong ,and the error log as follow:
2015/03/21 12:35:39 [error] 55719#0: *151 upstream sent invalid response:
"550 insufficient authorization" while reading response from upstream,
client: 192.168.42.132, server: 0.0.0.0:25, login: "***@**.**.cn",
upstream:***.***.***.***:25
The '*' is my username and backend ip. 192.168.42.132 is my vitual machine
ip.
Posted at Nginx Forum: http://forum.nginx.org/read.php?2,257510,257510#msg-257510
More information about the nginx
mailing list