用 Postfix+Dovecot 在 CentOS7 上快速搭建自己的安全邮件服务器

简介: 用 Postfix+Dovecot 在 CentOS7 上快速搭建自己的安全邮件服务器,用 yum 安装实现快速,用 ssl 加密实现安全!

说“快速”的原因,其实很简单,是因为直接使用 yum 安装而不是通过编译的方式。
说“安全”的原因,是我们需要实现 SSL的传输层加密。
网上各种介绍,各种版本其实都是各种坑,我的这个版本也不能免俗,因此特声明版本如下:

目前介绍的版本是截止写作日期,2018-2-21,农历正月初六, yum 上的最新版本。

Postfix: 2.10.1
cyrus-sasl: 2.1.26
dovecot: 2.2.10

本文不适用非 CentOS7 的操作系统,并且不适合采用编译方法安装 Postfix+Dovecot 的情形。
所有各种  DNS,iptables, SElinux  的设置, 所有和 Web, MySQL 相关的那些应用,均不在本文讨论之列。
如果你之前安装有 sendmail , 请用 # yum erase sendmail 删除软件包。

1. 安装所有软件包,各种 yum install.
# yum install postfix*  cyrus-sasl* dovecot*
其实并不是所有的相关包都是需要安装的, 但是为了实现“快速”,我们就不去纠结是否需要安装那些八辈子都用不到的包了。 毕竟安装一个软件包本身不会引入安全问题。

2. 启动服务
# systemctl enable postfix dovecot
# systemctl start postfix dovecot -l
如果你看到绿色的 running,恭喜你,万里长征第一步成功了。

3. 配置 postfix

  • 把下面的这段添加到 /etc/postfix/main.cf 里:
    smtpd_helo_required = yes
    smtpd_delay_reject = yessmtpd_sasl_type = dovecot
    smtpd_sasl_path = private/auth
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_local_domain = ”
    smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
    broken_sasl_auth_clients=yes
    smtpd_sasl_authenticated_header = yes
    smtpd_client_restrictions = permit_sasl_authenticated
    smtpd_sasl_security_options = noanonymous
    smtpd_sasl_tls_security_options = noanonymous
    message_size_limit = 15728640

    smtpd_use_tls = yes
    smtpd_tls_auth_only = yes
    smtpd_tls_cert_file = /etc/ssl/certs/youdomain.pem
    smtpd_tls_key_file = /etc/ssl/certs/yourdomain.key
    smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
    smtpd_tls_loglevel = 1
    smtpd_tls_mandatory_ciphers = medium
    smtpd_tls_mandatory_protocols = SSLv3, TLSv1
    smtpd_tls_received_header = yes
    smtpd_tls_security_level = may
    smtpd_tls_session_cache_timeout = 3600s
    tls_random_source = dev:/dev/urandom

    修改 myhostname, mydomain, 为你自己的邮件服务器主机名,以及你的邮件域名。
    把 inet_interfaces 设置为: all.
    把 mydestination 设置为: $myhostname, $mydomain
    把 mynetworks_style 设置为: host
    把 mynetworks 设置为: 127.0.0.0/8
    把 home_mailbox 设置为: Maildir/
    里面提到的证书文件怎么配置,后面再提。

  • 把下面的这段添加到 /etc/postfix/master.cf 里:
    smtps inet n – – – – smtpd -v
    -o syslog_name=postfix/smtps
    -o smtpd_tls_wrappermode=yes
    -o smtpd_sasl_auth_enable=yes
    -o smtpd_reject_unlisted_recipient=no
    -o smtpd_client_restrictions=$mua_client_restrictions
    -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
    -o milter_macro_daemon_name=ORIGINATING
    -o smtpd_tls_auth_only=yes
    -o smtpd_client_restrictions=permit_sasl_authenticated,reject_unauth_destination,reject
    -o smtpd_sasl_security_options=noanonymous,noplaintext
    -o smtpd_sasl_tls_security_options=noanonymous
    -o smtpd_helo_restrictions=$mua_helo_restrictions
    -o smtpd_sender_restrictions=$mua_sender_restrictions

4. 配置 saslauthd,配置文件是:/etc/sysconfig/saslauthd,采用默认即可,所以这里啥也不用做。

5. 配置 dovecot,主配置文件是:/etc/dovecot/dovecot.conf,其实里面就两行文字,啥也不用改,因为里面各项具体的配置在 /etc/dovecotconf.d 目录下。

  • 修改 10-auth.conf
    disable_plaintext_auth = yes
    auth_mechanisms = plain login
  • 修改 10-mail.conf
    mail_location = maildir:~/Maildir
  • 修改 10-master.conf
    service auth {
    unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
    }
    }

如果需要跟详细的日志,可以修改 10-logging.conf 文件。

如果不出意外的话,用 # netstat -nat4|grep LIST 命令就应该可以看到如下的端口已经打开:
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN (POP3)
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN    (IMAP)
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN (SMTPS)
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN  (SMTP)
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN (POP3S)
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN (IMAPS)

为了安全起见,你一般只需要在防火墙上打开 IMAPS/POP3S/SMTPS。

这样, 一个支持 smtp authenticate,保证安全的邮件收发服务器就建成了,你也可以拥有自己的企业邮箱了。
邮箱的创建需要手工在 Linux 上添加用户。
如果你有幸看到本教程,哪些网上介绍的走明文密码传输协议的 IMAP/POP3/SMTP,你就基本上可以忽略了。

你或许会遇到 dovecot 证书出错的问题,这个问题可以通过下载 mkcert.sh
然后把其中的
SSLDIR 修改为:${SSLDIR-/etc/pki/dovecot}
再修改一下 /etc/pki/dovecot/dovecot-openssl.cnf 文件,然后运行一下 ./mkcert.sh 即可。

Postfix 的证书,我们需要手工创建,我的创建步骤很简单:
进入 /etc/ssl/certs,运行 make yourdomain.pem,会生成一个包含 key 和 证书 的 pem 文件,我把两部分分开成两个文件。
yourdomain.key(拷贝 pem 文件到 key,删除第二部分的证书) 和 yourdomain.pem(把 key 部分删除)

记得重启 postfix 和  dovecot 服务!

 

 


目录
相关文章
|
2月前
|
安全 Java 网络安全
Java Socket编程教程:构建安全可靠的客户端-服务器通信
【6月更文挑战第21天】构建安全的Java Socket通信涉及SSL/TLS加密、异常处理和重连策略。示例中,`SecureServer`使用SSLServerSocketFactory创建加密连接,而`ReliableClient`展示异常捕获与自动重连。理解安全意识,如防数据截获和中间人攻击,是首要步骤。通过良好的编程实践,确保网络应用在复杂环境中稳定且安全。
55 0
|
3月前
|
存储 弹性计算 安全
ECS的安全责任共担模型
云服务器ECS的云上安全性是阿里云和客户的共同责任。本文介绍云服务器ECS(Elastic Compute Service)与客户在安全性方面各自应该承担的责任。
|
23天前
|
存储 监控 安全
服务器安全:构建数字时代的坚固堡垒
在数字化时代,服务器安全至关重要,它直接影响企业业务连续性和客户数据保护。服务器遭受攻击或数据泄露将给企业带来巨大损失。服务器面临网络攻击、恶意软件、内部与物理威胁。关键防护措施包括严格访问控制、数据加密与备份、安全审计与监控、部署防火墙和入侵检测系统、及时安全更新及物理安全防护。最佳实践涵盖制定全面安全策略、采用先进技术、员工培训、定期安全评估与测试及建立应急响应团队。通过这些措施,企业能构建坚实的服务器安全防护体系。
114 55
|
7天前
|
云安全 弹性计算 安全
阿里云服务器基础安全防护简介,云服务器基础安全防护及常见安全产品简介
在使用云服务器的过程中,云服务器的安全问题是很多用户非常关心的问题,阿里云服务器不仅提供了一些基础防护,我们也可以选择其他的云安全类产品来确保我们云服务器的安全。本文为大家介绍一下阿里云服务器的基础安全防护有哪些,以及阿里云的一些安全防护类云产品。
阿里云服务器基础安全防护简介,云服务器基础安全防护及常见安全产品简介
|
6天前
|
存储 安全 Linux
新 CentOS 7 服务器的基本配置
新 CentOS 7 服务器的基本配置
14 1
|
19天前
|
安全 Linux Anolis
不容错过的 CentOS 迁移替换专场!围绕安全保障、最佳案例等分享 | 龙蜥大讲堂
如何借助龙蜥社区成熟的迁移案例,一站式解决CentOS迁移替换的问题?
|
15天前
|
运维 网络协议 Linux
揭秘CentOS 7:系统目录奥秘大起底,网卡配置秒变高手,让你的服务器管理飞一般的感觉!
【8月更文挑战第5天】CentOS 7作为RHEL的社区版本,以其稳定性和丰富功能广受好评。本文通过案例分析介绍其系统目录结构及网卡配置方法。系统目录如/(根)、/bin(基本命令)、/boot(启动文件)、/dev(设备文件)、/etc(配置文件)、/home(用户目录)和/lib(共享库)等各司其职。网卡配置通过编辑/etc/sysconfig/network-scripts/下的ifcfg文件实现,如设置ens33接口的静态IP地址、子网掩码、网关和DNS服务器,并通过重启网络服务使配置生效。这是系统管理员必备的技能之一。
26 2
|
27天前
|
存储 弹性计算 运维
可观测性体系问题之ECS管控的metric数据存储对安全合规的考虑如何解决
可观测性体系问题之ECS管控的metric数据存储对安全合规的考虑如何解决
18 4
|
5天前
|
关系型数据库 MySQL Linux
在 CentOS 7 服务器上安装和保护 phpMyAdmin 与 Apache 的方法
在 CentOS 7 服务器上安装和保护 phpMyAdmin 与 Apache 的方法
11 0
|
5天前
|
Linux 数据安全/隐私保护
在CentOS 7服务器上添加和删除用户的方法
在CentOS 7服务器上添加和删除用户的方法
6 0