在本系列的前一篇文章中,我们解释了如何使用phpMyAdmin安全地设置和管理邮件服务器数据库。
需求:
使用虚拟域用户配置Postfix和Dovecot - 第2部分
现在是时候来配置,这将使发送和接收电子邮件现实的内部程序:Postfix和Dovecot的 (处理传出和传入电子邮件,分别)。
配置Postfix邮件服务器
开始配置Postfix之前,这将是值得和幸福来看看它的手册在这里 ,将特别强调题为“ 新Postfix用户资料 」一节。 如果你这样做,你会发现它更容易遵循本教程。
在几句话,你应该知道,有两个配置文件Postfix的:
- /etc/postfix/main.cf文件 (Postfix配置参数请参考man 5 postconf有详细介绍)。
- /etc/postfix/master.cf(Postfix的主守护进程configuraton,见人5主进一步的细节)。
在/etc/postfix/main.cf
中,找到(或添加,如有必要)以下行,并确保它们符合如下所示的数值:
append_dot_mydomain = no biff = no config_directory = /etc/postfix dovecot_destination_recipient_limit = 1 message_size_limit = 4194304 readme_directory = no smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_banner = $myhostname ESMTP $mail_name (CentOS) smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_use_tls = yes virtual_transport = dovecot smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth
接下来的三个设置是特别重要的。 在黄色显示的文件,我们将配置Postfix的为Domains_tbl,Users_tbl和Alias_tbl表访问:
virtual_mailbox_domains = mysql:/etc/postfix/mariadb-vdomains.cf virtual_mailbox_maps = mysql:/etc/postfix/mariadb-vusers.cf virtual_alias_maps = mysql:/etc/postfix/mariadb-valias.cf
请注意,您可以在上面选择不同的文件名,只要您确保创建它们并在其中插入以下内容即可。 在每种情况下,在第1部分与您选择的DBA用户的密码更换你的密码 ,或者你也可以使用MariaDB的根证书的用户名和密码下面。
此外,请确保您使用创建的电子邮件服务器数据库的确切相同的名称和表1中的部分 。
在/etc/postfix/mariadb-vdomains.cf
:
user = dba password = YourPassword hosts = 127.0.0.1 dbname = EmailServer_db query = SELECT 1 FROM Domains_tbl WHERE DomainName='%s'
在/etc/postfix/mariadb-vusers.cf
:
user = dba password = YourPassword hosts = 127.0.0.1 dbname = EmailServer_db query = SELECT 1 FROM Users_tbl WHERE Email='%s'
在/etc/postfix/mariadb-valias.cf
:
user = dba password = YourPassword hosts = 127.0.0.1 dbname = EmailServer_db query = SELECT Destination FROM Alias_tbl WHERE Source='%s'
最后,不要忘了权限对这些文件更改为640:
# chmod 640 /etc/postfix/mariadb-vdomains.cf # chmod 640 /etc/postfix/mariadb-vusers.cf # chmod 640 /etc/postfix/mariadb-valias.cf
而所有权root用户和组Postfix :
# chown root:postfix /etc/postfix/mariadb-vdomains.cf # chown root:postfix /etc/postfix/mariadb-vusers.cf # chown root:postfix /etc/postfix/mariadb-valias.cf
接下来,启用安全连接,我们需要确保以下设置被注释掉(或添加,如有必要) /etc/postfix/master.cf
:
submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_reject_unlisted_recipient=no -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING pickup unix n - n 60 1 pickup cleanup unix n - n - 0 cleanup qmgr unix n - n 300 1 qmgr tlsmgr unix - - n 1000? 1 tlsmgr rewrite unix - - n - - trivial-rewrite bounce unix - - n - 0 bounce defer unix - - n - 0 bounce trace unix - - n - 0 bounce verify unix - - n - 1 verify flush unix n - n 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - n - - smtp relay unix - - n - - smtp showq unix n - n - - showq error unix - - n - - error retry unix - - n - - error discard unix - - n - - discard local unix - n n - - local #virtual unix - n n - - virtual lmtp unix - - n - - lmtp anvil unix - - n - 1 anvil scache unix - - n - 1 scache
注 :与开始的行缩进-o
选项是至关重要的; 否则Postfix检查将返回一个错误:
检查Postfix配置
在保存更改之前,请在文件底部添加以下行:
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
在这一点上,必须检查Postfix是否可以访问数据库表和域帐户,我们在第一部分中创建别名。
要做到这一点,我们将使用postmap命令,一个实用程序来测试与表通信Postfix的运作过程中查找,但首先我们需要重新启动Postfix:
# systemctl postfix restart # postmap -q linuxnewz.com mysql:/etc/postfix/mariadb-vdomains.cf # postmap -q someotherdomain.com mysql:/etc/postfix/mariadb-vdomains.cf # postmap -q youcl@linuxnewz.com mysql:/etc/postfix/mariadb-vusers.cf # postmap -q linuxsay@linuxnewz.com mysql:/etc/postfix/mariadb-vusers.cf # postmap -q gacanepa@linuxnewz.com mysql:/etc/postfix/mariadb-vusers.cf # postmap -q info@linuxnewz.com mysql:/etc/postfix/mariadb-valias.cf
在下面的图片我们可以看到,数据库中的现有记录中,则返回1。 否则,什么都不显示回屏幕。 在别名检查的情况下,请注意返回别名映射到的实际电子邮件帐户:
检查Postfix表通信
请注意,我们不进行身份验证的每个电子邮件帐户设置凭据,我们只测试Postfix来检测数据库中的这些记录的能力。
因此,如果你得到比上述不同的输出,确保您使用的是mariadb-vdomains.cf,mariadb-vusers.cf和mariadb-valias.cf有效的用户/密码(或任何你选择调用这些文件)。
配置Dovecot
作为一个IMAP / POP3服务器,Dovecot为用户提供了一种通过邮件用户代理 (MUA,或称客户端),如雷鸟或Outlook,仅举几个例子来访问他们的邮件。
首先,让我们创建一个用户和一个组来处理电子邮件(我们需要这样做,因为我们的电子邮件帐户没有与系统用户关联)。 您可以使用另外一个UID和GID(比5000我们下面将做),只要它不是在使用,是高数:
# groupadd -g 5000 vmail # useradd -g vmail -u 5000 vmail -d /home/vmail -m
Dovecot的设置分为多个配置文件(确保以下行取消注释和/或编辑它们以匹配下面的设置)。
在/etc/dovecot/dovecot.conf
:
!include_try /usr/share/dovecot/protocols.d/*.protocol protocols = imap pop3 lmtp !include conf.d/*.conf !include_try local.conf
在/etc/dovecot/conf.d/10-auth.conf
(只能通过SQL启用身份验证,并留下注释掉其他身份验证方法):
disable_plaintext_auth = yes auth_mechanisms = plain login !include auth-sql.conf.ext
在/etc/dovecot/conf.d/auth-sql.conf.ext
(注意,我们将存储的/ home /语音邮件 ,您需要创建,如果它不存在,在里面一个名为yourdomain.com目录中的电子邮件我们的情况下,我们做的mkdir /home/vmail/linuxnewz.com来管理该域的电子邮件):
passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } userdb { driver = static args = uid=vmail gid=vmail home=/home/vmail/%d/%n/Maildir }
首次收到此类帐户的电子邮件时,系统会创建用户帐户的个人收件箱。
在/etc/dovecot/conf.d/10-mail.conf
:
mail_location = maildir:/home/vmail/%d/%n/Maildir namespace inbox { inbox = yes } mail_privileged_group = mail mbox_write_locks = fcntl
在/etc/dovecot/conf.d/10-master.conf
:
service imap-login { inet_listener imap { port = 143 } inet_listener imaps { } } service pop3-login { inet_listener pop3 { port = 110 } inet_listener pop3s { } } service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix } } service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } unix_listener auth-userdb { mode = 0600 user = vmail } user = dovecot } service auth-worker { user = vmail } service dict { unix_listener dict { } }
在/etc/dovecot/conf.d/10-ssl.conf
(如果你正在使用由CA签名的证书计划更换证书和密钥路径):
ssl = required ssl_cert = </etc/pki/dovecot/certs/dovecot.pem ssl_key = </etc/pki/dovecot/private/dovecot.pem
在/etc/dovecot/dovecot-sql.conf.ext
输入数据库信息,并在第1部分创建的管理用户的凭据。
重要提示 :如果您的密码包含星号(#)
则需要在下面的例子表明附上连接字符串:
driver = mysql connect = "host=127.0.0.1 dbname=EmailServer_db user=dba password=PassWith#Here" default_pass_scheme = SHA512-CRYPT password_query = SELECT Email as User, password FROM Users_tbl WHERE Email='%u';
此外,还可以对Dovecot配置日志是分开的Postfix在/etc/dovecot/conf.d/10-logging.conf
:
log_path = /var/log/dovecot.log
最后,确保Dovecot日志用户访问Dovecot :
# chown vmail:dovecot /var/log/dovecot.log # chmod 660 /var/log/dovecot.log
验证并修复Postifix配置,并在防火墙中启用SMTP,POP3和IMAP
如果在配置Postfix和/或Dovecot时遇到任何问题,而不是提交所有配置文件以获取帮助,您可以获得配置摘要(仅限未注释的行):
# postconf –n # Summary for /etc/postfix/main.cf # postconf –M # Summary for /etc/postfix/master.cf # doveconf –n # Summary of all configuration files for Dovecot
此外,请确保电子邮件收件箱都只有语音邮件可读。
# chown –R vmail:vmail /home/vmail
配置文件也应该是由语音邮件和dovecot的用户读取:
# chown -R vmail:dovecot /etc/dovecot # chmod -R o-rwx /etc/dovecot
最后,确保你通过防火墙启用SMTP,POP3和IMAP:
# firewall-cmd --add-port=143/tcp # firewall-cmd --add-port=143/tcp --permanent # firewall-cmd --add-port=110/tcp # firewall-cmd --add-port=110/tcp --permanent # firewall-cmd --add-port=587/tcp # firewall-cmd --add-port=587/tcp --permanent
将Thunderbird配置为Postfix的电子邮件客户端
通过防火墙确保电子邮件通信中使用的端口安全访问,是时候配置电子邮件客户端。 使用youcl@linuxnewz.com及其相应的密码,以mail.linuxnewz.com一起为IMAP(或POP3)和SMTP服务器,我们就可以开始发送和接收电子邮件,并从该账户:
Postfix:配置Thunderbird客户端
您可以放心地忽略显示的警告消息,因为您使用的证书不是由受信任的第三方CA签名的:
Thunderbird:添加安全异常
让我们撰写一个简短的测试电子邮件,然后点击发送:
撰写电子邮件Thunderbird
当系统提示您接受传出服务器的自签名证书时,请如前所示确认:
Thunderbird:接受SSL证书
最后,转到目标电子邮件,查看您是否收到刚刚发送的电子邮件。 如果是这样,回复一下,看看它是否被传递回源的电子邮件收件箱(否则,请参阅Postfix的日志位于/ var /日志/ maillog中或Dovecot的日志在/var/log/dovecot.log故障排除信息) :
验证Postfix和Dovecot电子邮件传递
您现在有一个工作的Postfix和Dovecot电子邮件服务器,并可以开始发送和接收电子邮件。
概要
在本文中,我们已经解释了如何配置Postfix和Dovecot来处理Linux服务器中的电子邮件流量。 如果这篇文章中指出的东西不能正常工作,请确保您抽出时间来检查的Postfix和Dovecot的文档。
请注意,虽然设置Postfix邮件服务器不是一个容易的任务,这是每个系统管理员的一个有益的经验。
如果通过文档会后你会发现自己仍然Postfix和/或Dovecot的挣扎,随时使用下面的评论表单给我们留言,我们会很乐意帮助你(别忘了上传到在线存储服务使用postconf并这篇文章中所述doveconf)作为检索的Postfix和Dovecot的配置。