Python+Nginx实现邮件POP、IMAP、SMTP代理配置介绍

Python+Nginx实现邮件POP、IMAP、SMTP代理配置介绍,第1张

Python+Nginx实现邮件POP、IMAP、SMTP代理配置介绍

Python+Nginx实现邮件POP、IMAP和SMTP代理配置

说起Python,众所周知,它是运维中管理者需要掌握的技术。为什么这么说?Python开发语言在运维中应用广泛,可以帮助管理员提高工作效率。我不太了解细节。然后,再来说说邮件代理,因为公司的邮箱系统用的是IBM的DominoLotus服务。如果你对Lotus有所了解,Lotus是一个文件数据库类型的服务器,所有用户的邮箱数据库都是独立的xxx.nsf,使用数据库模板xxx.ntf定期创建或刷新数据,保证数据库的稳定性。但是,当用户数量较大时,需要创建多个邮件服务器来承载用户的访问。那个问题又来了。当有多台服务器时,在不同的服务器上创建不同的用户,这样不同的用户需要通过不同的服务器地址访问,不方便管理员管理。当然,我们也有办法解决这个问题。虽然有多个不同的服务器,但是我们也可以使用band以同样的方式通过代理服务器绑定用户的访问信息。能做什么样的代理?在上一篇文章中,我们介绍了代理服务是Perditon服务。通过长期的研究,我们发现可以通过另一种方法达到同样的效果,即通过开发语言+Nginx的配合,实现代理POP、IMAP、SMTP的服务,从而统一用户的访问域名。刚才我们提到了Nginx。我们都知道Nginx实际上是一个类似于Apache的web服务。我们是如何通过开发语言和Nginx来实现的?总的原则是:

获取Nginx的HttpRequerst头的用户名和密码,然后通过开发程序连接Domino的Ldap,验证用户名和密码的有效性。如果账号和密码有效,从Ldap获取用户的服务器(Mailserver),然后连接auth-status、auth-server、auth-port,添加到Http响应的头中,需要去官网查看详细说明。今天介绍Python+Nginx实现POP、IMAP、SMTP代理配置。接下来介绍Java+Nginx实现POP、IMAP和SMTP代理配置。有关详细信息,请参见以下内容:

我们在这里安装了Centos7的 *** 作系统,具体安装步骤就跳过了。

服务器配置信息:

主机名:proxy.abc.com

IP:192.168.2.163

角色:代理服务器

因为我们首先需要修改新安装的 *** 作系统的配置;

Systemctlstopfirewalld.service停止防火墙服务

systemctldisablefirewalld.service禁用防火墙的随机启动。

关闭selinux

Vim/etc/selinux/config

Setenforce1==禁用

同时关闭未使用的服务。

Systemctlstoppostfix关闭系统附带的postfix邮箱服务。

Systemctldisablepostfix禁用系统附带的postfix邮件服务。

如果你忍不住用磁带系统在nginx下配置SMTP,nginx就不能正常启动,会提示错误。该错误的原意是端口25已被占用。

习惯性为了方便安装vim和wget插件:

Yum install vim

Yum install wget

然后修改计算机名。

Hostnamectl set-hostname proxy.abc.com

重新启动后,您可以看到修改后的计算机名称。

然后修改静态ip:

 vim/etc/sysconfig/network-scripts/ifcfg-eno16777984

Vim /etc/sysconfig/network-script/ifcfg-eno16777984

修改dns

Vim /etc/reolv.conf

然后我们pingwww.baidu.com进行分析,检查是否正常退出正常。

环境准备好之后,我们就可以开始安装nginx了。

在准备安装nginx之前,我们需要通过命令确认系统本身是否自带nginx。如果有,我们需要卸载并安装最新的。

Rpm -qa | grep nginx Find -name nginx

系统没有自带nginx,那我们就开始通过yum安装nginx。

Yum安装nginx

我们发现没有在线安装包,需要先安装yum资源库,将nginx添加到yum资源舱中。

Yum install  http://nginx.org/packages/centos/7/noarch/RPMS/ nginx-release-centos-7-0.el7.ngx.noarch.rpm

无论哪种方式,我都会选择下面的,上面的是官网的回购。

Yum install  http://dl.fedoraproject.org/pub/epel/7/x86_64/e/ epel-release-7-5.noarch.rpm

回购仓安装好之后,我们就开始安装nginx。

Yum install nginx

接下来,检查安装默认路径。

/etc/nginx/nginx.conf Find -name nginx

接下来,我们将配置nginx的配置文件。

Vim /etc/nginx/nginx.conf

默认配置文件

为了方便起见,我们需要清除空这个配置文件中的所有内容,并使用下面的命令来完成它。

Echo >/etc/nginx/nginx.conf

清除空nginx.conf
中的内容

然后再次编辑配置文件。

Vim /etc/nginx/nginx.conf 添加以下代码,然后根据自己的环境修改代码内容保存即可 user nginx; worker_processes 4; pid /var/run/nginx.pid; events { worker_connections 1024; } error_log /var/log/nginx/error.log info; mail { server_name proxy.test.com; auth_http http://localhost:8000/auth/; imap_capabilities IMAP4rev1 UIDPLUS IDLE LITERAL+ QUOTA; pop3_auth plain apop cram-md5; pop3_capabilities LAST TOP USER PIPELINING UIDL; smtp_auth login plain cram-md5; smtp_capabilities "SIZE 10485760" ENHANCEDSTATUSCODES 8BITMIME DSN; xclient off; server { listen 110; protocol pop3; proxy on; proxy_pass_error_message on; } server { listen 143; protocol imap; proxy on; } server { listen 25; protocol smtp; proxy on; } }

粘贴

接下来,设置nginx服务。

Systemctl enable nginx.service nginx服务开启随机启动 Systemctl start nginx.service  nginx服务启动 Systemctl status nginx.service nginx服务运行状态

接下来,让我们检查运行端口状态。

Netstat -anlpt 提示未找到命令

我们需要安装netstatl的相关工具。

Yum install –y net-tools


安装完成后,我们可以运行它。

netstat -anlpt

检查端口状态

下一步是安装python

Python install的方式 Yum install python-ldap

Easy_install pip

Pip install Django

Django-admin startproject mailauth

Cd mailauth Ls Django-admin startapp mauth

Vim mailauth/setting.py

添加一行 'mauth'

,然后保存以退出

Vim mailauth/urls.py

添加一行网址,保存退出。

From mauth.views import auth url(r'^auth/$', auth),

Vim mauth/views.py

粘贴以下代码(根据您自己的环境进行修改)

from django.shortcuts import render from django.http import HttpResponse import ldap import socket class DoLdapAct(object): def __init__(self): try: user = request.META['HTTP_AUTH_USER'] password = request.META['HTTP_AUTH_PASS'] except KeyError: response.write('user and pass Failuer') return response r_dict = dla.get_auth_server(user, password) if r_dict['status']: response['Auth-Status'] = 'OK' response['Auth-Server'] = r_dict['server'] if request.META['HTTP_AUTH_PROTOCOL'] == 'imap': response['Auth-Port'] = 143 elif request.META['HTTP_AUTH_PROTOCOL'] == 'pop3': response['Auth-Port'] = 110 response.write('OK') print('OK') return response else: response['Auth-Status'] = 'Invalid login or password' response['Auth-Wait'] = 3 response.write('Failure') return response

保存后,我们需要启动python服务。

Cd /root/mailauth ./manage.py runserver 0.0.0.0:8000 启动服务

然后,我们修改主机文件。

Vim /etc/hosts

添加domino解析地址

邮件

我们还添加了一个关于dns上代理的解析地址,因为linux不会自动在dns上创建dns记录。

加完之后就可以开始测试了。

我们在domino上创建一个测试用户来进行测试。

Username :testuser password:123 curl -i -H 'Auth-User: testuser' -H 'Auth-Pass: 123' -H 'Auth-Protocol: pop3' http://192.168.2.163:8000/auth/

我们通过配置Outlook对其进行了测试,并通过了

通过域名,通过测试。


注意:附件格式为.7z格式,扩展名需要修改。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/779999.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存