文档章节

nginx 代理imap pop smtp

 超级超级管理员
发布于 2015/10/23 20:31
字数 308
阅读 866
收藏 0

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();
}

?>

© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 147
码字总数 52689
作品 0
成都
运维
私信 提问
SMTP,IMAP,POP3的区别

一般每个提供电子邮件服务的网站都有自己的SMTP和POP服务器地址,在你登录你的电子邮件网站时仔细找找肯定能发现它们,如果找不到还可以查看一下网站的“帮助”。如果你想详细的了解一下这其...

烽焱10仴
2014/06/03
0
0
POP3、SMTP和IMAP协议

POP3 POP3是PostOffice Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,PO...

chapin
2014/09/12
0
0
LInux(MailServer)

电子邮件系统5+1 1.MUA(Mail User Agent)邮件用户代理 MUA是一个邮件系统的客户端程序,它提供了阅读、发送和接收电子邮件的用户接口。 常用工具:foxmail、outlook、webmail、mail命令等。...

赵-猛
2017/02/26
0
0
nginx 代理邮件发送

使用nginx代理进行邮件收发。 配置如下: mail { # See sample authentication script at: # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript auth_http 172.17.0.1:8003/Proxy/......

hiram365
2017/05/18
438
0
关于nginx邮件配置问题

在nginx的nginx.conf文件中配置 mail邮件模块可以实现邮件的反向代理。 在mail 中有一个auth_http实现认证。 这个配置只能配置一个地址,有什么方法可以配置多个地址实现多个地址负载均衡? ...

davely
2016/09/18
139
0

没有更多内容

加载失败,请刷新页面

加载更多

追加字节能优化性能

这种方式看起来很神奇,单如果深入理解处理器架构就能理解其中的奥秘。让我们先来看看LinkedTransferQueue这个类,它使用一个内部类型来定义队列的头队列Head和尾节点tail,二这个内部类Pad...

无知的小狼
37分钟前
4
0
性能优化(JVM概念及配置)

虚拟机组成 一次编写,到处运行 Java虚拟机是对操作系统的模拟,隔离差异 2018编程语言排行榜 一个复杂的构架 虚拟机的内部概念 运行原理 编译器,解释器执行流程 内存分配-线程模型 栈帧模型...

这很耳东先生
44分钟前
3
0
Scala之初步认识与环境准备

1. 了解 Scala 1.1. 什么是 Scala Scala 是 Scalable Language 的简写,是一门多范式的编程语言。 Scala设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚...

飞鱼说编程
今天
4
0
Vue项目分环境打包的实现步骤

在项目开发中,我们的项目一般分为开发版、测试版、Pre版、Prod版。Vue-cli的默认环境一只有dev和prod两个,之前每次要发布测试版或Pre版都是修改了源码中API地址后打包,这样很麻烦。如果能...

peakedness丶
今天
6
0
vue+lowdb+express

搭建流程: 1.安装Node.js; 2.安装npm; 3.安装Express; 搭建流程 npm install -g express 安装 express 生成器 npm install -g express-generator 查看是否安装成功,随便输的一个命令...

Js_Mei
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部