用 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 服务!

 

 


目录
相关文章
|
10月前
|
安全 Linux Shell
使用SCP命令在CentOS 7上向目标服务器传输文件
以上步骤是在CentOS 7系统上使用SCP命令进行文件传输的基础,操作简洁,易于理解。务必在执行命令前确认好各项参数,尤其是目录路径和文件名,以避免不必要的传输错误。
909 17
|
9月前
|
Ubuntu 安全 小程序
服务器版本的CentOS和Ubuntu哪个更适合你?
但是以上的比较并不说明Ubuntu是不稳定的或者是不安全的,只是以上比较过程中,在稳定性方面Ubuntu稍微逊色了一点。由于Ubuntu在个人桌面电脑的使用率远远高于CentOS,用Ubuntu搭建服务器,如果遇到什么问题,寻找解决方案相对比较容易,这让Ubuntu在选择方面更优于CentOS。如果你是一个初学者,那么毫无疑问Ubuntu是更适合的选择。如果你正在经营自己的公司,在这两者之间,CentOS会更好一些。
|
10月前
|
安全 关系型数据库 网络安全
安全加固:启动PostgreSQL 14服务器SSL加密的方法指南在CentOS 7环境中
通过上述步骤,你可以为PostgreSQL数据库服务器设置SSL加密,从而增加数据在传输中的安全性。确保维持证书的有效性,并且定期更新和管理密钥,以防止未授权访问。
462 0
|
12月前
|
Kubernetes Ubuntu Linux
阿里云服务器使用centos还是ubuntu?
在选择阿里云服务器操作系统时,CentOS和Ubuntu各有优势。CentOS以企业级稳定性著称,适合数据库、ERP等长期稳定需求;而Ubuntu开发者友好,支持最新硬件与功能,更适合开发/测试环境及云计算场景。两者在阿里云上均有官方镜像支持,性能差异可忽略。无特殊需求时推荐Ubuntu 22.04 LTS,若需RHEL生态则选AlmaLinux。根据实际需求、团队技术栈及场景灵活决策,阿里云还支持更换系统盘降低试错成本。
|
存储 安全 Linux
CentOS 7.9系统备份:每日定期发送最新备份文件到另一台服务器。
注意,这个解决方案忽略了很多细节,例如错误处理和通知、备份版本控制、循环处理旧的备份文件等等。此外,你也应该尽量保持源服务器和目标服务器之间快速,稳定且安全的网络连接,并且目标服务器应该有足够的空间用于存放每天的备份文件。如果你需要更高级的备份解决方案,可能需要考虑一下使用专门的备份工具或者服务。
617 18
|
存储 运维 网络协议
【Syslog】Centos下的syslog服务器配置
通过本文的配置指导,您不仅学会了如何安装和配置 `rsyslog`,还掌握了如何在防火墙中开放必要的端口,并验证服务器的配置是否正确。希望这些知识能够帮助您更好地管理和维护您的Linux系统。
2632 15
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
433 1
|
存储 网络协议 Linux
AWS实操-EC2-创建购买linux(centos)EC2服务器
AWS实操-EC2-创建购买linux(centos)EC2服务器
|
Oracle 网络协议 关系型数据库