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',然后保存以退出
添加一行网址,保存退出。
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格式,扩展名需要修改。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)