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