在本教程中,我们将向您展示如何在 CentOS 7 上使用 PostfixAdmin 安装和配置邮件服务器。对于那些不知道的人,Postfixadmin 是 Postfix 使用的 MySQL 或 MariaDB 数据库的 Web 前端。 使用 Postfixadmin,我们可以从 Web 浏览器轻松管理我们的 Postfix 服务,添加和删除邮件用户和域、邮件别名、磁盘配额等。
本文假设您至少具备 Linux 的基本知识,知道如何使用 shell,最重要的是,您将网站托管在自己的 VPS 上。 安装非常简单,假设您在 root 帐户下运行,如果不是,您可能需要添加 ‘sudo
‘ 到命令以获取 root 权限。 我将向您展示在 CentOS 7 服务器上使用 PostfixAdmin 逐步安装邮件服务器。
先决条件
- 运行以下操作系统之一的服务器:CentOS 7。
- 建议您使用全新的操作系统安装来防止任何潜在问题。
- 对服务器的 SSH 访问(或者如果您在桌面上,则只需打开终端)。
- 一种
non-root sudo user
或访问root user
. 我们建议充当non-root sudo user
,但是,如果您在充当 root 时不小心,可能会损害您的系统。
在 CentOS 7 上使用 PostfixAdmin 安装邮件服务器
第 1 步。首先,让我们首先确保您的系统是最新的。
yum clean all yum -y update
步骤 2. 安装 LAMP 服务器。
需要 CentOS 7 LAMP 堆栈服务器。 如果您没有安装 LAMP,您可以在此处按照我们的指南进行操作。 此外,安装所需的 PHP 模块:
yum install php70w-cli php70w-gd php70w-xml php70w-curl php70w-mysql php70w-zip php70w-mbstring php70w-mcrypt
步骤 3. 为 PostfixAdmin 配置 MariaDB。
默认情况下,MariaDB 未加固。 您可以使用 mysql_secure_installation
脚本。 您应该仔细阅读下面的每个步骤,这些步骤将设置 root 密码、删除匿名用户、禁止远程 root 登录,以及删除测试数据库和访问安全 MariaDB:
mysql_secure_installation
像这样配置它:
- Set root password? [Y/n] y - Remove anonymous users? [Y/n] y - Disallow root login remotely? [Y/n] y - Remove test database and access to it? [Y/n] y - Reload privilege tables now? [Y/n] y
接下来,我们需要登录 MariaDB 控制台并为 PostfixAdmin 创建一个数据库。 运行以下命令:
mysql -u root -p
这将提示您输入密码,因此输入您的 MariaDB 根密码并点击 Enter. 登录到数据库服务器后,您需要为 PostfixAdmin 安装创建一个数据库:
CMariaDB [(none)]> CREATE DATABASE postfixadmin; MariaDB [(none)]> GRANT ALL PRIVILEGES ON postfixadmin.* TO 'postfixadmin'@'localhost' IDENTIFIED BY 'strong_password'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> q
步骤 4. 安装 PostfixAdmin。
首先要做的是去 PostfixAdmin 的下载页面,下载 PostfixAdmin 的最新稳定版本:
cd /var/www/html wget https://github.com/postfixadmin/postfixadmin/archive/refs/tags/postfixadmin-3.3.11.tar.gz tar -xzf postfixadmin-3.3.11.tar.gz
打开主配置文件:
nano /var/www/html/postfixadmin-3.3.11/config.inc.php
编辑以下值:
$CONF['configured'] = true; $CONF['database_type'] = 'mysqli'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfixadmin'; $CONF['database_password'] = 'strong_password'; $CONF['database_name'] = 'postfixadmin'; $CONF['domain_path'] = 'NO'; $CONF['domain_in_mailbox'] = 'YES';
现在您需要将文件和文件夹的所有权分配给 Apache的用户和组。 为此,命令是:
chown -R apache: /var/www/html/postfixadmin-3.3.11
要填充数据库,请转到 https://Your_IP_Address/postfixadmin-3.0.2/setup.php,您应该会看到如下内容:
Testing database connection - OK - mysqli://postfixadmin:[email protected]/postfixadmin Everything seems fine... attempting to create/update database structure
创建一个新的 admin 用户:
bash /var/www/html/postfixadmin-3.3.11/scripts/postfixadmin-cli admin add [email protected]_domain_idroot.us --password strong_password22 --password2 strong_password22 --superadmin 1 --active 1
步骤 5. 安装和配置 Postfix。
使用以下命令安装 postfix:
yum -y install postfix
安装完成后,我们需要创建配置文件:
mkdir -p /etc/postfix/sql/
nano /etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
编辑以下值:
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active="1"
nano /etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf
编辑以下值:
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' and mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND mailbox.active = 1 AND alias_domain.active="1"
nano /etc/postfix/sql/mysql_virtual_alias_domain_maps.cf
编辑以下值:
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' and alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 AND alias_domain.active="1"
nano /etc/postfix/sql/mysql_virtual_alias_maps.cf
编辑以下值:
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT goto FROM alias WHERE address="%s" AND active="1" #expansion_limit = 100
nano /etc/postfix/sql/mysql_virtual_domains_maps.cf
编辑以下值:
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT domain FROM domain WHERE domain='%s' AND active="1" #query = SELECT domain FROM domain WHERE domain='%s' #optional query to use when relaying for backup MX #query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active="1" #expansion_limit = 100
nano /etc/postfix/sql/mysql_virtual_mailbox_limit_maps.cf
编辑以下值:
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT quota FROM mailbox WHERE username="%s" AND active="1"
nano /etc/postfix/sql/mysql_virtual_mailbox_maps.cf
编辑以下值:
user = postfixadmin password = strong_password hosts = localhost dbname = postfixadmin query = SELECT maildir FROM mailbox WHERE username="%s" AND active="1" #expansion_limit = 100
接下来,编辑 main.cf 文件:
postconf -e "myhostname = $(hostname -f)" postconf -e "virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf" postconf -e "virtual_alias_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf" postconf -e "virtual_mailbox_maps = proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf" postconf -e "smtpd_tls_cert_file = /etc/pki/tls/certs/localhost.crt" postconf -e "smtpd_tls_key_file = /etc/pki/tls/private/localhost.key" postconf -e "smtpd_use_tls = yes" postconf -e "smtpd_tls_auth_only = yes" postconf -e "smtpd_sasl_type = dovecot" postconf -e "smtpd_sasl_path = private/auth" postconf -e "smtpd_sasl_auth_enable = yes" postconf -e "smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination" postconf -e "mydestination = localhost" postconf -e "mynetworks = 127.0.0.0/8" postconf -e "inet_protocols = ipv4" postconf -e "inet_interfaces = all" postconf -e "virtual_transport = lmtp:unix:private/dovecot-lmtp"
打开 master.cf
文件,找到提交inet n和smtps inet n部分并编辑如下:
nano /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_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING smtps inet n - n - - smtpd -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_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
最后,启用 postfix 服务:
systemctl enable postfix systemctl restart postfix
步骤 6. 安装和配置 Dovecot。
使用以下命令安装 dovecot:
yum install dovecot dovecot-mysql
打开 /etc/dovecot/conf.d/10-mail.conf 文件:
nano /etc/dovecot/conf.d/10-mail.conf
更改以下值:
mail_location = maildir:/var/vmail/%d/%n mail_privileged_group = mail mail_uid = vmail mail_gid = mail first_valid_uid = 150 last_valid_uid = 150
打开 /etc/dovecot/conf.d/10-auth.conf 文件:
nano /etc/dovecot/conf.d/10-auth.conf
更改以下值:
auth_mechanisms = plain login #!include auth-system.conf.ext !include auth-sql.conf.ext
创建一个新的 dovecot-sql.conf.ext 文件:
nano /etc/dovecot/dovecot-sql.conf.ext
编辑以下值:
driver = mysql connect = host=localhost dbname=postfixadmin user=postfixadmin password=strong_password default_pass_scheme = MD5-CRYPT password_query = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 8 as userdb_gid FROM mailbox WHERE username="%u" AND active="1" user_query = SELECT '/var/vmail/%d/%u' as home, 'maildir:/var/vmail/%d/%u' as mail, 150 AS uid, 8 AS gid, concat('dirsize:storage=", quota) AS quota FROM mailbox WHERE username = "%u' AND active="1"
在 /etc/dovecot/conf.d/10-ssl.conf 文件中启用 SSL 支持:
ssl = yes
打开 /etc/dovecot/conf.d/15-lda.conf 文件并设置 postmaster_address 电子邮件地址:
postmaster_address = [email protected]_domain_name.com
打开 /etc/dovecot/conf.d/10-master.conf 文件,找到 service lmtp 部分并将其更改为:
service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix } }
找到 service auth 部分并将其更改为:
service auth { unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } unix_listener auth-userdb { mode = 0600 user = vmail #group = vmail } user = dovecot }
将 service auth-worker 部分更改为以下内容:
service auth-worker { user = vmail }
现在您需要分配文件和文件夹的所有权。 为此,命令是:
chown -R vmail:dovecot /etc/dovecot chmod -R o-rwx /etc/dovecot
最后,启用并重启 dovecot 服务:
systemctl enable dovecot systemctl restart dovecot
步骤 7. 安装和配置 Spamassassin。
使用以下命令安装 SpamAssassin:
yum -y install spamassassin
创建 SpamAssassin 系统用户:
groupadd spamd useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd chown spamd:spamd /var/log/spamassassin
接下来,配置 Postfix 以使用 SpamAssassin:
nano /etc/postfix/master.cf
更改值:
smtp inet n - n - - smtpd
和:
smtp inet n - n - - smtpd -o content_filter=spamassassin
在文件末尾添加以下行:
systemctl enable spamassassin systemctl restart spamassassin
最后重启postfix服务:
systemctl restart postfix
步骤 8. 访问 PostfixAdmin。
如果现在一切都设置正确,您应该可以通过以下方式登录到您的 PostfixAdmin 后端 https://Your_IP_Address/postfixadmin-3.0.2.2
并创建您的第一个虚拟域和邮箱。
恭喜! 您已成功安装 PostfixAdmin。 感谢您使用本教程在 CentOS 7 系统上安装带有 PostfixAdmin 的邮件服务器。 如需更多帮助或有用信息,我们建议您查看 PostfixAdmin 官方网站.