Welcome! Log In Create A New Profile

Advanced

Nginx mail proxy

March 21, 2015 12:37AM
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.
Subject Author Posted

Nginx mail proxy

imwack March 21, 2015 12:37AM

Re: Nginx mail proxy

Maxim Dounin March 21, 2015 10:38AM

Re: Nginx mail proxy

imwack March 22, 2015 12:17AM

Re: Nginx mail proxy

Maxim Dounin March 22, 2015 06:50AM

Re: Nginx mail proxy

peanky March 01, 2018 05:55AM

Re: Nginx mail proxy

Maxim Dounin March 01, 2018 08:34AM

Re: Nginx mail proxy

peanky March 02, 2018 09:54AM

Re: Nginx mail proxy

Maxim Dounin March 02, 2018 11:30AM

Re: Nginx mail proxy

peanky March 06, 2018 02:50AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 191
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready