如何在 CentOS 7 上使用 PostfixAdmin 安装邮件服务器

在本教程中,我们将向您展示如何在 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 官方网站.

Save