nginx 代理imap pop smtp

nginx安装的时候要编译添加mail 支持 --with-mail --with-mail_ssl_module

nginx配置文件

worker_processes  4;
error_log  logs/error.log  info;
events {
    worker_connections  1024;
}
mail {
    auth_http  127.0.0.1:8070;
    pop3_capabilities  "TOP"  "USER";
    imap_capabilities  "IMAP4rev1"  "UIDPLUS";
    smtp_capabilities "SIZE 10485760" ENHANCEDSTATUSCODES 8BITMIME DSN;

    server {
            listen     110;
            protocol   pop3;
            proxy      on;
    }
    server {
            listen     143;
            protocol   imap;
            proxy      on;
    }
    server {
        listen    25;
        protocol    smtp;
        proxy    on;
        smtp_auth login plain;
        xclient    off;
    }
}

auth 认证127.0.0.1:8070 这边是采用的 tornado

#!/usr/bin/env python
#coding:utf-8

import tornado.ioloop
import tornado.web
import tornado.httpserver 

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        auth_user = self.request.headers['Auth-User']
        auth_pass = self.request.headers['Auth-Pass']
        client_ip = self.request.headers['Client-Ip']
        auth_protocol = self.request.headers['Auth-Protocol']
        self.set_header('Auth-Status','OK')
        self.set_header('Auth-Server','imap.mail.com')
        self.set_header('Auth-Port','143')
        
        return
application = tornado.web.Application([
    (r"/", IndexHandler),

])      
if __name__ == "__main__":
    application.listen(8070)
    tornado.ioloop.IOLoop.current().start()

php版api认证

<?php
if(!isset($_SERVER ["HTTP_AUTH_USER"] ) || ! isset($_SERVER ["HTTP_AUTH_PASS"] )) {
    header("Auth-Status: Invalid login or password");
    exit;
}

$auth_user = $_SERVER['HTTP_AUTH_USER'];
$auth_pass = $_SERVER['HTTP_AUTH_PASS'];
$auth_protocol = $_SERVER['HTTP_AUTH_PROTOCOL'];
list($uid, $domain) = explode("@", $auth_user);


$conn = mysql_connect("127.0.0.1","root","123456");
if (!$conn){
  die('Could not connect: ' . mysql_error());
  }
mysql_select_db("mail", $conn);

$result = mysql_query("select host from mail where pdomain='".$domain."' limit 1");
while($row=mysql_fetch_array($result)){
    $host = $row['host'];   
}
/* PHP7使用mysqli连接数据库

$con = new mysqli($dbhost,$dbuser,$dbpwd,$dbname);

if(mysqli_connect_errno()){
    echo "mysqli connect fail: " .mysqli_connect_error();
    exit();
}

$result = $con->query("select host from mail where pdomain='".$domain."' limit 1");
while($row=mysqli_fetch_array($result)){
    $host = $row['host'];   
}
*/
switch($host){
    case "mail1.com":
        $backend = "192.168.1.1";
        break;
    case "mail2.com":
        $backend = "192.168.1.2";
        break;
}

if ($auth_protocol == "imap"){
    //header("Auth-Status:OK");
    header("Auth-Server:$backend");
    header("Auth-Port:143");
    exit();
}
else if($auth_protocol == "pop3"){
    //header("Auth-Status:OK");
    header("Auth-Server:$backend");
    header("Auth-Port:110");
    exit();
}
else if($auth_protocol == "smtp"){
    #header("Auth-Status:OK");
    header("Auth-Server:$backend");
    header("Auth-Port:25");
    exit();
}

?>

转载于:https://my.oschina.net/hxily/blog/521376

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器 。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过四年多了。Igor 将源代码以类BSD许可证的形式发布。自Nginx 发布四年来,Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等;国内几个重要的视频分享网站也部署了Nginx,如六房间、酷6等。新近发现Nginx 技术在国内日趋火热,越来越多的网站开始部署Nginx。 2. Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性:   在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应, 感谢Nginx为我们选择了 epoll and kqueue作为开发模型.   Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多.   作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器), Last.fm 描述了成功并且美妙的使用经验.   Nginx 是一个 安装非常的简单 , 配置文件 非常简洁(还能够支持perl语法), Bugs非常少的服务器: Nginx 启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动. 你还能够 不间断服务的情况下进行软件版本的升级.
Nginx是一种高性能的Web服务器和反向代理服务器,可以用来处理HTTP、HTTPS、SMTPPOP3和IMAP等协议。它的设计目标是高并发、低内存消耗、高可靠性和低CPU消耗。 而域名代理是指将一个域名解析到另一个域名,并将所有的流量和请求转发到目标域名。可以通过修改DNS记录将一个域名指向不同的服务器IP地址,也可以通过设置反向代理服务器实现域名代理Nginx可以充当域名代理服务器,实现域名代理功能。具体来说,可以通过在Nginx的配置文件中定义不同的server块来分别处理不同的域名请求。例如,可以通过以下配置将域名A的请求代理到目标服务器B上: ``` server { listen 80; server_name domainA.com; location / { proxy_pass http://target_server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` 上述配置中,通过`server_name`指令设置要代理的域名为domainA.com,通过`proxy_pass`指令将请求反向代理到目标服务器target_server。同时,通过`proxy_set_header`指令将原始请求的host和IP地址传递给目标服务器,以便目标服务器能正确处理请求。 通过这样的配置,当用户访问domainA.com时,Nginx会将请求转发到目标服务器target_server,并将目标服务器返回的数据返回给用户。这样就实现了nginx的域名代理功能。 总之,Nginx可以通过配置文件来实现域名代理,将一个域名的请求转发到另一个目标服务器上,从而实现灵活的Web服务器和反向代理功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值