活动公告

系统通知
06-14 00:00
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

从零开始使用Rocky Linux搭建企业级邮件服务器详细教程包含配置安全与性能优化以及常见问题解决方案

SunJu_FaceMall

3万

主题

3079

科技点

3万

积分

执行版主

碾压王

积分
32876

塔罗立华奏

执行版主 发表于 2025-9-22 11:10:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

在当今数字化时代,电子邮件仍然是企业通信的核心工具。搭建一个稳定、安全且高效的企业级邮件服务器对于任何组织来说都至关重要。Rocky Linux作为CentOS的替代品,以其稳定性和长期支持而闻名,是搭建企业级邮件服务器的理想选择。

本教程将详细介绍如何在Rocky Linux上从零开始搭建企业级邮件服务器,包括基础组件安装、配置、安全加固、性能优化以及常见问题的解决方案。无论您是系统管理员还是IT专业人士,本教程都将为您提供全面的指导。

准备工作

系统要求

在开始之前,确保您的服务器满足以下最低要求:

• CPU:2核或更高
• 内存:4GB或更多
• 硬盘空间:至少50GB可用空间
• 操作系统:Rocky Linux 8或9(本教程以Rocky Linux 9为例)
• 网络连接:稳定的互联网连接
• 公共IP地址:静态IP地址
• 域名:已注册的域名

系统初始化

首先,确保您的Rocky Linux系统是最新的:
  1. sudo dnf update -y
  2. sudo dnf upgrade -y
复制代码

安装必要的工具:
  1. sudo dnf install -y wget curl vim net-tools
复制代码

域名和DNS配置

在搭建邮件服务器之前,您需要正确配置DNS记录。假设您的域名是example.com,服务器IP地址是203.0.113.10,您需要设置以下DNS记录:

1. A记录:mail.example.com→203.0.113.10
2. mail.example.com→203.0.113.10
3. MX记录:example.com→mail.example.com(优先级: 10)
4. example.com→mail.example.com(优先级: 10)
5. PTR记录(反向DNS):203.0.113.10→mail.example.com这通常需要联系您的IP提供商进行设置
6. 203.0.113.10→mail.example.com
7. 这通常需要联系您的IP提供商进行设置
8. SPF记录:example.com→"v=spf1 mx -all"
9. example.com→"v=spf1 mx -all"
10. DKIM记录(稍后配置):将在后续步骤中生成和配置
11. 将在后续步骤中生成和配置
12. DMARC记录(可选):_dmarc.example.com→"v=DMARC1; p=quarantine; rua=mailto:admin@example.com"
13. _dmarc.example.com→"v=DMARC1; p=quarantine; rua=mailto:admin@example.com"

A记录:

• mail.example.com→203.0.113.10

MX记录:

• example.com→mail.example.com(优先级: 10)

PTR记录(反向DNS):

• 203.0.113.10→mail.example.com
• 这通常需要联系您的IP提供商进行设置

SPF记录:

• example.com→"v=spf1 mx -all"

DKIM记录(稍后配置):

• 将在后续步骤中生成和配置

DMARC记录(可选):

• _dmarc.example.com→"v=DMARC1; p=quarantine; rua=mailto:admin@example.com"

主机名设置

设置正确的主机名对于邮件服务器至关重要:
  1. sudo hostnamectl set-hostname mail.example.com
复制代码

编辑/etc/hosts文件,确保包含以下内容:
  1. sudo vim /etc/hosts
复制代码

添加或修改以下行:
  1. 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  2. ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  3. 203.0.113.10 mail.example.com mail
复制代码

防火墙和SELinux配置

配置防火墙以允许必要的邮件服务端口:
  1. sudo firewall-cmd --permanent --add-service=smtp
  2. sudo firewall-cmd --permanent --add-service=smtps
  3. sudo firewall-cmd --permanent --add-service=imap
  4. sudo firewall-cmd --permanent --add-service=imaps
  5. sudo firewall-cmd --permanent --add-service=pop3
  6. sudo firewall-cmd --permanent --add-service=pop3s
  7. sudo firewall-cmd --permanent --add-port=587/tcp
  8. sudo firewall-cmd --reload
复制代码

检查SELinux状态:
  1. sestatus
复制代码

如果SELinux处于 enforcing 模式,我们需要设置一些布尔值以允许邮件服务正常运行:
  1. sudo setsebool -P httpd_can_network_connect=1
  2. sudo setsebool -P httpd_can_sendmail=1
  3. sudo setsebool -P httpd_read_user_content=1
复制代码

基础组件安装

安装Postfix(MTA)

Postfix是一个流行的邮件传输代理(MTA),用于发送和接收电子邮件。

安装Postfix:
  1. sudo dnf install -y postfix
复制代码

启动并启用Postfix服务:
  1. sudo systemctl start postfix
  2. sudo systemctl enable postfix
复制代码

安装Dovecot(IMAP/POP3服务器)

Dovecot是一个安全的IMAP和POP3服务器,用于邮件检索。

安装Dovecot及其必要的组件:
  1. sudo dnf install -y dovecot dovecot-mysql
复制代码

启动并启用Dovecot服务:
  1. sudo systemctl start dovecot
  2. sudo systemctl enable dovecot
复制代码

安装MariaDB(数据库服务器)

我们将使用MariaDB来存储虚拟域和用户信息。

安装MariaDB服务器:
  1. sudo dnf install -y mariadb-server mariadb
复制代码

启动并启用MariaDB服务:
  1. sudo systemctl start mariadb
  2. sudo systemctl enable mariadb
复制代码

运行安全安装脚本:
  1. sudo mysql_secure_installation
复制代码

按照提示设置root密码并回答安全问题。

安装其他必要组件

安装用于邮件服务器管理的其他工具:
  1. sudo dnf install -y php php-fpm php-mysqlnd php-imap php-cli php-common php-gd php-mbstring php-xml php-curl
  2. sudo dnf install -y spamassassin clamav clamav-update amavisd-new
  3. sudo dnf install -y opendkim opendkim-tools
  4. sudo dnf install -y postgrey
  5. sudo dnf install -y nginx
复制代码

邮件服务器配置

配置MariaDB

首先,创建一个数据库和用户来存储邮件账户信息:
  1. mysql -u root -p
复制代码
  1. CREATE DATABASE mailserver;
  2. GRANT ALL ON mailserver.* TO 'mailuser'@'localhost' IDENTIFIED BY 'strongpassword';
  3. FLUSH PRIVILEGES;
  4. EXIT;
复制代码

创建表结构:
  1. mysql -u mailuser -p mailserver
复制代码
  1. -- 创建虚拟域表
  2. CREATE TABLE virtual_domains (
  3.   id INT NOT NULL AUTO_INCREMENT,
  4.   name VARCHAR(50) NOT NULL,
  5.   PRIMARY KEY (id)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  7. -- 创建虚拟用户表
  8. CREATE TABLE virtual_users (
  9.   id INT NOT NULL AUTO_INCREMENT,
  10.   domain_id INT NOT NULL,
  11.   password VARCHAR(106) NOT NULL,
  12.   email VARCHAR(120) NOT NULL,
  13.   PRIMARY KEY (id),
  14.   UNIQUE KEY email (email),
  15.   FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
  16. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  17. -- 创建邮件别名表
  18. CREATE TABLE virtual_aliases (
  19.   id INT NOT NULL AUTO_INCREMENT,
  20.   domain_id INT NOT NULL,
  21.   source VARCHAR(100) NOT NULL,
  22.   destination VARCHAR(100) NOT NULL,
  23.   PRIMARY KEY (id),
  24.   FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
  25. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
复制代码

添加示例域和用户:
  1. -- 添加虚拟域
  2. INSERT INTO virtual_domains (name) VALUES ('example.com');
  3. -- 添加虚拟用户
  4. INSERT INTO virtual_users (domain_id, password, email)
  5. VALUES (1, ENCRYPT('strongpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'user1@example.com');
  6. -- 添加邮件别名
  7. INSERT INTO virtual_aliases (domain_id, source, destination)
  8. VALUES (1, 'alias@example.com', 'user1@example.com');
  9. EXIT;
复制代码

配置Postfix

创建Postfix需要的MySQL映射文件:
  1. sudo mkdir -p /etc/postfix/mysql
复制代码

创建虚拟域映射文件:
  1. sudo vim /etc/postfix/mysql/virtual_domains_maps.cf
复制代码

添加以下内容:
  1. user = mailuser
  2. password = strongpassword
  3. hosts = localhost
  4. dbname = mailserver
  5. query = SELECT name FROM virtual_domains WHERE name='%s'
复制代码

创建虚拟邮箱映射文件:
  1. sudo vim /etc/postfix/mysql/virtual_mailbox_maps.cf
复制代码

添加以下内容:
  1. user = mailuser
  2. password = strongpassword
  3. hosts = localhost
  4. dbname = mailserver
  5. query = SELECT 1 FROM virtual_users WHERE email='%s'
复制代码

创建虚拟别名映射文件:
  1. sudo vim /etc/postfix/mysql/virtual_alias_maps.cf
复制代码

添加以下内容:
  1. user = mailuser
  2. password = strongpassword
  3. hosts = localhost
  4. dbname = mailserver
  5. query = SELECT destination FROM virtual_aliases WHERE source='%s'
复制代码

创建虚拟邮箱域映射文件:
  1. sudo vim /etc/postfix/mysql/virtual_mailbox_domains.cf
复制代码

添加以下内容:
  1. user = mailuser
  2. password = strongpassword
  3. hosts = localhost
  4. dbname = mailserver
  5. query = SELECT 1 FROM virtual_domains WHERE name='%s'
复制代码

设置这些文件的权限:
  1. sudo chmod 640 /etc/postfix/mysql/virtual_*
  2. sudo chgrp postfix /etc/postfix/mysql/virtual_*
复制代码

创建邮件存储目录:
  1. sudo mkdir -p /var/vmail
  2. sudo groupadd -g 5000 vmail
  3. sudo useradd -g vmail -u 5000 vmail -d /var/vmail -s /sbin/nologin
  4. sudo chown -R vmail:vmail /var/vmail
  5. sudo chmod -R 770 /var/vmail
复制代码

备份并编辑Postfix主配置文件:
  1. sudo cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
  2. sudo vim /etc/postfix/main.cf
复制代码

修改或添加以下配置:
  1. # 设置主机名和域名
  2. myhostname = mail.example.com
  3. mydomain = example.com
  4. myorigin = $mydomain
  5. # 设置网络接口
  6. inet_interfaces = all
  7. inet_protocols = all
  8. # 设置邮件存储
  9. home_mailbox = Maildir/
  10. mail_spool_directory = /var/spool/mail/
  11. # 虚拟域和用户配置
  12. virtual_mailbox_domains = mysql:/etc/postfix/mysql/virtual_mailbox_domains.cf
  13. virtual_mailbox_maps = mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf
  14. virtual_alias_maps = mysql:/etc/postfix/mysql/virtual_alias_maps.cf
  15. virtual_minimum_uid = 5000
  16. virtual_uid_maps = static:5000
  17. virtual_gid_maps = static:5000
  18. virtual_mailbox_base = /var/vmail
  19. # SMTP认证配置
  20. smtpd_sasl_type = dovecot
  21. smtpd_sasl_path = private/auth
  22. smtpd_sasl_auth_enable = yes
  23. smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
  24. # TLS配置
  25. smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
  26. smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
  27. smtpd_use_tls = yes
  28. smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
  29. smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
  30. # 其他配置
  31. smtpd_banner = $myhostname ESMTP
  32. biff = no
  33. append_dot_mydomain = no
  34. readme_directory = no
  35. relayhost =
  36. mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  37. mailbox_size_limit = 0
  38. recipient_delimiter = +
  39. alias_maps = hash:/etc/aliases
  40. alias_database = hash:/etc/aliases
复制代码

编辑Postfix master配置文件:
  1. sudo cp /etc/postfix/master.cf /etc/postfix/master.cf.orig
  2. sudo vim /etc/postfix/master.cf
复制代码

确保以下行未被注释:
  1. submission inet n       -       y       -       -       smtpd
  2.   -o syslog_name=postfix/submission
  3.   -o smtpd_tls_security_level=encrypt
  4.   -o smtpd_sasl_auth_enable=yes
  5.   -o smtpd_tls_auth_only=yes
  6.   -o smtpd_reject_unlisted_recipient=no
  7.   -o smtpd_client_restrictions=$mua_client_restrictions
  8.   -o smtpd_helo_restrictions=$mua_helo_restrictions
  9.   -o smtpd_sender_restrictions=$mua_sender_restrictions
  10.   -o smtpd_recipient_restrictions=
  11.   -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  12.   -o milter_macro_daemon_name=ORIGINATING
  13. smtps     inet  n       -       y       -       -       smtpd
  14.   -o syslog_name=postfix/smtps
  15.   -o smtpd_tls_wrappermode=yes
  16.   -o smtpd_sasl_auth_enable=yes
  17.   -o smtpd_reject_unlisted_recipient=no
  18.   -o smtpd_client_restrictions=$mua_client_restrictions
  19.   -o smtpd_helo_restrictions=$mua_helo_restrictions
  20.   -o smtpd_sender_restrictions=$mua_sender_restrictions
  21.   -o smtpd_recipient_restrictions=
  22.   -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
  23.   -o milter_macro_daemon_name=ORIGINATING
复制代码

重启Postfix服务:
  1. sudo systemctl restart postfix
复制代码

配置Dovecot

备份并编辑Dovecot主配置文件:
  1. sudo cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
  2. sudo vim /etc/dovecot/dovecot.conf
复制代码

确保以下配置正确:
  1. listen = *
  2. protocols = imap pop3 lmtp
  3. mail_location = maildir:/var/vmail/%d/%n
  4. mail_privileged_group = vmail
复制代码

编辑Dovecot认证配置文件:
  1. sudo cp /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.orig
  2. sudo vim /etc/dovecot/conf.d/10-auth.conf
复制代码

修改以下配置:
  1. disable_plaintext_auth = yes
  2. auth_mechanisms = plain login
  3. !include auth-sql.conf.ext
复制代码

编辑Dovecot SQL配置文件:
  1. sudo cp /etc/dovecot/conf.d/auth-sql.conf.ext /etc/dovecot/conf.d/auth-sql.conf.ext.orig
  2. sudo vim /etc/dovecot/conf.d/auth-sql.conf.ext
复制代码

确保以下配置正确:
  1. passdb {
  2.   driver = sql
  3.   args = /etc/dovecot/dovecot-sql.conf.ext
  4. }
  5. userdb {
  6.   driver = sql
  7.   args = /etc/dovecot/dovecot-sql.conf.ext
  8. }
复制代码

创建Dovecot SQL配置文件:
  1. sudo vim /etc/dovecot/dovecot-sql.conf.ext
复制代码

添加以下内容:
  1. driver = mysql
  2. connect = host=localhost dbname=mailserver user=mailuser password=strongpassword
  3. default_pass_scheme = SHA512-CRYPT
  4. user_query = SELECT email as user, password FROM virtual_users WHERE email='%u';
  5. password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';
  6. iterate_query = SELECT email AS user FROM virtual_users;
复制代码

设置文件权限:
  1. sudo chmod 640 /etc/dovecot/dovecot-sql.conf.ext
  2. sudo chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext
复制代码

编辑Dovecot邮件配置文件:
  1. sudo cp /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.orig
  2. sudo vim /etc/dovecot/conf.d/10-mail.conf
复制代码

确保以下配置正确:
  1. mail_location = maildir:/var/vmail/%d/%n
  2. mail_privileged_group = vmail
复制代码

编辑Dovecot主进程配置文件:
  1. sudo cp /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.orig
  2. sudo vim /etc/dovecot/conf.d/10-master.conf
复制代码

修改以下配置:
  1. service auth {
  2.   unix_listener /var/spool/postfix/private/auth {
  3.     mode = 0660
  4.     user = postfix
  5.     group = postfix
  6.   }
  7. }
  8. service lmtp {
  9.   unix_listener /var/spool/postfix/private/dovecot-lmtp {
  10.     mode = 0600
  11.     user = postfix
  12.     group = postfix
  13.   }
  14. }
  15. service auth-worker {
  16.   user = vmail
  17. }
复制代码

编辑Dovecot SSL配置文件:
  1. sudo cp /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.orig
  2. sudo vim /etc/dovecot/conf.d/10-ssl.conf
复制代码

修改以下配置:
  1. ssl = required
  2. ssl_cert = </etc/ssl/certs/ssl-cert-snakeoil.pem
  3. ssl_key = </etc/ssl/private/ssl-cert-snakeoil.key
复制代码

重启Dovecot服务:
  1. sudo systemctl restart dovecot
复制代码

配置Postgrey

Postgrey是一个灰名单策略服务器,可以减少垃圾邮件。

编辑Postgrey配置文件:
  1. sudo vim /etc/sysconfig/postgrey
复制代码

修改以下配置:
  1. OPTIONS="--unix=/var/spool/postfix/postgrey/socket --delay=60 --max-age=35 --retry-window=24h --greylist-text=Delayed by postgrey"
复制代码

启动并启用Postgrey服务:
  1. sudo systemctl start postgrey
  2. sudo systemctl enable postgrey
复制代码

将Postgrey集成到Postfix中:
  1. sudo vim /etc/postfix/main.cf
复制代码

添加以下配置:
  1. smtpd_recipient_restrictions =
  2.     permit_sasl_authenticated,
  3.     permit_mynetworks,
  4.     reject_unauth_destination,
  5.     check_policy_service unix:postgrey/socket
复制代码

重启Postfix服务:
  1. sudo systemctl restart postfix
复制代码

安全配置

配置SSL/TLS证书

为了安全通信,我们需要配置SSL/TLS证书。您可以使用自签名证书或从证书颁发机构获取的证书。

创建自签名证书(仅用于测试):
  1. sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/ssl-cert-snakeoil.key -out /etc/ssl/certs/ssl-cert-snakeoil.pem
复制代码

按照提示填写证书信息。

设置适当的权限:
  1. sudo chmod 600 /etc/ssl/private/ssl-cert-snakeoil.key
  2. sudo chmod 644 /etc/ssl/certs/ssl-cert-snakeoil.pem
复制代码

配置OpenDKIM

OpenDKIM是一个用于对电子邮件进行数字签名的工具,有助于验证发件人的身份。

创建OpenDKIM配置目录:
  1. sudo mkdir -p /etc/opendkim/keys
复制代码

编辑OpenDKIM主配置文件:
  1. sudo vim /etc/opendkim.conf
复制代码

修改或添加以下配置:
  1. Domain                  example.com
  2. KeyFile                 /etc/opendkim/keys/example.com.private
  3. Selector                mail
  4. SOCKET                  inet:8891@localhost
复制代码

创建OpenDKIM密钥:
  1. sudo opendkim-genkey -b 2048 -d example.com -D /etc/opendkim/keys/ -s mail -v
复制代码

设置适当的权限:
  1. sudo chown -R opendkim:opendkim /etc/opendkim/keys
  2. sudo chmod 600 /etc/opendkim/keys/*.private
复制代码

显示公钥记录:
  1. sudo cat /etc/opendkim/keys/mail.txt
复制代码

将输出添加到您的DNS配置中作为TXT记录。

编辑OpenDKIM签名表:
  1. sudo vim /etc/opendkim/SigningTable
复制代码

添加以下内容:
  1. *@example.com default._domainkey.example.com
复制代码

编辑OpenDKIM密钥表:
  1. sudo vim /etc/opendkim/KeyTable
复制代码

添加以下内容:
  1. default._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com.private
复制代码

编辑OpenDKIM信任的主机列表:
  1. sudo vim /etc/opendkim/TrustedHosts
复制代码

添加以下内容:
  1. 127.0.0.1
  2. localhost
  3. 192.168.0.1/24
  4. *.example.com
复制代码

启动并启用OpenDKIM服务:
  1. sudo systemctl start opendkim
  2. sudo systemctl enable opendkim
复制代码

将OpenDKIM集成到Postfix中:
  1. sudo vim /etc/postfix/main.cf
复制代码

添加以下配置:
  1. milter_protocol = 2
  2. milter_default_action = accept
  3. smtpd_milters = inet:localhost:8891
  4. non_smtpd_milters = inet:localhost:8891
复制代码

重启Postfix服务:
  1. sudo systemctl restart postfix
复制代码

配置SpamAssassin

SpamAssassin是一个用于过滤垃圾邮件的工具。

编辑SpamAssassin配置文件:
  1. sudo vim /etc/mail/spamassassin/local.cf
复制代码

添加以下配置:
  1. rewrite_header Subject *****SPAM*****
  2. required_score 5.0
  3. use_bayes 1
  4. bayes_auto_learn 1
复制代码

启动并启用SpamAssassin服务:
  1. sudo systemctl start spamassassin
  2. sudo systemctl enable spamassassin
复制代码

配置ClamAV

ClamAV是一个开源的防病毒引擎。

更新病毒数据库:
  1. sudo freshclam
复制代码

编辑ClamAV配置文件:
  1. sudo vim /etc/clamd.d/scan.conf
复制代码

确保以下行未被注释:
  1. LogFile /var/log/clamd.scan
  2. LogFileMaxSize 10M
  3. LogTime yes
  4. LocalSocket /var/run/clamd.scan/clamd.sock
  5. TCPSocket 3310
复制代码

启动并启用ClamAV服务:
  1. sudo systemctl start clamd@scan
  2. sudo systemctl enable clamd@scan
复制代码

配置Amavis

Amavis是一个内容过滤器,可以集成SpamAssassin和ClamAV。

编辑Amavis配置文件:
  1. sudo vim /etc/amavisd/amavisd.conf
复制代码

修改以下配置:
  1. $mydomain = 'example.com';
  2. $myhostname = 'mail.example.com';
  3. @local_domains_acl = ( ".$mydomain" );
  4. $sa_tag_level_deflt = 2.0;
  5. $sa_tag2_level_deflt = 6.2;
  6. $sa_kill_level_deflt = 6.9;
  7. $sa_dsn_cutoff_level = 10;
  8. $virus_admin = "virusalert\@$mydomain";
  9. $sa_spam_subject_tag = '***SPAM*** ';
复制代码

启动并启用Amavis服务:
  1. sudo systemctl start amavisd
  2. sudo systemctl enable amavisd
复制代码

将Amavis集成到Postfix中:
  1. sudo vim /etc/postfix/main.cf
复制代码

添加以下配置:
  1. content_filter = amavis:[127.0.0.1]:10024
  2. receive_override_options = no_address_mappings
复制代码

编辑Postfix master配置文件:
  1. sudo vim /etc/postfix/master.cf
复制代码

添加以下配置:
  1. amavis unix - - - - 2 smtp
  2.         -o smtp_data_done_timeout=1200
  3.         -o smtp_send_xforward_command=yes
  4.         -o disable_dns_lookups=yes
  5.         -o max_use=20
  6.         -o smtp_tls_security_level=none
  7. 127.0.0.1:10025 inet n - - - - smtpd
  8.         -o content_filter=
  9.         -o smtpd_delay_reject=no
  10.         -o smtpd_client_restrictions=permit_mynetworks,reject
  11.         -o smtpd_helo_restrictions=
  12.         -o smtpd_sender_restrictions=
  13.         -o smtpd_recipient_restrictions=permit_mynetworks,reject
  14.         -o smtpd_data_restrictions=reject_unauth_pipelining
  15.         -o smtpd_end_of_data_restrictions=
  16.         -o smtpd_restriction_classes=
  17.         -o mynetworks=127.0.0.0/8
  18.         -o smtpd_error_sleep_time=0
  19.         -o smtpd_soft_error_limit=1001
  20.         -o smtpd_hard_error_limit=1000
  21.         -o smtpd_client_connection_count_limit=0
  22.         -o smtpd_client_connection_rate_limit=0
  23.         -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
  24.         -o local_header_rewrite_clients=
复制代码

重启Postfix服务:
  1. sudo systemctl restart postfix
复制代码

性能优化

Postfix性能优化

编辑Postfix主配置文件:
  1. sudo vim /etc/postfix/main.cf
复制代码

添加或修改以下配置:
  1. # 并发处理
  2. default_process_limit = 100
  3. smtpd_client_connection_count_limit = 10
  4. smtpd_client_connection_rate_limit = 30
  5. smtpd_client_message_rate_limit = 100
  6. # 队列管理
  7. queue_minfree = 20971520
  8. queue_run_delay = 300s
  9. minimal_backoff_time = 300s
  10. maximal_backoff_time = 3600s
  11. bounce_queue_lifetime = 5d
  12. maximal_queue_lifetime = 5d
  13. # 资源限制
  14. message_size_limit = 51200000
  15. mailbox_size_limit = 512000000
  16. header_size_limit = 102400
  17. # TLS优化
  18. smtpd_tls_session_cache_timeout = 3600s
  19. smtpd_tls_received_header = yes
  20. smtpd_tls_security_level = may
  21. smtp_tls_security_level = may
复制代码

Dovecot性能优化

编辑Dovecot配置文件:
  1. sudo vim /etc/dovecot/dovecot.conf
复制代码

添加或修改以下配置:
  1. # 进程和连接限制
  2. service imap-login {
  3.   process_min_avail = 4
  4.   process_limit = 256
  5.   client_limit = 1000
  6. }
  7. service pop3-login {
  8.   process_min_avail = 2
  9.   process_limit = 128
  10.   client_limit = 500
  11. }
  12. service imap {
  13.   process_limit = 512
  14. }
  15. service pop3 {
  16.   process_limit = 256
  17. }
  18. # 邮件访问优化
  19. maildir_copy_with_hardlinks = yes
  20. maildir_stat_dirs = yes
  21. mail_cache_fields = flags
  22. mail_cache_min_mail_count = 0
  23. mailbox_idle_check_interval = 30 secs
  24. # 日志优化
  25. log_path = /var/log/dovecot.log
  26. info_log_path = /var/log/dovecot-info.log
  27. log_timestamp = "%Y-%m-%d %H:%M:%S "
  28. login_log_format_elements = "user=<%u> method=%m rip=%r lip=%l mpid=%e %c"
复制代码

系统级性能优化

调整系统内核参数:
  1. sudo vim /etc/sysctl.conf
复制代码

添加以下配置:
  1. # 增加文件描述符限制
  2. fs.file-max = 100000
  3. # 网络优化
  4. net.core.rmem_max = 16777216
  5. net.core.wmem_max = 16777216
  6. net.ipv4.tcp_rmem = 4096 87380 16777216
  7. net.ipv4.tcp_wmem = 4096 65536 16777216
  8. net.ipv4.tcp_fin_timeout = 30
  9. net.ipv4.tcp_keepalive_time = 1200
  10. net.ipv4.ip_local_port_range = 10000 65000
复制代码

应用内核参数:
  1. sudo sysctl -p
复制代码

日志管理优化

配置日志轮转:
  1. sudo vim /etc/logrotate.d/mailserver
复制代码

添加以下内容:
  1. /var/log/maillog {
  2.     weekly
  3.     rotate 4
  4.     compress
  5.     delaycompress
  6.     missingok
  7.     notifempty
  8.     create 0640 postfix postfix
  9.     postrotate
  10.         /usr/bin/systemctl reload postfix
  11.     endscript
  12. }
  13. /var/log/dovecot.log /var/log/dovecot-info.log {
  14.     weekly
  15.     rotate 4
  16.     compress
  17.     delaycompress
  18.     missingok
  19.     notifempty
  20.     create 0640 dovecot dovecot
  21.     postrotate
  22.         /usr/bin/systemctl reload dovecot
  23.     endscript
  24. }
复制代码

常见问题解决方案

邮件发送失败

问题:邮件发送失败,出现”Relay access denied”错误。

解决方案:

1. 检查Postfix配置中的mynetworks设置,确保包含您的网络。
2. 确保客户端已正确配置SMTP认证。
3. 检查防火墙设置,确保SMTP端口(25, 587)已开放。
  1. sudo vim /etc/postfix/main.cf
复制代码

确保以下配置正确:
  1. mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/8
  2. smtpd_sasl_auth_enable = yes
  3. smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
复制代码

邮件接收失败

问题:无法接收外部邮件,邮件被退回。

解决方案:

1. 检查MX记录是否正确配置。
2. 确保防火墙允许SMTP端口(25)的入站连接。
3. 检查DNS反向解析(PTR记录)是否正确配置。
4. 验证邮件服务器是否在黑名单中。
  1. # 检查MX记录
  2. dig example.com MX
  3. # 检查端口是否开放
  4. telnet mail.example.com 25
  5. # 检查黑名单
  6. nslookup 203.0.113.10 zen.spamhaus.org
复制代码

认证失败

问题:无法通过SMTP或IMAP/POP3进行身份验证。

解决方案:

1. 检查Dovecot和Postfix的认证配置。
2. 验证数据库中的用户凭据是否正确。
3. 检查SASL认证服务是否正常运行。
  1. # 检查Dovecot认证
  2. doveadm auth test user1@example.com
  3. # 检查SASL认证
  4. testsaslauthd -u user1@example.com -p strongpassword -s smtp
复制代码

SSL/TLS连接问题

问题:无法建立SSL/TLS连接,出现证书错误。

解决方案:

1. 检查证书文件路径和权限。
2. 确保证书链完整。
3. 验证证书是否过期。
  1. # 检查证书
  2. openssl x509 -in /etc/ssl/certs/ssl-cert-snakeoil.pem -text -noout
  3. # 测试SSL连接
  4. openssl s_client -connect mail.example.com:993
复制代码

垃圾邮件问题

问题:大量垃圾邮件进入系统或邮件被标记为垃圾邮件。

解决方案:

1. 调整SpamAssassin的阈值。
2. 确保SPF、DKIM和DMARC记录正确配置。
3. 考虑使用灰名单(Postgrey)。
  1. # 调整SpamAssassin阈值
  2. sudo vim /etc/mail/spamassassin/local.cf
复制代码

修改以下配置:
  1. required_score 4.0
复制代码

性能问题

问题:邮件服务器响应缓慢或资源使用率高。

解决方案:

1. 检查系统资源使用情况。
2. 优化Postfix和Dovecot的进程限制。
3. 考虑增加系统资源。
  1. # 检查系统资源
  2. top
  3. htop
  4. free -h
  5. df -h
  6. # 检查邮件队列
  7. postqueue -p
  8. # 检查日志
  9. tail -f /var/log/maillog
  10. tail -f /var/log/dovecot.log
复制代码

数据库连接问题

问题:无法连接到数据库或查询失败。

解决方案:

1. 检查数据库服务是否运行。
2. 验证数据库用户权限。
3. 检查Postfix和Dovecot的数据库配置。
  1. # 检查数据库服务
  2. sudo systemctl status mariadb
  3. # 测试数据库连接
  4. mysql -u mailuser -p mailserver
复制代码

总结与维护建议

定期维护任务

1. 更新系统:sudo dnf update -y
2. 更新病毒数据库:sudo freshclam
3. 更新SpamAssassin规则:sa-update
sudo systemctl restart spamassassin
4. 备份邮件数据:sudo tar -czvf /backup/mailserver-$(date +%Y%m%d).tar.gz /var/vmail /etc/postfix /etc/dovecot /etc/opendkim
5. 监控日志:sudo tail -f /var/log/maillog
sudo tail -f /var/log/dovecot.log
6. 清理邮件队列:sudo postsuper -d ALL

更新系统:
  1. sudo dnf update -y
复制代码

更新病毒数据库:
  1. sudo freshclam
复制代码

更新SpamAssassin规则:
  1. sa-update
  2. sudo systemctl restart spamassassin
复制代码

备份邮件数据:
  1. sudo tar -czvf /backup/mailserver-$(date +%Y%m%d).tar.gz /var/vmail /etc/postfix /etc/dovecot /etc/opendkim
复制代码

监控日志:
  1. sudo tail -f /var/log/maillog
  2. sudo tail -f /var/log/dovecot.log
复制代码

清理邮件队列:
  1. sudo postsuper -d ALL
复制代码

监控建议

1. 使用监控工具:考虑使用Nagios、Zabbix或Prometheus等工具监控邮件服务器的性能和可用性。
2. 设置警报:配置警报系统,在服务不可用或队列过大时通知管理员。
3. 定期检查黑名单:定期检查您的服务器IP是否被列入垃圾邮件黑名单。

使用监控工具:考虑使用Nagios、Zabbix或Prometheus等工具监控邮件服务器的性能和可用性。

设置警报:配置警报系统,在服务不可用或队列过大时通知管理员。

定期检查黑名单:定期检查您的服务器IP是否被列入垃圾邮件黑名单。

安全建议

1. 定期更改密码:定期更改数据库和系统管理员的密码。
2. 限制访问:使用防火墙规则限制对邮件服务器的访问。
3. 定期审计:定期审计邮件服务器的配置和日志,确保没有异常活动。
4. 保持更新:定期更新所有软件包,以防止已知漏洞被利用。

定期更改密码:定期更改数据库和系统管理员的密码。

限制访问:使用防火墙规则限制对邮件服务器的访问。

定期审计:定期审计邮件服务器的配置和日志,确保没有异常活动。

保持更新:定期更新所有软件包,以防止已知漏洞被利用。

扩展建议

1. 添加Web界面:考虑添加Roundcube或SOGo等Web邮件界面。
2. 添加邮件列表:考虑添加Mailman等邮件列表管理软件。
3. 添加备份MX:考虑添加备份MX服务器,以提高邮件接收的可靠性。

添加Web界面:考虑添加Roundcube或SOGo等Web邮件界面。

添加邮件列表:考虑添加Mailman等邮件列表管理软件。

添加备份MX:考虑添加备份MX服务器,以提高邮件接收的可靠性。

通过遵循本教程,您已经成功搭建了一个功能齐全、安全可靠的企业级邮件服务器。虽然初始配置可能有些复杂,但一旦设置完成,您的邮件服务器将为您的组织提供稳定、高效的邮件服务。定期维护和监控将确保您的邮件服务器持续运行良好。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则