postfix+dovecot+MailScanner+spamassassin+F-Prot+extmail+extman构建企业级的虚拟用户邮件服务器(1)

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:

注意:先要构建一个LAMP环境,然后再按照下面的配置来做

一.      配置虚拟用户支持  —— MySQL
1.      新建虚拟用户数据库
 tar zxvf extman-0.2.5.tar.gz
 cd extman-0.2.5/docs
 /usr/local/mysql/bin/mysql -u root -p < extmail.sql
/usr/local/mysql/bin/mysql -u root -p < init.sql
2.      编辑 vi /etc/postfix/main.cf
……
#mydestination = $mydomain, $myhostname  注释掉该行
然后添加如下内容
virtual_mailbox_base = /mailbox
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_uid_maps = static:1000
virtual_gid_maps = static:1000
3.      建立虚拟用户映射表文件
复制  extman  软件包中 docs 子目录下的样例文件
进入  /usr/src/extman-0.2.5/docs
cp mysql_virtual_* /etc/postfix
二.      配置虚拟用户支持  —— SMTP 认证
1.  编译安装  courier-authlib  软件
解压软件包,进入相应目录,然后开始安装
./configure --prefix=/usr/local/courier-authlib --without-stdheaderdir --with-authmysql --with-mysql-libs=/usr/local/mysql/lib/mysql --with-mysql-includes=/usr/local/mysql/include/mysql&&make&&make install (安装大约需要6分钟)
然后执行“make install-configure”命令后将生成默认配置文件“ authmysqlrc”和“ authdaemonrc”,作用分别为
p authdaemonrc :主配置,设置使用的认证方式
p  authmysqlrc :数据库配置,设置连接地址、查询方式等
2.  修改主配置, authdaemonrc 文件
cd    /usr/local/courier-authlib/etc/authlib/
编辑authdaemonrc文件, 建议只保留  authmysql  认证方式—认证速度快, 修改下面两行
……
authmodulelist="authmysql"      27
authmodulelistorig="authmysql"   34
3.  修改数据库配置, authmysqlrc 文件
       编辑  authmysqlrc
MYSQL_SERVER localhost   mysql 服务器位置     26
MYSQL_USERNAME   extmail  mysql 登陆用户名  27
MYSQL_PASSWORD   extmail  mysql 登陆密码     28
MYSQL_SOCKET   /tmp/mysql.sock   sock 文件位置  49( 去掉 # )
MYSQL_DATABASE   extmail        mysql 数据库名字  68
MYSQL_USER_TABLE   mailbox   mysql 用户邮箱存储的表的名字 83
……
MYSQL_HOME_FIELD concat('/mailbox/',homedir)  用户的宿主目录完整路径  133
……
MYSQL_MAILDIR_FIELD concat('/mailbox/',maildir) 用户的完整邮件存储路径  150  同时去掉前面 #
4.  其他调整
1 )修改 smtpd.conf  配置文件 改为通过 authdaemond 进行认证
vi /usr/lib/sasl2/smtpd.conf
pwcheck_method: authdaemond
authdaemond_path: /usr/local/courier-authlib/var/spool/authdaemon/socket
2) 调整 socket 目录权限
chmod  -R 755 /usr/local/courier-authlib/var/spool/authdaemon
3) 添加库文件搜索路径
    vi /etc/ld.so.conf
……
/usr/local/courier-authlib/lib/courier-authlib
ldconfig
5.  启动  counrier-authlib  服务程序
cp /usr/src/courier-authlib-0.62.2/courier-authlib.sysvinit /etc/init.d/courier-authlib
chmod 755 /etc/init.d/courier-authlib
service courier-authlib start
三.      配置虚拟用户支持  —— dovecot
1.  调整  dovecot.conf  配置文件
   vi /etc/dovecot.conf
mail_location = maildir:/mailbox/%d/%n/Maildir  修改邮箱存储 位置 212
……
auth default {          796  不动
    mechanisms = plain 801  不动
    passdb sql {        905  去掉 #
        args = /etc/dovecot-mysql.conf  用户名及密码查询在独立的配置文件中指定             907
    }                 908 # 去掉
    userdb sql {         976 # 去掉
        args = /etc/dovecot-mysql.conf 978
}                  979 # 去掉
2.  创建数据查询配置文件
vi /etc/dovecot-mysql.conf                
driver = mysql
connect = host=localhost dbname=extmail user=extmail password=extmail
default_pass_scheme = CRYPT
password_query = SELECT username AS user,password AS password FROM mailbox WHERE username = '%u' 
user_query = SELECT maildir, uidnumber AS uid, gidnumber AS gid FROM mailbox WHERE username = '%u'
3.  建立邮箱目录,并调整权限
mkdir -p /mailbox/extmail.org/postmaster/Maildir
chown -R postfix:postfix /mailbox
4.  重新启动 dovecot 服务
kill `pgrep  dovecot` ; dovecot (killall dovecot)
四.      部署 Extmail 邮件使用界面
1.  编译安装相关的 perl 依赖包,三个包的安装几乎一样
Unix-Syslog-1.1.tar.gz
DBI-1.609.tar.gz
DBD-mysql-4.013.tar.gz
比如第一个 先解压; perl Makefile.PL make make install
但第三个包注意: perl Makefile.PL --libs="-L/usr/local/mysql/lib/mysql -lmysqlclient -lz" --cflags=-I/usr/local/mysql/include/mysql ;make;make install
2.  安装  extmail  程序套件
tar xzvf extmail-1\[1\]\[1\].0.9.tar.gz -C /usr/local/apache2/htdocs/
cd    /usr/local/apache2/htdocs
mv extmail-1.0.9 extmail
cd extmail
cp webmail.cf.default  webmail.cf
编辑webmail.cf
SYS_CONFIG = /usr/local/apache2/htdocs/extmail/
SYS_LANGDIR = /usr/local/apache2/htdocs/extmail/lang
SYS_TEMPLDIR = /usr/local/apache2/htdocs/extmail/html
SYS_MAILDIR_BASE = /mailbox            124
SYS_MYSQL_USER = extmail               136
SYS_MYSQL_PASS = extmail
SYS_MYSQL_DB = extmail                     
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /tmp/mysql.sock    140
4.      调整 httpd.conf 配置,
1)          更改允许 apache 的用户和组
User postfix     66
Group postfix   67
2)          添加如下内容
   <VirtualHost 192.168.1.1>
    ServerName 192.168.1.1
    DocumentRoot /usr/local/apache2/htdocs/extmail/html/
    ScriptAlias /extmail/cgi/ /usr/local/apache2/htdocs/extmail/cgi/
    Alias /extmail /usr/local/apache2/htdocs/extmail/html/
</VirtualHost>
重启 apache ,然后用浏览器访问 http://192.168.1.1/extmail
 

邮箱账号: postmaster  密码: extmail  域名 :extmail.org
五.      部署 Extman Web 管理界面
1.  编译安装相关的依赖包
GD-2.41.tar.gz
File-Tail-0.99.3.tar.gz
rrdtool-1.2.23-3.el5.i386.rpm
rrdtool-perl-1.2.23-3.el5.i386.rpm
解压GD; perl  Makefile.PL;make;make install
解压File-Tail; perl  Makefile.PL;make;make install
rpm -vih /usr/src/rrdtool-perl-1.4.1-1.el5.wrl.i386.rpm /usr/src/rrdtool-1.4.1-1.el5.wrl.i386.rpm


本文转自 gehailong 51CTO博客,原文链接:http://blog.51cto.com/gehailong/496255,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
监控 中间件 Java
后端技术:构建高效、稳定的服务器端应用
【10月更文挑战第5天】后端技术:构建高效、稳定的服务器端应用
494 0
|
6月前
|
人工智能 JavaScript API
零基础构建MCP服务器:TypeScript/Python双语言实战指南
作为一名深耕技术领域多年的博主摘星,我深刻感受到了MCP(Model Context Protocol)协议在AI生态系统中的革命性意义。MCP作为Anthropic推出的开放标准,正在重新定义AI应用与外部系统的交互方式,它不仅解决了传统API集成的复杂性问题,更为开发者提供了一个统一、安全、高效的连接框架。在过去几个月的实践中,我发现许多开发者对MCP的概念理解透彻,但在实际动手构建MCP服务器时却遇到了各种技术壁垒。从环境配置的细节问题到SDK API的深度理解,从第一个Hello World程序的调试到生产环境的部署优化,每一个环节都可能成为初学者的绊脚石。因此,我决定撰写这篇全面的实
1490 67
零基础构建MCP服务器:TypeScript/Python双语言实战指南
|
5月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
1078 1
|
5月前
|
人工智能 JavaScript 前端开发
用 Go 语言轻松构建 MCP 服务器
本文介绍了使用 Go 语言构建 MCP 服务器的完整过程,涵盖创建服务器实例、注册工具、资源和提示词,以及通过 stdio 和 sse 模式启动服务的方法,帮助开发者快速集成 LLM 应用与外部系统。
|
7月前
|
监控 Ubuntu 安全
Ubuntu系统下构建FTP服务器的步骤
记住,时不时的巡视(监控)农场,更新工具(软件和安全性更新),以及恰当的维护同样重要,这样你的FTP农场才能长久繁荣。
140 4
|
9月前
|
人工智能 搜索推荐 程序员
用 Go 语言轻松构建 MCP 客户端与服务器
本文介绍了如何使用 mcp-go 构建一个完整的 MCP 应用,包括服务端和客户端两部分。 - 服务端支持注册工具(Tool)、资源(Resource)和提示词(Prompt),并可通过 stdio 或 sse 模式对外提供服务; - 客户端通过 stdio 连接服务器,支持初始化、列出服务内容、调用远程工具等操作。
2161 5
|
关系型数据库 API 数据库
后端开发的艺术:从零到一构建高效服务器
在数字化时代,后端开发是支撑现代互联网应用的基石。本文旨在探讨后端开发的核心概念、关键技术以及如何构建一个高效的服务器。我们将从基础的编程语言选择开始,逐步深入到数据库设计、API开发和性能优化等关键领域。通过实际案例分析,我们将揭示后端开发的复杂性和挑战性,同时提供实用的解决方案和最佳实践。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和启发。
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API服务器
【10月更文挑战第12天】使用JavaScript和Node.js构建简单的RESTful API服务器
224 0
|
监控 Java 关系型数据库
构建高效可靠的服务器端应用
【10月更文挑战第6天】构建高效可靠的服务器端应用