Postfix企业级邮件系统进阶版

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

       本文也是参考了网上的一些案例,但是在进行实际的操作过程中还是错误百出。经过几个白昼和黑夜的摸索,终于练成了--《Postfix企业级邮件系统进阶版》秘籍!

       我比较崇尚开源精神,于是乎将自己的心得、知识和广大的互联网朋友们一起分享!

       此邮件系统包含了,基本邮件发送接收、垃圾邮件过滤、病毒扫描、虚拟用户、后台管理、WebMail、转发、邮件防止伪造、自动回复等功能。

1、LAMP 配置在此不做配置,安装系统时选择好软件apache+php+mysql等。

2.安装courier-authlib

下载地址:

你可以通过下列地址查码安装代码: http://sourceforge.net/projects/courier/

安装之前添加postfix和maildrop相关的用户&用户组

groupadd postfix

groupadd postdrop

useradd postfix -g postfix -c "Postfix user" -d /home/postfix -s /sbin/nologin

groupadd vmail 

useradd vmail -g vmail -d /mailbox

#### 特别提示 1:这个主要是设定邮件管理账号/进程启动帐号. 记住postfix和pstdrop组都中包含用户 

postfix, vmail组中包括vmail用户,你可以通过直接编/etc/group文件,把这些用户加入相关的组。同时 

,请记住这里的vmail的GI--502和UID--501,在下面文章的多处针使用到).

 

[root@mail~]# mkdir /home/mail

[root@mail~]# chown vmail:vmail /mailbox

[root@mail~]# chmod -R 775 /mailbox

[root@mail~]# cd /usr/src/

[root@usr/src/]# tar jvxf courier-authlib-0.60.2.tar.bz2 

[root@usr/src/]#cd /usr/src/courier-authlib-0.60.2

./configure --prefix=/usr/local/courier-authlib --without-authpam --without-authldap --without-authpwd --without-authshadow --without-authvchkpw --without-authpgsql  --with-authmysql --with-mysql-libs=/usr/lib/mysql --with-mysql-includes=/usr/include/mysql --with-redhat  --with-authmysqlrc=/usr/local/courier-authlib/etc/authmysqlrc  --with-authdaemonrc=/usr/local/courier-authlib/etc/authdaemonrc CFLAGS="-march=i686 -O2 -fexpensive-optimizations" CXXFLAGS="-march=i686 -O2 -fexpensive-optimizations" 

 

[root@usr/src/courier-authlib-0.60.2]# make

[root@usr/src/courier-authlib-0.60.2]# make install

[root@net-server:/]# cd /usr/local/courier-authlib/etc/

[root@usr/local/courier-authlib/etc]# cp authmysqlrc.dist authmysqlrc

[root@usr/local/courier-authlib/etc]# cp authdaemonrc.dist authdaemonrc

[root@usr/local/courier-authlib/etc]# vi authdaemonrc

authmodulelist="authmysql"               <--使用Mysql用户认证-->

authmodulelistorig="authmysql"           <--使用Mysql用户认证-->

daemons=5                                <--已经存在, 没有就增加-->

authdaemonvar=/var/spool/authdaemon      <--authlib会自己设定好此路径->

DEBUG_LOGIN=0                             <--已经存在, 没有就增加, 2 为详细Debug模式,可以看更详细的日志-->

DEFAULTOPTIONS=""                         <--已经存在, 没有就增加-->

LOGGEROPTS=""                             <--已经存在, 没有就增加-->

 

[root@usr/local/courier-authlib/etc]# vi authmysqlrc

MYSQL_SERVER  localhost            <--mysql服务器名或IP地址-->

MYSQL_USERNAME  postfix                   <--mysql用户名-->

MYSQL_PASSWORD  ×××××                <--mysql用户名密码-->

MYSQL_SOCKET  /var/lib/mysql/mysql.sock       <--mysql SOCKET,请根据你的实情而定-->

MYSQL_PORT  3306                       <--mysql 端口号,请根据你的实情而定-->

MYSQL_OPT  0

MYSQL_DATABASE  postfix

MYSQL_USER_TABLE  mailbox

MYSQL_CRYPT_PWFIELD  password

MYSQL_UID_FIELD  501                    <--mysql表中, 管理authlib用户的UID.前面我们就用的vmail-->

MYSQL_GID_FIELD  502                    <--mysql表中, 管理authlib用户的GID.前面我们就用的vmail-->

### vmail---->UID:501, GID:502####

MYSQL_LOGIN_FIELD username

MYSQL_HOME_FIELD  concat('/home/mail/',maildir)

MYSQL_NAME_FIELD  name

MYSQL_MAILDIR_FIELD  concat('/home/mail/',maildir)

MYSQL_QUOTA_FIELD  quota

MYSQL_WHERE_CLAUSE active='1' 

 注意以上的文字最后不能有空格否则无法连接数据库!!!!

启动courier-authlib

[root@mail]# cp courier-authlib.sysvinit  /etc/init.d/courier-authlib

[root@mail~]#chmod 755 /etc/rc.d/init.d/courier-authlib

[root@mail~]# service courier-authlib start

[root@mail~]#chkconfig --add courier-authlib

[root@mail~]#chkconfig --level 35  courier-authlib on

 

=============================================================

编译安装配置认证cyrus-sasl

cyrus-sasl-2.1.22.tar.gz

./configure  --prefix=/usr/local/cyrus-sasl --enable-plain --enable-cram --enable-digest --enable-login --enable-sql --disable-anon --disable-ntlm --disable-gssapi --disable-krb4 --disable-otp --disable-srp --disable-srp-setpass --with-authdaemond=/usr/local/courier-authlib/var/spool/authdaemon/socket --with-mysql=/usr/lib/mysql --with-mysql-includes=/usr/include/mysql/ --with-mysql-libs=/usr/lib/mysql

make

make install

做软连接

ln -s /usr/local/cyrus-sasl/lib/sasl2/  /usr/lib/

vi /usr/local/cyrus-sasl/lib/sasl2/smtpd.conf 

vi /usr/lib/sasl2/smtpd.conf 为以下内容

vi /usr/lib/sasl/smtpd.conf

pwcheck_method: authdaemond

log_level:  3

mech_list:  plain login

authdaemond_path: /usr/local/courier-authlib/var/spool/authdaemon/socket

###

postfix/smtpd[6349]: sql_select option missing

postfix/smtpd[6349]: auxpropfunc error no mechanism available

###如有报告上述如下错误请添加如下代码

allow_plaintext: true

auxprop_plugin: mysql

sql_hostnames: localhost

sql_user: postfix

sql_passwd:  ×××××      

sql_database: postfix

sql_select: select password from mailbox where username='%u'

设置自启动:

chkconfig –-level  35  saslauthd on

service saslauthd start

=============================================================

安装postfix  postfix-2.5.1-1.mysql.sasl2.vda.rhel4.i386.rpm  #此版本支持mysql sasl2 免去编译的麻烦#

postfix-2.5.1-1.mysql.sasl2.vda.rhel5.i386.rpm

生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低

newaliases

rpm -e sendmail --nodeps 删除sendmail

相关配置文件

编辑/etc/postfix/main.cf 为以下内容

#=======================BASE Settings==========================

myhostname = mail.epanel.cn

mydomain = epanel.cn

myorigin = $mydomain

mydestination = $myhostname localhost localhost.$mydomain  

mynetworks = 192.168.1.0/24 127.0.0.0/8

inet_interfaces = all

#=====================Vritual Mailbox settings======================

virtual_mailbox_base = /home/mail

virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

virtual_alias_domains =

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

virtual_uid_maps = static:501

virtual_gid_maps = static:502

virtual_transport = virtual

maildrop_destination_recipient_limit = 1

maildrop_destination_concurrency_limit = 1

#========================QUOTA============================

message_size_limit = 14336000

virtual_mailbox_limit = 20971520

virtual_create_maildirsize = yes

virtual_mailbox_extended = yes

virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf

virtual_mailbox_limit_override = yes

virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.

virtual_overquota_bounce = yes

#=======================SASL Settings=========================

broken_sasl_auth_clients = yes

smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination,permit

smtpd_sasl_auth_enable = yes

smtpd_sasl_local_domain = $myhostname   注意 如果测试出错,删除!

smtpd_sasl_security_options = noanonymous

smtpd_sasl_application_name = smtpd

smtpd_banner=$myhostname ESMTP "Version not Available"

readme_directory = no

sample_directory = /etc/postfix

sendmail_path = /usr/sbin/sendmail

html_directory = no

setgid_group = postdrop

command_directory = /usr/sbin

manpage_directory = /usr/local/man

daemon_directory = /usr/libexec/postfix

newaliases_path = /usr/bin/newaliases

mailq_path = /usr/bin/mailq

queue_directory = /var/spool/postfix

mail_owner = postfix

 

#=======================ANTI-SPAM=========================

smtpd_recipient_restrictions = 

  permit_sasl_authenticated

  permit_mynetworks

  reject_invalid_hostname

  reject_non_fqdn_hostname

  reject_unknown_sender_domain

  reject_non_fqdn_sender

  reject_non_fqdn_recipient

  reject_unknown_recipient_domain

  reject_unauth_pipelining

  reject_unauth_destination

 

===========================================================

编辑 vi /etc/postfix/mysql_virtual_alias_maps.cf 为以下内容

user = postfix

password =  ×××××      

hosts = localhost

dbname = postfix

table = alias

select_field = goto

where_field = address

additional_conditions = AND active = '1'

 

编辑 vi /etc/postfix/mysql_virtual_domains_maps.cf 为以下内容

user = postfix

password =  ×××××      

hosts = localhost

dbname = postfix

table = domain

select_field = description

where_field = domain

additional_conditions = AND active = '1'

 

编辑 vi /etc/postfix/mysql_virtual_mailbox_limit_maps.cf 为以下内容

user = postfix

password =  ×××××      

hosts = localhost

dbname = postfix

table = mailbox

select_field = quota

where_field = username

additional_conditions = AND active = '1'

 

编辑 vi /etc/postfix/mysql_virtual_mailbox_maps.cf 为以下内容

user = postfix

password =  ×××××      

hosts = localhost

dbname = postfix

table = mailbox

select_field = maildir

where_field = username

additional_conditions = AND active = '1'

 

===========================================================

dovecot  POP3系统配置:

vi  dovecot.conf 为以下内容:

protocols=pop3 pop3s

listen=*

disable_plaintext_auth = no

auth_debug = yes

log_path = /var/log/dovecot.log

mail_location =maildir:/mailbox/%u

pop3_uidl_format=%08Xu%08Xv

first_valid_uid = 501

   auth default {

mechanisms = PLAIN LOGIN

    passdb sql {

args = /etc/dovecot-mysql.conf

   }

   userdb sql {

args = /etc/dovecot-mysql.conf

   }

socket listen {

   client {

path = /var/run/dovecot/auth-client

   mode = 0660

   user = postfix

   group = postfix

      }

   }

}

 

===========================================================

vi  dovecot-mysql.conf 以下内容:

driver = mysql

connect = host=localhost dbname=postfix user=postfix password= ×××××      

default_pass_scheme = MD5

user_query = SELECT maildir, 501 AS uid, 502 AS gid FROM mailbox WHERE username = '%u'

===========================================================

待完。。。。。。


     本文转自andylhz 51CTO博客,原文链接:http://blog.51cto.com/andylhz2009/818964,如需转载请自行联系原作者




相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
网络协议 Linux 文件存储
Postfix 邮件服务器的配置
Postfix是一种功能强大且功能多样的邮件传输代理。在本文中,我们已经了解了如何使用postfix 和 dovecot为基于系统用户帐户的单个域实现基本电子邮件服务器。我们几乎没有涉及基于 postfix 的系统的真正功能,但希望能为新用户构建提供坚实的工作基础。
1803 0
|
存储 网络协议 Linux
Postfix + Extmail 企业邮件服务器搭建
ExtMail套件用于提供从浏览器中登录、使用邮件系统的Web操作界面,而Extman套件用于提供从浏览器中管理邮件系统的Web操作界面。它以GPL版权释出,设计初衷是希望设计一个适应当前高速发展的IT应用环境,满足用户多变的需求,能快速进行开发、改进和升级,适应能力强的webmail系统。
764 0
Postfix + Extmail 企业邮件服务器搭建
|
网络协议 Linux 网络安全
Linux服务器---邮件服务安装postfix
安装postfix      postfix是一个快速、易于管理、安全性高的邮件发送服务,可以配合dovecot实现一个完美的邮箱服务器。1、安装postfix       [root@localhost ~]# rpm -qa | grep postfix      [root@localhos...
2396 0
|
开发工具 网络安全 数据安全/隐私保护
Postfix 邮件服务器安装与配置
#!/bin/bash yum -y install postfix dovecot; #/etc/postfix/main.cf #postfix check  postfix start  postfix stop postfix flush  postfixreload #/etc/postfix/main.
1317 0
|
网络协议 测试技术 开发工具
|
网络协议 测试技术 数据安全/隐私保护
|
测试技术 开发工具 数据安全/隐私保护