文档章节

nginx 代理imap pop smtp

 超级超级管理员
发布于 2015/10/23 20:31
字数 308
阅读 704
收藏 0
点赞 0
评论 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
博文 52
码字总数 39592
作品 0
成都
运维
怎样使用QQ邮箱代收163邮箱的邮件

参考:网易163邮箱帮助 首先介绍一下什么是POP3,SMTP和IMAP POP3 POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子...

winycg ⋅ 04/19 ⋅ 0

什么是POP3、SMTP和IMAP?

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

327051661 ⋅ 05/25 ⋅ 0

Nginx 主线版 1.14.0 发布,Bug 修复版本

Nginx 主线版 1.14.0 发布了,Nginx(发音同 engine x)是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like 协议下发行,可以在 UNIX、GNU/Lin...

周其 ⋅ 04/18 ⋅ 0

Ubuntu Linux 中虚拟主机的配置 - 搭配 Nginx

虚拟主机,正如其名,就是将一台服务器划分为多个虚拟的主机,可以将每个域名分配给不同的虚拟主机,这样可以充分利用了域名资源和硬件资源。这次我们采用 Nginx 实现虚拟主机的配置。 Ngin...

摆码王子 ⋅ 04/16 ⋅ 0

RHEL7下 nginx 的详细配置

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-l...

老唐6 ⋅ 04/15 ⋅ 0

exchange服务器证书过期,导致outlook客户端不停的弹出证书过期的警告窗口

具体症状:exchange服务器证书过期,导致outlook客户端不停的弹出证书过期的警告窗口(但点击警告窗口确定之后,outlook客户端仍旧可以使用。且OWA一切正常)。 于是决定在过期的证书上续订证...

327051661 ⋅ 05/03 ⋅ 0

JavaWeb18-HTML篇笔记(二)

1.1.1.1 搭建开发环境: 【步骤一】:引入开发jar包 【步骤二】:创建包结构: 【步骤三】:引入工具类和配置文件: 【步骤四】:编写通用的Servlet: 1.1.1.2 用户模块的代码实现: 【创建数据...

我是小谷粒 ⋅ 06/06 ⋅ 0

基于POI和JavaMail实现读取Excel表格内容一键群发邮箱功能

公司财务要求做一个Excel表格工资条内容群发邮箱的功能,由于我是菜鸟项目老大就把这任务交给我来做,开始时需求没谈好做了很多白费的功夫,在这里我算是长教训!一定要谈好需求才开始做而且...

天谴残魂 ⋅ 05/07 ⋅ 0

Ubuntu使用mutt+msmtp发邮件

Ubuntu使用mutt+msmtp发邮件 apt-get install mutt apt-get install msmtp cp -rv /etc/Muttrc ~/.muttrc vi ~/.muttrc(最后添加) set sendmail="/usr/bin/msmtp" set usefrom=yes set re......

yangzhimingg ⋅ 04/19 ⋅ 0

Mac OS X中的Gmail命令行工具Mutt

     新的一天,我决定开始在命令行上做一项新的任务。在使用Twitter CLI设置把自己出卖了并在不久放弃后(我觉得命令行降低了Twitter的魅力所在),我转移到了Gmail上,我对于快速发送和...

嘶吼RoarTalk ⋅ 06/04 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

C++难点解析之const修饰符

C++难点解析之const修饰符 c++ 相比于其他编程语言,可能是最为难掌握,概念最为复杂的。结合自己平时的C++使用经验,这里将会列举出一些常见的难点并给出相应的解释。 const修饰符 const在c...

jackie8tao ⋅ 昨天 ⋅ 0

聊聊spring cloud netflix的HystrixCommands

序 本文主要研究一下spring cloud netflix的HystrixCommands。 maven <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-clo......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部