Postfix简单企业邮件服务器搭建步骤-入门级

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
本文讲述在安装了Redhat Enterprice AS 4 U2的PC上,配置一台Postfix邮件服务器的过程。实现虚拟域、虚拟用户、POP3、SMTP

LAMP 配置在此不做配置
涉及的软件
1. Redhat Enterprice AS 4 U5
2. Mysql
系统自带
用于存储虚拟域、虚拟用户等信息。
3. Apache
系统自带
4. PHP
系统自带
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.安装courier-authlib
 
安装之前添加postfix和maildrop相关的用户&用户组
groupadd postfix
groupadd postdrop
useradd postfix -g postfix -c "Postfix user" -d /dev/null -s /sbin/nologin
groupadd vmail 
useradd vmail -g vmail -d /home/mail
#### 特别提示 1:这个主要是设定邮件管理账号/进程启动帐号. 记住postfix和pstdrop组都中包含用户 
postfix, vmail组中包括vmail用户,你可以通过直接编/etc/group文件,把这些用户加入相关的组。同时 
,请记住这里的vmail的GI--502和UID--501,在下面文章的多处针使用到).

[root@mail~]# mkdir /home/mail
[root@mail~]# chown vmail:vmail /home/mail
[root@mail~]# chmod -R 775 /home/mail
[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  postfix                 <--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版本2(编译安装)
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/lib  /usr/lib/sasl2/
ln -s /usr/local/cyrus-sasl/lib/sasl2/lib  /usr/lib/sasl/lib
vi /usr/local/cyrus-sasl/lib/sasl2/smtpd.conf 
vi /usr/lib/sasl2/smtpd.conf 为以下内容
pwcheck_method: authdaemond
log_level:  3
mech_list:  plain login
authdaemond_path: /usr/local/courier-authlib/var/spool/authdaemon/socket
设置自启动:
chkconfig –- level  35  saslauthd on
service saslauthd start
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
安装postfix  postfix-2.5.1-1.mysql.sasl2.vda.rhel4.i386.rpm  #此版本支持mysql sasl2 免去编译的麻烦#
rpm -ivh postfix-2.5.1-1.mysql.sasl2.vda.rhel4.i386.rpm

生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低
newaliases
相关配置文件
编辑/etc/postfix/main.cf 为以下内容
#=====================BASE=========================
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========================
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
  check_sender_access hash:/etc/postfix/rbl_pass
  reject_rbl_client cblplus.anti-spam.org.cn=127.0.8.6
  
  permit
#====================WHITELIST========================#  
  check_sender_access hash:/etc/postfix/rbl_pass
 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
编辑/etc/postfix/mysql_virtual_alias_maps.cf 为以下内容
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address
additional_conditions = AND active = '1'
编辑/etc/postfix/mysql_virtual_domains_maps.cf 为以下内容
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain
additional_conditions = AND active = '1'
编辑/etc/postfix/mysql_virtual_mailbox_limit_maps.cf 为以下内容
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username
additional_conditions = AND active = '1'
编辑/etc/postfix/mysql_virtual_mailbox_maps.cf 为以下内容
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username
additional_conditions = AND active = '1'
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
配置Dovecot,增加IMAP,,POP3,功能
由于Dovecot 是系统自带的,配置两个文件,
编辑 /etc/dovecot.conf 为以下内容
base_dir = /var/run/dovecot/
protocols = imap imaps pop3 pop3s
imap_listen = [::]
pop3_listen = [::]
login_dir = /var/run/dovecot-login
login = imap
login = pop3
mbox_locks = fcntl
auth = default
auth_mechanisms = plain
auth_userdb = passwd
auth_user = root
log_path = /var/log/dovecot.log
default_mail_env = maildir:/home/mail/%u
auth_userdb = mysql /etc/dovecot-mysql.conf
auth_passdb = mysql /etc/dovecot-mysql.conf
first_valid_uid = 501
编辑 /etc/dovecot-mysql.conf 为以下内容
db_host = localhost   《----数据库主机名称----》
db_port = 3306
db_unix_socket = /var/lib/mysql/mysql.sock
db = postfix
db_user = postfix
db_passwd = postfix
db_client_flags = 0
default_pass_scheme = PLAIN-MD5
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 501 AS uid, 502 AS gid FROM mailbox WHERE username = '%u'
 
启动Dovecot 服务
[root@mail~]# service dovecot start
[root@mail~]# chkconfig --level 35 dovecot on
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

     本文转自andylhz 51CTO博客,原文链接:http://blog.51cto.com/andylhz2009/252014 ,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
3月前
|
弹性计算
阿里云服务器租用费用:企业用配置推荐ECS u1性价比首选
阿里云企业专享服务器推荐ECS u1实例,2核4G配置,5M带宽,80G系统盘,年费199元,适合企业用户,续费同价。更多优惠配置可选,助力企业高效上云。
158 0
|
4月前
|
机器学习/深度学习 存储 监控
内部文件审计:企业文件服务器审计对网络安全提升有哪些帮助?
企业文件服务器审计是保障信息安全、确保合规的关键措施。DataSecurity Plus 是由卓豪ManageEngine推出的审计工具,提供全面的文件访问监控、实时异常告警、用户行为分析及合规报告生成功能,助力企业防范数据泄露风险,满足GDPR、等保等多项合规要求,为企业的稳健发展保驾护航。
131 0
|
1月前
|
弹性计算 安全 数据安全/隐私保护
阿里云服务器ECS企业安全组和普通安全组有什么区别?安全组全解析
阿里云ECS安全组分普通与企业级两种,均免费。普通安全组支持经典网络和VPC,最多6000个私网IP,组内默认互通,规则灵活,适合中小规模应用;企业级安全组仅支持VPC,最高支持65536个私网IP,安全性更高,入出方向默认全拒,组内隔离不可改,适用于大规模、高安全需求场景。两者在容量、规则、控制策略及适用环境上差异显著。
119 0
|
7月前
|
存储 缓存 弹性计算
阿里云经济型e实例云服务器评测:企业官网搭建的性价比之选
阿里云服务器经济型e实例可以用来搭建企业网站吗?云服务器作为搭建企业官网的基础设施,其性能、稳定性、成本等因素直接影响着官网的运营效果。阿里云经济型e实例云服务器作为一款性价比较高的产品,备受用户关注。许多企业在选择云服务器搭建官网时,都会将其纳入考虑范围。本文将详细探讨阿里云经济型e实例云服务器的特点、性能表现、稳定性与可靠性,以及成本考量,最终解答是否适合用它来搭建企业官网。
|
3月前
|
人工智能 编解码 安全
阿里云服务器上新,第9代AMD企业级实例g9ae,提升企业AI业务创新与性能突破
近日,阿里云推出的服务器ECS第9代AMD企业级实例-g9ae实例已开启邀测阶段,g9ae实例基于CIPU 2.0架构,搭载AMD Turin处理器,为国内首创物理核设计的“性能旗舰型”算力产品,专为AI时代企业离线数据处理打造。本文为大家介绍g9ae实例的性能及适用场景,以供了解与参考。
|
3月前
|
弹性计算 小程序 容灾
2025购买阿里云服务器配置选择方法:企业+个人+学生攻略
2025年阿里云服务器购买省钱攻略,涵盖个人、中小企业及高性能配置推荐。个人用户优选38元轻量或99元ECS,企业用户选199元2核4G服务器,游戏用户适合4核16G或8核32G配置,详情请参考最新活动及攻略。
933 11
|
2月前
|
运维 安全 测试技术
云服务器还是物理服务器?企业如何根据需求做出正确决策
在数字化转型的浪潮中,企业的基础架构选择至关重要。当业务发展到一定阶段,“物理服务器”还是“云服务器”这个问题必然会摆在决策者面前。两者并非简单的谁替代谁的关系,而是各有优劣,适用于不同的业务场景。本文将为您全面解析物理服务器与云服务器的核心差异,助您做出最明智的选择。
|
3月前
|
存储 固态存储 Linux
从 0 学服务器虚拟化:VMware 搭建 3 个虚拟主机,个人 / 小企业够用的方案
服务器虚拟化技术通过在单台物理机上运行多个虚拟机,显著提升资源利用率和管理灵活性。本文以 VMware ESXi 8.0 Update 3e 为例,详解如何搭建经济实用的虚拟化环境,支持 3 个虚拟主机稳定运行,适合个人开发者和小企业降低硬件投入、实现数据本地化与安全存储。
812 0
|
7月前
|
弹性计算 资源调度 搜索推荐
阿里云ECS中长期成本节省计划解析:从原理到实战,助力企业降本提效
阿里云ECS节省计划的推出为企业用户提供了一种全新的成本优化方案。通过一次性购买的方式享受长期按量付费的折扣权益,客户不仅可以大幅降低ECS资源的使用成本还可以享受更高的灵活性和便捷性。本文将从多个维度深入剖析阿里云ECS节省计划,包括其核心优势、详尽的购买使用指引、与传统付费模式的全面对比,以及一客户成功案例,以供大家了解和参考。

热门文章

最新文章