在CentOS上使用LNMP(Linux, Nginx, MySQL, PHP)搭建邮件服务可以通过多种方式实现,其中一种常见的方法是使用Postfix作为邮件传输代理(MTA),Dovecot作为邮件投递代理(MDA)。以下是详细的步骤:
首先,确保你的系统是最新的,并安装所需的软件包:
sudo yum update -y
sudo yum install -y postfix dovecot dovecot-mysql dovecot-sieve dovecot-managesieved dovecot-lmtp dovecot-imapd dovecot-pop3d dovecot-sqlite
编辑Postfix的主配置文件 /etc/postfix/main.cf:
sudo vi /etc/postfix/main.cf
添加或修改以下内容:
myhostname = mail.yourdomain.com
mydomain = yourdomain.com
myorigin = $mydomain
inet_interfaces = all
inet_protocols = ipv4
mydestination = $myhostname, localhost.$mydomain, $mydomain
mynetworks = 127.0.0.0/8, 192.168.1.0/24
home_mailbox = Maildir/
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/pki/tls/certs/smtpd.crt
smtpd_tls_key_file = /etc/pki/tls/private/smtpd.key
smtpd_use_tls = yes
编辑Dovecot的主配置文件 /etc/dovecot/dovecot.conf:
sudo vi /etc/dovecot/dovecot.conf
添加或修改以下内容:
mail_location = maildir:~/Maildir
protocols = imap pop3
listen = *
ssl = yes
ssl_cert = </etc/pki/tls/certs/dovecot.crt
ssl_key = </etc/pki/tls/private/dovecot.key
确保你已经安装了MySQL,并创建了一个数据库和用户来存储邮件账户信息。
编辑Dovecot的MySQL配置文件 /etc/dovecot/conf.d/10-mysql.conf:
sudo vi /etc/dovecot/conf.d/10-mysql.conf
添加或修改以下内容:
driver = mysql
connect = host=localhost dbname=maildb user=mailuser password=mymailpassword
default_pass_scheme = SHA512-CRYPT
user_query = SELECT '/var/mail/vhosts/%d/%n/Maildir' as home, 'uid=%u, gid=%g' as user FROM mail_users WHERE mail='%u@%d'
password_query = SELECT password FROM mail_users WHERE mail='%u@%d'
登录到MySQL并创建数据库和用户:
CREATE DATABASE maildb;
GRANT ALL PRIVILEGES ON maildb.* TO 'mailuser'@'localhost' IDENTIFIED BY 'mymailpassword';
FLUSH PRIVILEGES;
然后,创建一个表来存储邮件账户信息:
CREATE TABLE mail_users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    mail VARCHAR(255) NOT NULL,
    password VARCHAR(255) NOT NULL
);
启动并启用Postfix和Dovecot服务:
sudo systemctl start postfix
sudo systemctl enable postfix
sudo systemctl start dovecot
sudo systemctl enable dovecot
确保防火墙允许SMTP(25)、IMAP(143)和POP3(110)端口:
sudo firewall-cmd --permanent --add-service=smtp
sudo firewall-cmd --permanent --add-service=imap
sudo firewall-cmd --permanent --add-service=pop3
sudo firewall-cmd --reload
使用邮件客户端(如Thunderbird)配置你的邮件账户,测试发送和接收邮件。
通过以上步骤,你应该能够在CentOS上使用LNMP搭建一个基本的邮件服务。根据需要,你可以进一步配置SSL/TLS、反垃圾邮件和其他高级功能。