Debian 12 Linux Mail Server (Nginx, MariaDB, PHP, Postfix (DNSBL, DKIM, SPF), Dovecot, PostfixAdmin, SpamAssassin (Base, Self-learning by Spam folder), Sieve, Quota, Fail2Ban, Roundcube (Calendar, Managesieve), Fetchmail, Imapsync)
本指南展示了如何使用 Linux Debian 12 在 VPS 上设置功能齐全的邮件服务器。任务是获得现成的企业服务器,能够通过 Web 界面管理域和邮箱。 我们将安装基本的邮件服务、postfixadmin 管理工具,您可以使用它添加域、邮件地址,以及 roundcube web 界面,以便通过浏览器方便地处理邮件。 在本指南中,我们以 root 身份安装,如果您已经正常使用sudo命令了。
|
邮件和管理系统的Web界面外观:
最常见的问题:
-
我想购买 Kaspersky Security 来防御垃圾邮件和病毒。您能帮我安装吗?
是的,如果您订购邮件服务器组件和卡巴斯基反垃圾邮件许可证,则安装和配置是免费的。 在订单上添加许可证并指定所需的邮箱数量。
-
该服务器是否具有迁移工具来传输尊重整个结构层次结构的所有电子邮件和文件夹?
是的,imapsync安装在服务器上,它允许您按照原始结构传输所有邮箱和所有文件夹,您只需要在邮箱Web界面中配置排序规则本身。
-
我会立即获得现成的服务器,并在管理界面中创建邮箱后,它们会起作用吗?
是的,服务器已完全配置并准备就绪,您所需要做的就是在 DNS 编辑器中输入 MX 记录并指定您的域的邮件服务器的 IP 地址。
-
如果您对DNS记录的正确配置、邮箱迁移等问题有疑问,可以进行这些设置吗?
是的,由于每个人都有不同的域名,服务器自带一个测试域名为例,您需要添加自己的域名,这不需要太多时间,如果需要,我们可以为您进行这些设置,您只需要提供域名。
-
我可以自己更改服务设置以及设置我自己的服务设置,例如在邮件服务器上托管多个站点吗?
是的,当然。 付款后,您将收到一个根据描述配置的服务器,用于管理邮箱的登录名和密码,以及完全的root访问权限。 提供的指南显着减少了设置本身和测试的时间,并且我们具体设置的内容在描述中给出。 主要优点是可行的邮件服务器配置,没有任何限制。
-
我们希望所有数据都在我们身边。 你们能对我们的设备进行所有这些调整吗?
是的,您可以通过以下命令在您的设备上订购此配置的安装和配置 关联.
-
据我们了解,完成的组件仅在 VPS 服务器上提供,但出于多种原因,我们希望向您订购 VDS 服务器。
我们可以通过一次性支付一年的 VDS 服务器(Debian 12)来配置此描述。 从付款之日起,设置需要 2-3 天。
预配置的服务器配置可在订购单上获得。
1. 更新软件包
apt update
apt upgrade
2. 安装 LEMP
安装 LEMP 在其中一个程序集中描述, 我们将需要这个包来操作邮件 Web 界面、邮箱管理和管理系统,以及用于存储设置的数据库。
3. 为邮件服务设置防火墙
iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995 -j ACCEPT
让我们遵守规则
apt install iptables-persistent
netfilter-persistent save
4. 安装和配置 PostfixAdmin
该软件包允许您通过 Web 界面管理我们的邮件服务器,而无需求助于控制台。
4.1 安装包本身
apt install php-mysql php-mbstring php-imap
systemctl restart php8.2-fpm
wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz
mkdir /usr/share/nginx/html/postfixadmin
tar -C /usr/share/nginx/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1
mkdir /usr/share/nginx/html/postfixadmin/templates_c
chown -R www-data:www-data /usr/share/nginx/html/postfixadmin
4.2 现在让我们创建数据库:
mysql -u root -p
> CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfix1HuRaf92';
> \q
4.3 让我们创建一个包含以下内容的配置文件:
vi /usr/share/nginx/html/postfixadmin/config.local.php
$CONF['configured'] = true;
$CONF['default_language'] = 'ru';
$CONF['database_password'] = 'postfix1HuRaf92';
$CONF['emailcheck_resolve_domain']='NO';
?>
打开浏览器并输入地址 http://host-ip/postfixadmin/public/setup.php
您需要输入密码,然后单击按钮 Generate setup_password hash, 生成哈希。
复制整行并将其添加到文件中:
vi /usr/share/nginx/html/postfixadmin/config.local.php
保存后需要刷新页面。 http://host-ip/postfixadmin/public/setup.php 并使用给定的密码登录。 将安装 PostfixAdmin。
接下来,我们需要添加一个超级用户(具有完全权限的用户)。 在Admin字段中,必须以邮件的形式指定用户 root@mail-domain.tld
现在让我们进入页面 http://host-ip/postfixadmin/public/login.php 并输入创建用户的数据:
5. 安装和配置 Postfix 服务
apt install postfix postfix-mysql
安装过程中会出现Postfix Configuration窗口——保留Internet Site项
5.1 让我们创建一个组和用户来处理 sweatbox 文件夹
groupadd -g 1024 vmail
useradd -d /home/mail -g 1024 -u 1024 vmail -m
chown vmail:vmail /home/mail
5.2 让我们对配置文件进行更改
vi /etc/postfix/main.cf
mydestination = localhost.$mydomain, localhost, localhost.localdomain
...
inet_protocols = ipv4
...
smtpd_tls_cert_file = /etc/ssl/mail/public.pem
smtpd_tls_key_file = /etc/ssl/mail/private.key
接下来,将以下行添加到配置文件的末尾:
/etc/postfix/main.cf
virtual_mailbox_base = /home/mail
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1024
virtual_uid_maps = static:1024
virtual_gid_maps = static:1024
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes
创建具有别名设置的文件以访问数据库
vi /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
创建一个带有域设置的文件以访问数据库
vi /etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%u'
让我们创建一个带有邮箱设置的文件来访问数据库
vi /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
打开主配置文件并添加到该行的最后:
vi /etc/postfix/master.cf
submission inet n - n - - smtpd
-o smtpd_tls_security_level=may
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=/var/spool/postfix/private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
让我们使用以下命令创建安全证书:
mkdir -p /etc/ssl/mail
openssl req -new -x509 -days 1461 -nodes -out /etc/ssl/mail/public.pem -keyout /etc/ssl/mail/private.key -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=mail-domain.tld"
在这种情况下,我们创建了一个自签名证书,为了使其在没有安全警告的情况下工作,您需要购买 证书.
最终服务设置:
systemctl enable postfix
systemctl restart postfix
6. 安装和配置 Dovecot
apt install dovecot-imapd dovecot-pop3d dovecot-mysql
6.1 设置邮件存储
vi /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/home/mail/%d/%u/
6.2 授权设置
vi /etc/dovecot/conf.d/10-master.conf
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
}
}
更改数据库授权设置
vi /etc/dovecot/conf.d/10-auth.conf
#!include auth-system.conf.ext
!include auth-sql.conf.ext
让我们注释掉默认行并激活文本中带有单词 sql 的行。
6.3 设置 SSL 证书
vi /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert =
ssl_key =
让我们设置当用户第一次在邮件中授权时自动创建文件夹。
vi /etc/dovecot/conf.d/15-lda.conf
lda_mailbox_autocreate = yes
6.4 设置数据库连接
vi /etc/dovecot/conf.d/auth-sql.conf.ext
passdb {
…
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
…
args = /etc/dovecot/dovecot-sql.conf.ext
}
6.5 将设置添加到配置文件
vi /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfix1HuRaf92
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('/home/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
6.6 配置服务运行的接口
vi /etc/dovecot/dovecot.conf
listen = *
最终服务设置
systemctl enable dovecot
systemctl restart dovecot
7. 设置域和邮箱
让我们转到 Web 界面并配置域以使用邮件: http://host-ip/postfixadmin/public/.
接下来,将域添加到顶部菜单:
添加域后,让我们创建一个邮箱。
8. 安装和配置网络邮件服务 Roundcube
下载最新的 LTS 版本的软件包并将其部署到我们的服务器上
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.2/roundcubemail-1.6.2-complete.tar.gz
mkdir /usr/share/nginx/html/webmail
tar -C /usr/share/nginx/html/webmail -xvf roundcubemail-*.tar.gz --strip-components 1
cp /usr/share/nginx/html/webmail/config/config.inc.php.sample /usr/share/nginx/html/webmail/config/config.inc.php
chown -R www-data:www-data /usr/share/nginx/html/webmail
打开配置文件并编辑
vi /usr/share/nginx/html/webmail/config/config.inc.php
$config['db_dsnw'] = 'mysql://roundcube:roundcube1Yusm24M@localhost/roundcubemail';
$config['enable_installer'] = true;
让我们也找到参数并将其设为空: $config['smtp_pass'] = '';
让我们在这个配置文件中添加时间:
vi /usr/share/nginx/html/webmail/config/config.inc.php
$config['drafts_mbox'] = 'Drafts';
$config['junk_mbox'] = 'Junk';
$config['sent_mbox'] = 'Sent';
$config['trash_mbox'] = 'Trash';
$config['create_default_folders'] = true;
让我们在 MariaDB 中为 roundcubemail 创建一个基础,在配置文件中指定:
mysql -uroot -p
> CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'roundcube1Yusm24M';
> quit
导入数据库:
mysql -uroot -p roundcubemail < /usr/share/nginx/html/webmail/SQL/mysql.initial.sql
安装必要的 php 包:
apt install php-pear php-intl php-ldap php-net-smtp php-gd php-imagick php-zip php-curl php-dom php-xml php-mcrypt
如果安装php-mcrypt时出现错误,请手动安装
apt install php-dev libmcrypt-dev
pecl channel-update pecl.php.net
pecl install mcrypt-1.0.5
vi /etc/php/8.2/fpm/conf.d/99-mcrypt.ini
extension=mcrypt.so
设置php服务:
vi /etc/php/8.2/fpm/php.ini
date.timezone = "Europe/Moscow"
post_max_size = 50M
upload_max_filesize = 50M
以 50 兆字节的限制为例,您可以设置自己的限制,它们将允许您在信件中附加更大的附件。
systemctl restart php8.2-fpm
让我们修复 nginx 本身的限制
vi /etc/nginx/nginx.conf
http {
...
client_max_body_size 50M;
...
systemctl restart nginx
接下来,我们将使用链接在浏览器中继续安装 http://host-ip/webmail/installer/
按照说明安装rouncube,然后在下一页我们检查所有项目都处于OK状态。 安装完成。
删除安装程序并在配置文件中禁用安装
rm -rf /usr/share/nginx/html/webmail/installer
vi /usr/share/nginx/html/webmail/config/config.inc.php
$config['enable_installer'] = false;
让我们点击链接 http://host-ip/webmail/ 并使用完整的电子邮件地址和密码作为登录名转到网络邮件.
9. 最后设置步骤
我们的 VPS 服务器配置为使用邮件,现在我们需要在域名设置中注册或替换为我们服务器的 IP 地址的 MX 记录:
В DNS编辑器 这些线看起来像这样:
条目注册后,需要 指定 IP 地址的反向区域 (PTR)
Linux Debain 12 企业邮件服务器已准备就绪,构建还包括下面列出的服务和选项的配置:
- 安装和配置 SpamAssasin 反垃圾邮件过滤器并将邮件分组到 Postfix Debian 服务的垃圾邮件文件夹中
- 在 Dovecot 邮件服务器上安装和配置邮箱配额
- 为 Roundcube Webmail 设置日历
- 使用 Fail2Ban 保护您的邮件服务器免于猜测密码
- 为 Roundcube 网络邮件配置 ManageSieve 电子邮件过滤器
- 通过 PostfixAdmin 删除邮箱文件夹
- 在 postfixAdmin 中设置邮件收集器
- 通过 imapsync 传输和同步邮件
- 在 Postfix 中配置 SPF 检查
- 在 Postfix 中设置 DKIM 数字签名
- 使用 Postfix 进行垃圾邮件防护
- 垃圾邮件文件夹上的自学 Spamassassin
- 带有 PDF 报告的 Postfix 邮件服务器监控