• PowerDNS 安装与主从节点配置记录

    1.安装mariaDB apt update apt install mariadb-server -y 2.创建数据库表与用户 mysql -u root -p CREATE DATABASE powerdns; GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY 'CHANGEME'; FLUSH PRIVILEGES; USE powerdns; CREATE TABLE domains ( id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, master VARCHAR(128) DEFAULT NULL, last_check INT DEFAULT NULL, type VARCHAR(6) NOT NULL, notified_serial INT UNSIGNED DEFAULT NULL, account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE UNIQUE INDEX name_index ON domains(name); CREATE TABLE records ( id BIGINT AUTO_INCREMENT, domain_id INT DEFAULT NULL, name VARCHAR(255) DEFAULT NULL, type VARCHAR(10) DEFAULT NULL, content VARCHAR(64000) DEFAULT NULL, ttl INT DEFAULT NULL, prio INT DEFAULT NULL, change_date INT DEFAULT NULL, disabled TINYINT(1) DEFAULT 0, ordername VARCHAR(255) BINARY DEFAULT NULL, auth TINYINT(1) DEFAULT 1, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE INDEX nametype_index ON records(name,type); CREATE INDEX domain_id ON records(domain_id); CREATE INDEX ordername ON records (ordername); CREATE TABLE supermasters ( ip VARCHAR(64) NOT NULL, nameserver VARCHAR(255) NOT NULL, account VARCHAR(40) CHARACTER SET 'utf8' NOT NULL, PRIMARY KEY (ip, nameserver) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE TABLE comments ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, name VARCHAR(255) NOT NULL, type VARCHAR(10) NOT NULL, modified_at INT NOT NULL, account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL, comment TEXT CHARACTER SET 'utf8' NOT NULL, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE INDEX comments_name_type_idx ON comments (name, type); CREATE INDEX comments_order_idx ON comments (domain_id, modified_at); CREATE TABLE domainmetadata ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, kind VARCHAR(32), content TEXT, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind); CREATE TABLE cryptokeys ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, flags INT NOT NULL, active BOOL, content TEXT, PRIMARY KEY(id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE INDEX domainidindex ON cryptokeys(domain_id); CREATE TABLE tsigkeys ( id INT AUTO_INCREMENT, name VARCHAR(255), algorithm VARCHAR(50), secret VARCHAR(255), PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm); ALTER table cryptokeys add column published BOOL DEFAULT 1 after active; 3.关闭可能回影响占用端口的系统应用 systemctl disable systemd-resolved systemctl stop systemd-resolved 4.开始安装后端 ###Debian 10: echo "deb [arch=amd64] http://repo.powerdns.com/debian buster-auth-master main" | sudo tee /etc/apt/sources.list.d/pdns.list apt install curl wget apt-transport-https gnupg2 -y curl https://repo.powerdns.com/CBC8B383-pub.asc | sudo apt-key add - apt-get update apt-get install pdns-server pdns-backend-mysql echo ' # MySQL Configuration # Launch gmysql backend launch+=gmysql gmysql-host=localhost gmysql-port=3306 gmysql-dbname=powerdns gmysql-user=powerdns gmysql-password=CHANGEME gmysql-dnssec=yes ' > /etc/powerdns/pdns.d/pdns.local.gmysql.conf systemctl restart pdns systemctl enable pdns 5.关于主从的配置 master ip : 10.1.1.1 master domain:ns1.mmcloud.com slave ip : 10.1.1.2 slave domain:ns2.mmcloud.com master pdns.conf: allow-axfr-ips=10.1.1.2/32 api=yes #用于开启weeb api api-key=CHANGEMEAPIKEY #用于开启weeb api daemon=yes guardian=yes include-dir=/etc/powerdns/pdns.d loglevel=7 master=yes #主从配置 slave=no #主从配置 webserver=yes #用于开启weeb api webserver-address=0.0.0.0 #用于开启weeb api webserver-allow-from=0.0.0.0/0 #用于开启weeb api xfr-cycle-interval=3 #4.5以上需要使用此选项 slave pdns.conf allow-notify-from=10.1.1.1/32 autosecondary=yes #4.5以上需要使用此选项 daemon=yes disable-axfr=yes include-dir=/etc/powerdns/pdns.d loglevel=7 slave=yes slave-cycle-interval=3 #4.5以下需要使用此选项 xfr-cycle-interval=5 #4.5以上需要使用此选项 slave和master安装方式相同,只有pdns.conf不同与数据库需要插入新的表。 mysql -u root -p USE powerdns; insert into supermasters values ('10.1.1.1', 'ns2.mmcloud.com', 'admin'); eixt; service pdns restart 至此你可以使用powerdns admin进行管理服务,添加域名选择master即可,注意域名需要增加相应的NS解析。

    2021.12.20 浏览:989
  • 如何在Ubuntu上使用Nginx轻松设置DNS over TLS解析器

    本教程将向您展示如何使用Nginx在Ubuntu上设置自己的DNS over TLS(DoT)解析器,这样您的DNS查询就可以被加密,并免受窥探。 什么是DNS over TLS,为什么它很重要 DNS(域名系统)负责将域名转换为IP地址。它是1987年设计的,没有考虑安全或隐私。默认情况下,DNS查询不加密。它们以明文形式在网络上发送,中间实体可以利用它们。例如,中国的防火长城(GFW)使用一种名为DNS缓存毒药的技术对中国互联网进行审查。(他们还使用其他方法,这超出了本文的范围。) GFW检查发送到中国境外DNS服务器的每个DNS查询。由于纯文本DNS协议基于UDP,这是一种无连接协议,GFW可以欺骗客户端IP和服务器IP。当GFW在其阻止列表中找到域名时,它会更改DNS响应。例如,如果一个中国互联网用户想要访问谷歌。GFW向用户的DNS解析程序返回位于中国的IP地址,而不是谷歌的真实IP地址。然后DNS解析程序将假IP地址返回给用户的计算机,因此用户无法访问谷歌。通用域名格式。 TLS上的DNS意味着DNS查询通过使用TLS加密的安全连接发送,这与加密HTTP流量的技术相同。 为什么要运行自己的点解析器? 现在已经有一些公共DNS解析器,比如1.1.1.1和9.9.9.9,它们支持TLS上的DNS,所以如果您没有技能或时间运行自己的DNS,您可以使用它们。然而,一些人认为,这仍然允许大型DNS服务提供商收集用户信息。他们似乎更信任他们的ISP。但我认为,如果你对隐私心存疑虑,你应该运行自己的点解析程序,这样大型DNS服务提供商和ISP都不能监视你。 目前,并非所有DNS解析程序(绑定、解除绑定、结解析程序、PowerDNS递归程序等)都支持TLS上的DNS。我将向您展示如何为您现有的DNS解析程序设置Nginx TLS代理,以提供点服务,而不是为特定的解析程序制作指南,因此无论您使用的是什么DNS解析程序,都可以遵循本教程。 先决条件 假设您在Ubuntu服务器上运行DNS解析器。您可以使用任何DNS解析程序(绑定、未绑定、结解析程序…)我个人使用绑定。 在Ubuntu 16.04/18.04上设置自己的BIND9 DNS解析器 在Ubuntu 20.04上设置自己的BIND9 DNS解析器 您还需要一个域名,因为DNS客户端需要与我们的DNS解析器建立安全的TLS连接。我从namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。 一旦满足上述要求,请按照以下说明操作。 第一步:在Ubuntu服务器上安装Nginx 这很容易做到。只需运行以下命令。 sudo apt安装nginx 第2步:从Let's Encrypt获取受信任的TLS证书 DNS over TLS要求在服务器端安装TLS证书。我们将获取并安装Let's Encrypt证书。使用Let’s Encrypt证书的优点是,它是免费的,更容易设置,并且受客户端软件的信任。 运行以下命令从默认的Ubuntu存储库安装Let's Encrypt client(certbot)。 sudo apt安装certbot 要获得Let's Encrypt TLS证书,我们可以使用以下命令创建一个Nginx虚拟主机。修理点。实例使用你自己的域名。别忘了为这个子域创建DNS记录。 sudo nano/etc/nginx/conf.d/dot。实例通用域名格式。形态 复制以下文本并将其粘贴到虚拟主机文件中。 服务器{listen 80;server_name dot.example.com;root/usr/share/nginx/html/;location ~/.well-known/acme challenge{allow all;} 保存并关闭文件。重新加载Nginx以使更改生效。 sudo systemctl重新加载nginx 创建并启用虚拟主机后,运行以下命令以获取使用webroot插件加密证书。 sudo certbot certonly--webroot--agree tos--email[email protected]-d dot。实例com-w/usr/share/nginx/html/ 步骤3:在Nginx中通过TLS代理创建DNS 编辑Nginx主配置文件。 sudo nano/etc/nginx/nginx。形态 在该文件底部添加以下行。请注意,它们需要放在http上下文之外。 流{#DNS上游池上游DNS{zone DNS 64k;服务器127.0.0.1:53;}#解密服务器的点服务器{listen 853 ssl;ssl_certificate/etc/letsencrypt/live/DoT.example.com/fullchain.pem;ssl_certificate_key/etc/letsencrypt/live/DoT.example.com/privkey.pem;代理通过dns;} 如何在Ubuntu上使用Nginx轻松设置DNS over TLS解析器 Save and close the file. Then test Nginx configuration and restart. sudo nginx -t sudo systemctl restart nginx If there’s a firewall running on Ubuntu server, you need to open TCP port 853. For example, if you use the UFW firewall, run the following command. sudo ufw allow 853/tcp Since we are using DNS over TLS, there’s no need to worry about DNS amplification attack. Step 5: Configure the Stubby DoT Client on Ubuntu Desktop Stubby is an open-source DNS stub resolver developed by the getdns team. A stub resolver is a small DNS client on the end-user’s computer that receives DNS requests from applications such as Firefox and forward requests to a recursive resolver like 1.1.1.1 or 8.8.8.8. Stubby is special in that it supports DNS over TLS. By default, it will only send DNS requests encrypted. Install Stubby on Ubuntu desktop from the default repository. sudo apt install stubby Once installed, stubby runs in the background. check its status with: systemctl status stubby Stubby listens on TCP and UDP port 53 of localhost (127.0.0.1). By default, Stubby uses third-party DNS over TLS resolvers. We need to configure it to use our own. sudo nano /etc/stubby/stubby.yml Scroll down to the upstream_recursive_servers: section and add the following text above other DNS servers. Replace 12.34.56.78 with the IP address of your DoT resolver. # My Own DNS over TLS resolver - address_data: 12.34.56.78 tls_auth_name: "dot.example.com" Then find the following line: round_robin_upstreams: 1 Change 1 to 0. This will make stubby always use your own DNS over TLS resolver. If it’s not available, stubby will use other DNS servers. Save the file and restart stubby for the changes to take effect. sudo systemctl restart stubby Step 6: Configure Ubuntu Desktop to Use Stubby Although Stubby is running, it’s not being used by the operating system. Click the Network Manager icon on the upper-right corner of your desktop. Then select wired settings. (If you are using Wi-fi, select Wi-fi settings.) Click the gear button. Select IPv4 tab, then in DNS settings, switch Automatic to OFF, which will prevent your Ubuntu system from getting DNS server address from your router. Enter 127.0.0.1 in the DNS field. Click Apply button to save your changes. Then restart NetworkManager for the changes to take effect. sudo systemctl restart NetworkManager Once you are reconnected, you can see that your Ubuntu system is now using 127.0.0.1 as the DNS server in the Details tab. How to Check if Your DNS Traffic is Encrypted We can use WireShark to monitor DNS traffic. Install WireShark on Ubuntu desktop. sudo apt install wireshark If you are asked “Should non-superusers be able to capture packets?”, answer Yes. Once it’s installed, run the following command to add your user account to the wireshark group so that you can capture packets. sudo adduser your-username wireshark Log out and log back in for the changes to take effect. Then open WireShark from your application menu, select your network interface in WireShark. For example, my Ethernet interface name is enp5s0. Then enter port 853 as the capture filter. This will make WireShark only capture traffic on port 853, which is the port used by DNS over TLS. Click the button on the upper-left corner to start capturing. After that, in terminal window, run the following command to query domain name by using the dig utility. For instance, I can query the A record of my domain name. dig A linuxbabe.com Now you can see the captured DNS traffic in WireShark. Connections were made over TCP and encrypted with TLS, which is what we want. You should check if the Destination column includes the IP address of your DoT resolver. If DNS queries are sent without encryption, then the computer would contact DNS server on port 53. You can capture packets again with port 53 as the capture filter, but you won’t see any packets in WireShark, which means stubby is encrypting your DNS queries. Wrapping Up I hope this tutorial helped you set up a DNS over TLS resolver with Nginx on Ubuntu. You may also want to read: 使用DNSdist在Ubuntu上运行自己的DNS over HTTPS(DoH)解析器 As always, if you found this post useful, then subscribe to our free newsletter to get more tips and tricks. Take care ?

    2022.03.23 浏览:51
  • 使用DNSdist在Ubuntu上设置DNS over HTTPS(DoH)解析器

    本教程将向您展示如何使用DNSdist在Ubuntu上设置自己的DNS over HTTPS(DoH)解析器,这样您的DNS查询就可以被加密并防止被窥探。 什么是HTTPS上的DNS?为什么它很重要 DNS(域名系统)负责将域名转换为IP地址。它是1987年设计的,没有考虑安全或隐私。默认情况下,DNS查询不加密。它们以明文形式在网络上发送,中间实体可以利用它们。例如,中国的防火长城(GFW)使用一种名为DNS缓存毒药的技术对中国互联网进行审查。(他们还使用其他方法,这超出了本文的范围。) GFW检查发送到中国境外DNS服务器的每个DNS查询。由于纯文本DNS协议基于UDP,这是一种无连接协议,GFW可以欺骗客户端IP和服务器IP。当GFW在其阻止列表中找到域名时,它会更改DNS响应。例如,如果一个中国互联网用户想要访问谷歌。GFW向用户的DNS解析程序返回位于中国的IP地址,而不是谷歌的真实IP地址。然后DNS解析程序将假IP地址返回给用户的计算机,因此用户无法访问谷歌。通用域名格式。 HTTPS是加密纯文本HTTP网页的标准方式。使用HTTPS上的DNS(DoH),您的DNS查询将被加密,因此第三方无法看到您的DNS查询。 为什么要运行自己的DoH解析器? 现在已经有一些公共DNS解析器,比如1.1.1.1和9.9.9.9,它们支持HTTPS上的DNS,所以如果您没有技能或时间运行自己的DNS,您可以使用它们。从Firefox版本61开始,您可以在浏览器设置中启用DNS over HTTPS,这是互联网安全和隐私方面的一大进步。Firefox默认使用Cloudflare解析器(1.1.1.1)。然而,一些人认为这允许Cloudflare收集Firefox用户的信息。他们似乎比Cloudflare更信任他们的ISP。但我认为,如果你对隐私心存疑虑,你应该运行自己的DoH解析器,这样Cloudflare和ISP都不能监视你。 DoH vs DoT 除了HTTPS上的DNS,还有另一个协议也旨在加密DNS查询。它被称为TLS上的DNS(DoT)。之前我在Ubuntu桌面上写了一篇关于通过TLS使用DNS的指南,但现在我正在切换到通过HTTPS使用DNS。 对于生活在中国等互联网审查严格的国家的人来说,使用DoH更为有利。 DoT在TCP端口853上运行,该端口很容易被国家防火墙屏蔽。 DoH在TCP端口443上运行,这是HTTPS网站的标准端口,这使得DoH非常难以阻止,因为如果TCP端口443被阻止,那么几乎所有HTTPS网站也将被阻止。 我的DoH解析器运行在中国境外的VPS(虚拟专用服务器)上,中国的防火长城无法拦截我的DNS查询。我甚至可以将我的DoH解析器的IP地址隐藏在Cloudflare CDN(内容交付网络)后面。 DoH的另一个优点是,它允许web应用程序通过现有的浏览器API访问DNS信息,因此不需要存根解析器。 主要DNS解析程序中的DoH支持 BIND将在9.17版本中支持DoH,该版本仍在开发中。Ubuntu 20.04和21.04存储库随BIND 9.16一起发布。 自版本4.0.0以来,结分解器支持DoH。目前的最新版本是5.11。它有Debian、Ubuntu、CentOS和Fedora的官方存储库。 Unbound从1.12.0版开始支持DoH。 PowerDNS递归程序目前不支持DoH。 实际上,我更喜欢用DNSdist运行DoH解析器,它在1.4.0版中增加了对DoH的支持。目前的最新版本是1.5。它有Debian、Raspbian、Ubuntu和CentOS的官方存储库。DNSdist是一个DNS负载平衡器,可以将DNS查询转发到后端DNS解析程序,因此无论您使用的是哪个DNS解析程序,都可以使用DNSdist运行自己的DoH服务器。DNSdist由PowerDNS团队开发。 先决条件 假设您在Ubuntu服务器上运行DNS解析器。你可以使用任何DNS解析程序(绑定、结解析、未绑定…)我个人使用绑定。 在Ubuntu 16.04/18.04上设置自己的BIND9 DNS解析器 在Ubuntu 20.04上设置自己的BIND9 DNS解析器 一旦DNS解析程序启动并运行,请按照以下说明操作。 第一步:在Ubuntu服务器上安装DNSdist 如果使用非LTS Ubuntu,则必须从默认存储库(sudo apt install dnsdist)安装dnsdist。如果您使用Ubuntu LTS,建议从上游存储库安装DNSdist,这样您将拥有最新的稳定版本。首先,需要为DNSdist创建一个源列表文件。 Ubuntu 20.04 echo“deb[arch=amd64] main“| sudo-tee/etc/apt/sources.list.d/pdns.list Ubuntu 18.04 echo“deb[arch=amd64] main“| sudo-tee/etc/apt/sources.list.d/pdns.list Ubuntu 16.04 echo“deb[arch=amd64] main“| sudo tee/etc/apt/sources.list.d/pdns.list 接下来,我们为DNSdist创建一个首选项文件来锁定包,这样就不会意外地从另一个存储库安装DNSdist。 sudo nano/etc/apt/preferences。d/dnsdist 将以下行添加到文件中。 包装:dnsdist*密码:origin repo。powerdns。com Pin优先级:600 保存并关闭文件。然后运行以下命令导入PowerDNS公钥,以便APT软件包管理器可以验证从该存储库下载的软件包的相互关系。 卷曲https://repo.powerdns.com/FD380FBB-pub.asc| sudo apt按键添加- 接下来,更新存储库列表并安装DNSdist。 sudo apt更新sudo apt安装dnsdist 默认情况下,DNSdist尝试绑定到端口53。因为您在端口53上有一个现有的DNS解析器,比如BIND监听,dnsdist。服务将无法启动。 由于我们只是部署一个DoH解析器,并不关心DNS负载平衡,所以我们可以将DNSdist配置为在另一个端口上侦听。编辑DNSdist配置文件。 sudo nano/etc/dnsdist/dnsdist。形态 此文件中没有内容。现在,只需在该文件中添加以下行,DNSdist就会监听TCP和UDP端口5353,而不是端口53。 setLocal(“127.0.0.1:5353”) 保存并关闭文件。然后重新启动DNSdist。 sudo systemctl restart dnsdist 检查它的状态。 systemctl状态dnsdist 它应该处于活动状态(正在运行)。 第2步:在Ubuntu服务器上安装Let's Encrypt Client(Certbot) HTTPS上的DNS需要在服务器端安装TLS证书。我们将获取并安装Let's Encrypt证书。使用Let’s Encrypt证书的优点是,它是免费的,更容易设置,并且受客户端软件的信任。 运行以下命令从默认的Ubuntu存储库安装Let's Encrypt client(certbot)。 sudo apt安装certbot 要检查版本号,请运行 certbot——版本 样本输出: certbot 0.40.0 步骤3:从Let's Encrypt获取受信任的TLS证书 我建议使用standalone或webroot插件获取dnsdist的TLS证书。 独立插件 如果你的Ubuntu服务器上没有运行web服务器,你可以使用独立插件从Let's Encrypt获取TLS证书。为子域(doh.example.com)创建DNS记录,然后运行以下命令。 sudo certbot certonly--独立--首选挑战http--同意tos--电子邮件[电子邮件 受保护]-d doh。实例通用域名格式 哪里: certonly:获取证书,但不要安装它。 --standalone:使用standalone插件获取证书 --首选挑战http:执行http-01挑战以验证我们的域,该域将使用端口80。 --同意:同意让我们加密服务条款。 --电子邮件:电子邮件地址用于帐户注册和恢复。 -d:指定你的域名。 从下面的截图可以看到,我成功地获得了证书。

    2022.03.23 浏览:60
  • 如何在Modoboa邮件服务器中托管多个域

    本教程将向您展示如何使用Modoboa设置多个电子邮件域(虚拟托管),这是一个易于使用且开源的邮件托管解决方案。为了学习本教程,假设您已经使用一个域名设置了Modoboa邮件服务器。 你需要做什么 如果要承载多个邮件域,则需要 在Modoboa管理面板中添加新的邮件域和用户。 为新邮件域创建MX、A、SPF、DKIM和DMARC记录。 为多个域设置Webmail、Postfix和Dovecot PTR记录用于检查发送方的IP地址是否与HELO主机名匹配。添加新邮件域时,无需添加其他PTR记录。 步骤1:在Modoboa管理面板中添加其他域 使用管理员帐户登录Modoboa管理面板。(https://mail.your-domain.com/admin)然后转到“域”选项卡,单击“添加”按钮添加新域。 然后在“名称”字段中输入主域名。强烈建议您启用DKIM签名,这有助于提高您的域声誉。在键选择器字段中,您可以输入一个随机单词,如modoboa。选择2048作为密钥长度。 在下一个屏幕中,您可以选择为您的域创建管理员帐户。SMTP协议要求邮件服务器应该有一个[email protected]地址。 点击提交按钮,你的新域名将被添加到Modoboa中。 要添加电子邮件地址,请转到“域”选项卡,然后单击第二个域名。 然后单击邮箱。 单击添加按钮并选择帐户。 然后选择简单用户作为角色。在用户名字段中输入电子邮件地址,然后输入密码。 在下一个屏幕中,您可以选择为此电子邮件地址创建别名。 单击提交按钮后,将创建电子邮件地址。 步骤2:为新邮件域创建MX、A、SPF、DKIM和DMARC记录 MX和一张唱片 在DNS管理器中,为新域添加MX记录,如下所示。 Record Type    Name      Value MX   @ mail.domain2.com A记录指向邮件服务器的IP地址。 Record Type Name Value A mail IP-address-of-mail-server 如果您的服务器使用IPv6地址,请确保添加AAAA记录。 SPF、DKIM和DMARC记录 然后创建SPF记录,以允许MX主机为新邮件域发送电子邮件。 Record Type Name Value TXT   @   v=spf1 mx ~all 要创建DKIM记录,我们需要获取公钥。转到Modoboa管理面板,在域选项卡中选择第二个域名。在DNS部分,单击显示密钥按钮。 将显示第二个域的公钥。有两种格式。我们只需要绑定/命名格式。 转到DNS管理器,创建一个TXT记录,输入modoboa_名称字段中的domainkey。(回想一下,在管理面板中添加第二个域名时,我们使用了modoboa作为选择器。)复制括号中的所有内容并粘贴到值字段中。删除所有双引号。DNS管理器可能会要求您删除其他无效字符,例如回车符。 请注意,您的DKIM记录可能需要一些时间才能传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://www.dmarcanalyzer.com/dkim/dkim-check/,输入modoboa作为选择器,并输入您的域名以检查DKIM记录传播。 要创建DMARC记录,请转到DNS管理器并添加TXT记录。在名称字段中,输入_dmarc。在“值”字段中,输入以下内容: v=DMARC1; p=none; pct=100; rua=mailto:[email protected] 上述DMARC记录是一个安全的起点。要查看DMARC的完整解释,请查看以下文章。 创建DMARC记录以保护您的域名免受电子邮件欺骗 第3步:为多个域设置Webmail、Postfix和Dovecot 让第一个域的用户使用邮件是有道理的。域1。com和第二个域的用户使用邮件。域2。com访问网络邮件时。 首先,我们需要将第二个邮件域添加到允许的主机列表中。编辑设置。py文件。 sudo nano /srv/modoboa/instance/instance/settings.py 找到下面几行。 ALLOWED_HOSTS = [ 'mail.domain1.com', ] 添加第二个域。 ALLOWED_HOSTS = [ 'mail.domain1.com', 'mail.domain2.com', ] 保存并关闭文件。然后重新启动uWSGI以使更改生效。 sudo systemctl restart uwsgi 接下来,我们需要在第二个域中创建一个Nginx虚拟主机文件。将工作目录更改为/etc/nginx/sites enabled。 cd /etc/nginx/sites-enabled 将第一个邮件域虚拟主机文件的内容复制到第二个域虚拟主机文件。 sudo cp mail.domain1.com.conf mail.domain2.com.conf 编辑第二个域虚拟主机文件。 sudo nano mail.domain2.com.conf 找到下面这行。 server_name mail.domain1.com; 我们需要将服务器名称更改为mail。域2。通用域名格式 server_name mail.domain2.com; 服务器名称有两个实例,您需要同时更改这两个实例。(请注意,您不应更改SSL证书路径中的域名。)然后注释掉下面三行,因为这个上游已经在邮件中定义了。域1。通用域名格式。conf文件。 upstream modoboa { server unix:/run/uwsgi/app/modoboa_instance/socket fail_timeout=0; } 保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl reload nginx 确保在Debian/Ubuntu服务器上安装了cerbot。 sudo apt install certbot python3-certbot-nginx 在CentOS/RHEL上,运行以下命令安装certbot。 sudo dnf install certbot python3-certbot-nginx 现在,使用Certbot nginx插件为所有邮件域获取TLS证书,这样您将拥有一个包含多个域名的TLS证书,邮件客户端将不会抛出安全警告。 sudo certbot certonly --nginx --agree-tos -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email your-email-address 请注意,在上面的命令中,我们使用第一个邮件域指定了证书名,该域将在文件路径中使用,因此您不必在Postfix或Dovecot配置文件中更改文件路径。还要注意,我们告诉certbot只获取证书,而不安装证书(certonly)。 当它询问您是否要更新现有证书以包含新域时,请回答U并按Enter键。 现在您应该会看到以下消息,这表明已成功获取多域证书。 重新加载Nginx以获取新证书。 sudo systemctl reload nginx 您现在应该能够使用不同的域来访问webmail。此外,您还需要重新加载Postfix SMTP服务器和Dovecot IMAP服务器,以便让它们获取新证书。 sudo systemctl reload postfix dovecot 在计算机或移动设备上使用邮件客户端 启动你的桌面电子邮件客户端,比如Mozilla Thunderbird,并添加第二个域的邮件帐户。 在“传入服务器”部分,选择IMAP协议,输入mail。域2。com作为服务器名,选择端口143和STARTTLS。选择普通密码作为身份验证方法。 在“发送”部分,选择SMTP协议,输入mail。域2。com作为服务器名,选择端口587和STARTTLS。选择普通密码作为身份验证方法。 提示:您还可以将端口993用于IMAP的SSL/TLS加密,将端口465用于SMTP的SSL/TLS加密。您不应该在邮件客户端中使用端口25作为SMTP端口来提交发送的电子邮件。 虽然Postfix SMTP服务器和Dovecot IMAP服务器在与其他服务器通信时使用第一个邮件域(mail.domain1.com)的主机名,但它们现在使用的是多域证书,因此邮件客户端不会显示证书警告。 SPF和DKIM检查 现在,您可以使用桌面电子邮件客户端或webmail客户端向[email protected]发送测试电子邮件,并获得免费的电子邮件身份验证报告。这是我从25号端口收到的报告。通用域名格式 别忘了在网上测试你的电子邮件分数https://www.mail-tester.com还可以使用GlockApps测试电子邮件的放置。 如果DKIM检查失败,您可以转到https://www.dmarcanalyzer.com/dkim/dkim-check/查看您的DKIM记录是否有任何错误。 如果你的电子邮件仍被标记为垃圾邮件呢? 在这篇文章中,我有更多的建议:7个有效的建议来阻止你的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 多个邮件域的RDN? 反向DNS(RDN),又名PTR记录,用于检查发送方的IP地址是否与HELO主机名匹配。添加新邮件域时,无需添加其他PTR记录。您的RDN应该只设置一个主机名,即Postfix中设置的主机名,可以通过以下命令显示。 postconf myhostname rDNS是IP地址的记录。这不是域名的记录。如果只有一个IP地址,那么只需要一条指向一个主机名的rDNS记录。反向DNS检查不会验证发件人:域在您的电子邮件中,只要您的IP地址有rDNS记录,并且主机名可以解析回相同的IP地址,您就可以通过反向DNS检查。 此外,在一台服务器上托管多个域时,不需要在Postfix中更改以下设置。 我的主机名 肌动蛋白 我的目的地 托管电子邮件服务,如G Suite和Microsoft Exchange Online,都使用一个主机名作为服务器,为客户发送电子邮件。G套件用户发送的电子邮件都使用谷歌。主机名中的com和Microsoft Exchange Online用户发送的电子邮件都使用outlook。主机名中的com。对于其他电子邮件服务提供商,如Mailchimp、SendinBlue、SendPluse等,情况也是如此。它们都为单个服务器使用一个主机名,而一个IP地址只有一个RDN记录。 如何在Modoboa邮件服务器中托管多个域 Autodiscover and AutoConfig make it easy to configure a desktop or mobile mail client. The end user just need to enter a name, email address and password to set up his/her mail account, without having to enter the SMTP or IMAP server details. Setting up Autodiscover and AutoConfig for multiple domains requires 2 simple steps. First, create CNAME records for the second domain in your DNS manager, autoconfig.domain2.com CNAME mail.domain2.com autodiscover.domain2.com CNAME mail.domain2.com Then go to the Nginx virtual host directory. cd /etc/nginx/sites-enabled/ Copy the autoconfig virtual host for the second domain. sudo cp autoconfig.domain1.com.conf autoconfig.domain2.com.conf Edit the new virtual host file. sudo nano autoconfig.domain2.com.conf Find the following line. server_name autoconfig.domain1.com; We need to change the server_name to autoconfig.domain2.com server_name autoconfig.domain2.com; Then comment out the following 3 lines, because this upstream has already been defined in the autoconfig.domain1.com.conf file, we can’t define it again. upstream automx { server unix:/run/uwsgi/app/automx_instance/socket fail_timeout=0; } Save and close the file. Then test Nginx configuartion. sudo nginx -t If the test is successful, reload Nginx for the changes to take effect. sudo systemctl reload nginx Now you can test the Autodiscover and AutoConfig feature in Microsoft Outlook and Mozilla Thunderbird mail client. By default, AutoMX will send the first hostname (mail.domain1.com) to mail clients who request Autodiscover and AutoConfig info, which means Microsoft Outlook and Mozilla Thunderbird would use mail.domain1.com as the SMTP server and IMAP server for the second domain. This works, but isn’t perfect. If you want Microsoft Outlook and Mozilla Thunderbird to use mail.domain2.com as SMTP and IMAP server address for the second domain, then edit the AutoMX configuration file. sudo nano /etc/automx.conf Create a new section for the second domain at the end of this file. [domain2.com] Then copy the lines from the [global] section and change the domain name. [domain2.com] backend = sql action = settings account_type = email host = postgres://modoboa:[email protected]/modoboa query = SELECT first_name || ' ' || last_name AS display_name, email, SPLIT_PART(email, '@', 2) AS domain FROM core_user WHERE email='%s' AND is_active result_attrs = display_name, email smtp = yes smtp_server = mail.domain2.com smtp_port = 587 smtp_encryption = starttls smtp_auth = plaintext smtp_auth_identity = ${email} smtp_refresh_ttl = 6 smtp_default = yes imap = yes imap_server = mail.domain2.com imap_port = 143 imap_encryption = starttls imap_auth = plaintext imap_auth_identity = ${email} imap_refresh_ttl = 6 pop = yes pop_server = mail.domain2.com pop_port = 110 pop_encryption = starttls pop_auth = plaintext pop_auth_identity = ${email} Save and close the file. Then restart AutoMX. sudo systemctl restart uwsgi Wrapping Up That’s it! I hope this tutorial helped you host multiple email domains with Modoboa. As always, if you found this post useful, then subscribe to our free newsletter to get more tips and tricks. Take care ?

    2022.03.23 浏览:68
  • 如何在Ubuntu上的PostfixAdmin中托管多个邮件域

    本教程将向您展示如何使用PostfixAdmin在Ubuntu服务器上设置多个邮件域(虚拟主机),这是一个开源的基于web的界面,用于为许多域和用户配置和管理基于Postfix的电子邮件服务器。 先决条件 为了学习本教程,假设 您已经为PostfixAdmin配置了一个邮件域(Ubuntu18.04指南,Ubuntu20.04指南)。 您已经按照第4部分设置了SPF和OpenDKIM。 您已经为第一个邮件域安装了Roundcube Webmail(Ubuntu18.04指南、Ubuntu20.04指南) 你需要做什么 如果要承载多个邮件域,则需要 在PostfixAdmin基于web的面板中添加新的邮件域和用户。 为新邮件域创建MX、A和SPF记录。 为新域设置DKIM签名。 为新域创建DMARC记录。 为多个域设置RoundCube Webmail、Postfix和Dovecot Reverse DNS check is used to check if the sender’s IP address matches the HELO hostname. You don’t need to add another PTR record when adding a new mail domain. 步骤1:在PostfixAdmin面板中添加其他域 使用邮局主管帐户登录PostfixAdmin面板。(https://postfixadmin.your-domain.com/)然后转到域列表-&gt;New Domain可添加新域。 请注意,新域应该有DNS A记录,否则PostfixAdmin将抛出以下错误消息。您可以在dnsmap上检查DNS传播状态。伊奥。 Invalid domain domain2.com, and/or not discoverable in DNS 接下来,在新域下添加一个用户。 步骤2:为新邮件域创建MX、A和SPF记录 在DNS管理器中,为新域添加MX记录,如下所示。 Record Type    Name      Value MX   @ mail.domain2.com A记录指向邮件服务器的IP地址。 Record Type Name Value A mail IP-address-of-mail-server 如果您的服务器使用IPv6地址,请确保添加AAAA记录。 然后创建SPF记录,以允许MX主机为新邮件域发送电子邮件。 Record Type Name Value TXT   @   v=spf1 mx ~all 步骤3:为新域设置DKIM签名 在本系列教程的第4部分中,我们已经为单个域安装并配置了OpenDKIM。现在我们需要告诉OpenDKIM为新邮件域的每一封邮件签名。 编辑OpenDKIM签名表文件。 sudo nano /etc/opendkim/signing.table 添加第二个域,如下所示。 *@domain1.com default._domainkey.domain1.com *@domain2.com default._domainkey.domain2.com 编辑密钥表文件。 sudo nano /etc/opendkim/key.table 添加第二个域,如下所示。 default._domainkey.domain1.com domain1.com:default:/etc/opendkim/keys/domain1.com/default.private default._domainkey.domain2.com domain2.com:default:/etc/opendkim/keys/domain2.com/default.private 编辑受信任的主机文件。 sudo nano /etc/opendkim/trusted.hosts 添加第二个域,如下所示。 127.0.0.1 localhost *.domain1.com *.domain2.com 接下来,我们需要为第二个域生成priavte/公钥对。为第二个域创建一个单独的文件夹。 sudo mkdir /etc/opendkim/keys/domain2.com 使用opendkim genkey工具生成密钥。 sudo opendkim-genkey -b 2048 -d domain2.com -D /etc/opendkim/keys/domain2.com -s default -v 上述命令将创建2048位密钥-d(域)指定域-D(directory)指定存储密钥的目录,我们使用默认值作为选择器(-s)。执行命令后,私钥将被写入默认值。私有文件和公钥将被写入默认值。txt文件。 使opendkim成为私钥的所有者。 sudo chown opendkim:opendkim /etc/opendkim/keys/domain2.com/default.private 显示公钥 sudo cat /etc/opendkim/keys/domain2.com/default.txt p参数后面的字符串是公钥。 在DNS管理器中,为第二个域创建一个TXT记录。输入默认值_名称字段中的domainkey。复制括号中的所有内容并粘贴到值字段中。删除所有双引号。(您可以先将其粘贴到文本编辑器中,删除所有双引号,然后将其复制到DNS管理器。DNS管理器可能会要求您删除其他无效字符,例如回车符。) 保存更改后。用这个命令检查TXT记录。 dig TXT default._domainkey.domain2.com 现在,您可以运行以下命令来测试您的DKIM DNS记录是否正确。 sudo opendkim-testkey -d domain2.com -s default -vvv 如果一切正常,你会看到的 opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key 'default._domainkey.domain2.com' opendkim-testkey: key secure opendkim-testkey: key OK 如果你看到“钥匙不安全”,不要惊慌。这是因为您的域名上未启用DNSSEC。DNSSEC是安全DNS查询的安全标准。大多数域名都没有启用DNSSEC。你可以继续遵循这个指南。 重新启动OpenDKIM,以便它开始为第二个域签署电子邮件。 sudo systemctl restart opendkim 步骤4:为新域创建DMARC记录 要创建DMARC记录,请转到DNS管理器并添加TXT记录。在名称字段中,输入_dmarc。在“值”字段中,输入以下内容。请注意,您需要创建[email&#160;protected]电子邮件地址。 v=DMARC1; p=none; pct=100; rua=mailto:[email protected] 上述DMARC记录是一个安全的起点。要查看DMARC的完整解释,请查看以下文章。 创建DMARC记录以保护您的域名免受电子邮件欺骗 第5步:为多个域设置RoundCube、Postfix和Dovecot 我假设您为第一个邮件域安装了Roundcube webmail。 让第一个域的用户使用邮件是有道理的。域1。com和第二个域的用户使用邮件。域2。com访问RoundCube webmail时。我将向您展示如何使用Apache和Nginx。 阿帕奇 如果Roundcube由Apache web服务器提供服务,则为第二个域创建一个虚拟主机。 sudo nano /etc/apache2/sites-available/mail.domain2.com.conf 将以下文本放入文件中。 <VirtualHost *:80> ServerName mail.domain2.com DocumentRoot /var/www/roundcube/ ErrorLog ${APACHE_LOG_DIR}/mail.domain2.com_error.log CustomLog ${APACHE_LOG_DIR}/mail.domain2.com_access.log combined <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www/roundcube/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> 保存并关闭文件。然后通过以下方式启用此虚拟主机: sudo a2ensite mail.domain2.com.conf 重新加载Apache以使更改生效。 sudo systemctl reload apache2 Nginx 如果Roundcube由Nginx web服务器提供服务,则为第二个域创建一个虚拟主机。 sudo nano /etc/nginx/conf.d/mail.domain2.com.conf 将以下文本放入文件中。 server { listen 80; server_name mail.domain2.com; root /var/www/roundcube/; index index.php index.html index.htm; error_log /var/log/nginx/mail.domain2.com.error; access_log /var/log/nginx/mail.domain2.com.access; location / { try_files $uri $uri/ /index.php; } location ~ /.php$ { try_files $uri =404; fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /.well-known/acme-challenge {     allow all; } location ~ ^/(README|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ { deny all; } location ~ ^/(bin|SQL)/ { deny all; } # A long browser cache lifetime can speed up repeat visits to your page location ~* /.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; } } 注意:如果你使用Ubuntu 20.04,你应该替换php7。2-fpm和php7。上述代码中的4-fpm。 保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl reload nginx 获取TLS证书 现在,使用Certbot为您的所有邮件域获取TLS证书,这样您将拥有一个包含多个域名的TLS证书,邮件客户端将不会抛出安全警告。 阿帕奇 sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email [email protected] Nginx sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email [email protected] 请注意,在上面的命令中,我们使用第一个邮件域指定了证书名,该域将在文件路径中使用,因此您不必在Postfix或Dovecot配置文件中更改文件路径。 当它询问您是否要更新现有证书以包含新域时,回答U并按Enter键。 现在您应该会看到以下消息,这表明已成功获取多域证书。 重新加载Apache或Nginx以获取新证书。 sudo systemctl reload apache2 sudo systemctl reload nginx 您现在应该可以使用不同的域来访问RoundCube webmail。此外,您还需要重新加载Postfix SMTP服务器和Dovecot IMAP服务器,以便让它们获取新证书。这就是Postfix和Dovecot为多个域提供服务所需的全部工作。 sudo systemctl reload postfix dovecot 在计算机或移动设备上使用邮件客户端 启动你的桌面电子邮件客户端,比如Mozilla Thunderbird,并添加第二个域的邮件帐户。 在“传入服务器”部分,选择IMAP协议,输入mail。域2。com作为服务器名,选择端口143和STARTTLS。选择普通密码作为身份验证方法。 在“发送”部分,选择SMTP协议,输入mail。域2。com作为服务器名,选择端口587和STARTTLS。选择普通密码作为身份验证方法。 提示:您还可以将端口993用于IMAP的SSL/TLS加密,将端口465用于SMTP的SSL/TLS加密。您不应该使用端口25作为SMTP端口来提交发送的电子邮件。 虽然Postfix SMTP服务器和Dovecot IMAP服务器在与其他服务器通信时使用第一个邮件域(mail.domain1.com)的主机名,但它们现在使用的是多域证书,因此邮件客户端不会显示证书警告。 SPF和DKIM检查 现在,您可以使用桌面电子邮件客户端或webmail客户端向[email&#160;protected]发送测试电子邮件,并获得免费的电子邮件身份验证报告。这是我从25号端口收到的报告。通用域名格式 别忘了在网上测试你的电子邮件分数https://www.mail-tester.com还可以使用GlockApps测试电子邮件的放置。 如果DKIM检查失败,您可以转到https://www.dmarcanalyzer.com/dkim/dkim-check/查看您的DKIM记录是否有任何错误。 如果你的电子邮件仍被标记为垃圾邮件呢? 在这篇文章中,我有更多的建议:7个有效的建议来阻止你的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 多个邮件域的RDN? 反向DNS(RDN),又名PTR记录,用于检查发送方的IP地址是否与HELO主机名匹配。添加新邮件域时,无需添加其他PTR记录。您的RDN应该只设置一个主机名,即Postfix中设置的主机名,可以通过以下命令显示。 postconf myhostname rDNS是IP地址的记录。这不是域名的记录。如果只有一个IP地址,那么只需要一条指向一个主机名的rDNS记录。反向DNS检查不会验证发件人:域在您的电子邮件中,只要您的IP地址有rDNS记录,并且主机名可以解析回相同的IP地址,您就可以通过反向DNS检查。 此外,在一台服务器上托管多个域时,不需要在Postfix中更改以下设置。 我的主机名 肌动蛋白 我的目的地 托管电子邮件服务,如G Suite和Microsoft Exchange Online,都使用一个主机名作为服务器,为客户发送电子邮件。G套件用户发送的电子邮件都使用谷歌。主机名中的com和Microsoft Exchange Online用户发送的电子邮件都使用outlook。主机名中的com。对于其他电子邮件服务提供商,如Mailchimp、SendinBlue、SendPluse等,情况也是如此。它们都为单个服务器使用一个主机名,而一个IP地址只有一个RDN记录。 收尾 就这样!我希望本教程能帮助您使用PostfixAdmin托管多个电子邮件域。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:55
  • 如何使用iRedMail在CentOS 7上轻松设置全功能邮件服务器

    在Linux上从头开始设置自己的电子邮件服务器是一个漫长而乏味的过程,如果你不是高级用户,这将是一个痛苦的过程。本教程将向您展示如何使用iRedMail在CentOS 7上快速设置功能齐全的邮件服务器,从而为您节省大量时间和麻烦。 什么是iRedMail? iRedMail是一个shell脚本,可以在Linux/BSD服务器上自动安装和配置所有必要的邮件服务器组件,从而消除手动安装和配置。使用iRedMail,您可以在基于web的管理面板中轻松创建无限邮箱和无限邮件域。邮箱可以存储在MariaDB/MySQL、PostgreSQL数据库或OpenLDAP中。以下是iRedMail将自动安装和配置的开源软件列表。 后缀SMTP服务器 Dovecot IMAP服务器 Nginx web服务器为管理面板和webmail提供服务 用于存储用户信息的OpenLDAP、MySQL/MariaDB或PostgreSQL 一个用于DKIM签名和验证的新版本 SpamAssassin用于反垃圾邮件 ClamAV用于抗病毒 Roundcube网络邮件 用于保护SSH的Fail2ban 邮件列表管理器 Netdata服务器监控 iRead Postfix策略服务器用于GreyList 第一步:选择合适的主机提供商并购买域名 要使用iRedMail设置一个功能齐全的电子邮件服务器,您需要一个至少有3GB内存的服务器,因为安装后,您的服务器将使用超过2GB的内存。 强烈建议您在干净的CentOS 7服务器上安装iRedMail。 本教程是在每月9美元的Kamatera VPS(虚拟专用服务器)上完成的,该服务器具有1个CPU和3GB RAM。他们提供30天的免费试用期。 Kamatera是运行邮件服务器的一个非常好的选择,因为 它们不会阻止端口25,因此您可以发送无限量的电子邮件(事务性电子邮件和时事通讯),而无需在SMTP中继服务上花钱。Kamatera没有任何SMTP限制。你每天可以发送一百万封电子邮件。 IP地址不在任何电子邮件黑名单上。(至少对我来说是这样。我选择了达拉斯数据中心。)你肯定不想被列入可怕的微软Outlook IP黑名单或spamrats黑名单。有些黑名单会屏蔽整个IP范围,你无法从此类黑名单中删除你的IP地址。 您可以编辑PTR记录以提高电子邮件的可交付性。 它们允许你向你的电子邮件订阅者发送时事通讯,而不受每小时或每天的限制。 您可以为一台服务器订购多个IP地址。这对需要发送大量电子邮件的人非常有用。您可以在多个IP地址上传播电子邮件流量,以实现更好的电子邮件交付。 其他VPS提供商,如DigitalOcean阻止了端口25。DigitalOcean不会解锁端口25,因此您需要设置SMTP中继以绕过阻止,这可能会增加您的费用。如果您使用Vultr VPS,则默认情况下端口25被阻止。如果您打开支持票证,他们可以解除阻止,但如果他们决定不允许您的电子邮件发送活动,他们可能会在任何时候再次阻止。如果你使用他们的服务器发送时事通讯,Vultr实际上可能会重新阻止它。 转到Kamatera网站创建帐户,然后在帐户仪表板中创建服务器。 我建议遵循下面链接的教程,在Kamatera上正确设置Linux VPS服务器。 如何在Kamatera上创建Linux VPS服务器 创建服务器后,Kamatera将向您发送一封包含服务器SSH登录详细信息的电子邮件。要登录到服务器,可以使用SSH客户端。如果您在计算机上使用Linux或macOS,只需打开一个终端窗口并运行以下命令即可登录服务器。将12.34.56.78替换为服务器的IP地址。 ssh [email protected] 系统将要求您输入密码。 你还需要一个域名。我从namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。 第2步:创建DNS MX记录 MX记录指定哪个或多个主机处理特定域名的电子邮件。例如,为linuxbabe处理电子邮件的主机。com是邮件。利努克斯宝贝。通用域名格式。如果拥有Gmail账户的人向[email ;protected]发送电子邮件,Gmail服务器将查询linuxbabe的MX记录。通用域名格式。当它发现那封邮件。利努克斯宝贝。com负责接收电子邮件,然后查询邮件记录。利努克斯宝贝。com获取IP地址,从而可以发送电子邮件。 在DNS管理器中,为域名创建MX记录。在名称字段中输入@代表主域名,然后输入mail。你的领域。com在值字段中。 注意:MX记录的主机名不能是其他名称的别名。此外,强烈建议您使用主机名,而不是MX记录的裸IP地址。 DNS管理员可能会要求您输入首选项值(也称为优先级值)。它可以是0到65356之间的任何数字。小数字的优先级高于大数字。建议将该值设置为0,以便此邮件服务器具有接收电子邮件的最高优先级。创建MX记录后,还需要为邮件创建一个记录。你的领域。com,以便将其解析为IP地址。如果您的服务器使用IPv6地址,请确保添加AAAA记录。 提示:如果使用Cloudflare DNS服务,则在创建邮件记录时不应启用CDN功能。你的领域。通用域名格式。Cloudflare不支持SMTP代理。 第3步:配置主机名 通过SSH登录服务器,然后运行以下命令更新现有软件包。 sudo yum update -y 我强烈建议创建一个sudo用户来管理服务器,而不是使用默认的root用户来提高服务器安全性。运行以下命令创建用户。将用户名替换为首选用户名。 sudo adduser username 设置此用户的密码。 sudo passwd username 将此用户添加到控制盘组以使用sudo。 sudo gpasswd -a username wheel 切换到新用户。 su - username 接下来,使用以下命令为服务器设置完全限定的域名(FQDN)。 sudo hostnamectl set-hostname mail.your-domain.com 我们还需要使用命令行文本编辑器(如Nano)更新/etc/hosts文件。 sudo nano /etc/hosts 像下面那样编辑它。(使用箭头键在文件中移动光标。) 127.0.0.1 mail.your-domain.com localhost 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要关闭文件,请按Ctrl+X。) 要查看更改,请重新登录并运行以下命令以查看主机名。 hostname -f 第4步:使用iRedMail在CentOS 7上设置邮件服务器 运行以下命令从其Github存储库下载最新版本的iRedMail脚本安装程序。 sudo dnf install wget tar -y wget 提取存档文件。 tar xvf 1.5.1.tar.gz 然后将cd放入新创建的目录中。 cd iRedMail-1.5.1/ 向iRedMail添加可执行权限。sh脚本。 chmod +x iRedMail.sh 接下来,使用sudo权限运行Bash脚本。 sudo bash iRedMail.sh 邮件服务器安装向导将出现。使用Tab键选择Yes,然后按Enter键。 下一个屏幕将要求您选择邮件存储路径。您可以使用默认的/var/vmail,只需按Enter键即可。 然后选择是否要运行web服务器。强烈建议您选择运行web服务器,因为您需要基于web的管理面板来添加电子邮件帐户。它还允许您访问Roundcube网络邮件。默认情况下,Nginx web服务器处于选中状态,因此只需按Enter键即可。(星号表示该项目已被选中。) 然后为电子邮件帐户选择存储后端。选择一个你熟悉的。本教程选择了MariaDB。按向上和向下箭头键,然后按空格键进行选择。 如果选择了MariaDB或MySQL,则需要设置MySQL根密码。 接下来,输入您的第一个邮件域。您可以稍后在基于web的管理面板中添加其他邮件域。本教程假设您想要一个像[email ;protected]这样的电子邮件帐户。在这种情况下,你需要进入你的域名。com在这里,没有子域。不要在域名后按空格键。我认为iRedMail会将空格字符与域名一起复制,这可能会导致安装失败。 接下来,为邮件域管理员设置密码。 选择可选组件。默认情况下,这4个项目都被选中。所以只需按回车键。 现在,您可以查看您的配置。键入Y开始安装所有邮件服务器组件。 确保在安装过程中没有看到错误。如果出现错误,最好重新安装操作系统,然后在服务器上重新安装iRedMail,否则邮件服务器可能无法正常工作。 在安装结束时,选择y以使用iRedMail提供的防火墙规则并重新启动防火墙。 现在iRedMail安装完成了。您将收到webmail的URL、web管理面板和登录凭据的通知。iRedMail。提示文件包含有关iRedMail服务器的重要信息。 重新启动CentOS 7服务器。 sudo shutdown -r now 服务器重新联机后,您可以访问web管理面板。 https://mail.your-domain.com/iredadmin/ 注意,在上面的URL中,访问管理面板的子目录是/IREDAMIN/,而不是/iredmail/。因为它使用的是自签名TLS证书,所以需要在web浏览器中添加安全异常。 步骤5:安装Let's Encrypt TLS证书 由于邮件服务器正在使用自签名TLS证书,桌面邮件客户端用户和webmail客户端用户都将看到警告。为了解决这个问题,我们可以获得并安装免费的Let's Encrypt TLS证书。 获取证书 首先,通过SSH再次登录服务器,并运行以下命令在CentOS 7上安装Let's Encrypt(certbot)客户端。 sudo yum install certbot python-certbot-nginx -y iRedMail已经在默认的Nginx虚拟主机中配置了TLS设置,因此我建议使用webroot插件而不是Nginx插件来获取证书。运行以下命令。用红色文本替换为您自己的电子邮件地址和主机名。 sudo certbot certonly --webroot --agree-tos --email [email protected] -d mail.your-domain.com -w /var/www/html/ 当它询问您是否希望接收EFF的通信时,您可以选择否。 如果一切顺利,您将看到以下文本,表明您已成功获得TLS证书。您的证书和链已保存在/etc/letsencrypt/live/mail。你的领域。com/directory。 未能获得TLS证书 如果certbot无法获得TLS证书,可能是因为您的DNS记录没有传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://dnsmap.io,输入邮件服务器的主机名(mail.your domain.com)以检查DNS传播。 在Nginx中安装证书 获得TLS证书后,让我们配置Nginx web服务器以使用它。编辑SSL模板文件。 sudo nano /etc/nginx/templates/ssl.tmpl 找到下面两行。 ssl_certificate /etc/pki/tls/certs/iRedMail.crt; ssl_certificate_key /etc/pki/tls/private/iRedMail.key; 替换为: ssl_certificate /etc/letsencrypt/live/mail.your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mail.your-domain.com/privkey.pem; 保存并关闭文件。然后测试nginx配置并重新加载。 sudo nginx -t sudo systemctl reload nginx 再次访问iRedMail管理面板,您的web浏览器将不再警告您,因为Nginx现在使用的是有效的TLS证书。 在Postfix和Dovecot中安装TLS证书 我们还需要配置Postfix SMTP服务器和Dovecot IMAP服务器来使用Let's Encrypt颁发的证书,这样桌面邮件客户端就不会显示安全警告。编辑Postfix的主配置文件。 sudo nano /etc/postfix/main.cf 找到下面三行。(第95、96、97行)。 smtpd_tls_key_file = /etc/pki/tls/private/iRedMail.key smtpd_tls_cert_file = /etc/pki/tls/certs/iRedMail.crt smtpd_tls_CAfile = /etc/pki/tls/certs/iRedMail.crt 替换为: smtpd_tls_key_file = /etc/letsencrypt/live/mail.your-domain.com/privkey.pem smtpd_tls_cert_file = /etc/letsencrypt/live/mail.your-domain.com/cert.pem smtpd_tls_CAfile = /etc/letsencrypt/live/mail.your-domain.com/chain.pem 保存并关闭文件。然后重新加载后缀。 sudo systemctl reload postfix 接下来,编辑Dovecot的主配置文件。 sudo nano /etc/dovecot/dovecot.conf 好的,下面两行。(第47、48行) ssl_cert = </etc/pki/tls/certs/iRedMail.crt ssl_key = </etc/pki/tls/private/iRedMail.key 替换为: ssl_cert = </etc/letsencrypt/live/mail.your-domain.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.your-domain.com/privkey.pem 保存并关闭文件。然后重新装好多佛科特。 sudo systemctl reload dovecot 从现在起,桌面邮件用户将不会看到安全警告。 第6步:发送测试电子邮件 使用邮政局长邮件帐户([email ;protected])登录iredadmin面板。在“添加”选项卡中,可以添加其他域或电子邮件地址。 如果您看到“无控制域”错误,请参阅本文。 创建用户后,您可以访问Roundcube webmail地址,并使用新的邮件用户帐户登录。 https://mail.your-domain.com/mail/ 现在,您可以测试电子邮件的发送和接收。请注意,您可能需要等待几分钟才能收到电子邮件,因为iRedMail默认情况下会启用灰色列表,这是一种通知其他发送SMTP服务器在几分钟后重试的方式。邮件日志文件/var/log/maillog中的以下行表示启用了灰色列表。 Recipient address rejected: Intentional policy rejection, please try again later; 检查ClamAV是否正在运行 ClamAV用于扫描电子邮件中的病毒。ClamAV可以使用相当数量的RAM。如果您的服务器上没有足够的RAM,ClamAV将无法正常工作,这将阻止您的邮件服务器发送电子邮件。您可以通过以下方式检查其状态: systemctl status [email protected] 如果你的ClamAV总是像下面这样激活,你就有问题了。 查看ClamAV日志。 sudo journalctl -eu [email protected] 如果您在日志中看到以下行,这意味着您的服务器没有足够的RAM来运行ClamAV。 daemonize() failed: Cannot allocate memory 您可以向服务器添加交换文件,以增加服务器上的总RAM。(请注意,在服务器上使用交换空间可能会大大降低服务器性能。如果您想要更好的性能,应该升级物理RAM,而不是使用交换空间。) 要在服务器上添加交换空间,首先,使用fallocate命令创建一个文件。例如,在根文件系统中创建一个名为swapfile、容量为1G的文件: sudo fallocate -l 1G /swapfile 然后确保只有root用户可以读写它。 sudo chmod 600 /swapfile 将其格式化为交换: sudo mkswap /swapfile 输出: Setting up swapspace version 1, size = 2014 MiB (536866816 bytes) no label, UUID=0aab5886-4dfb-40d4-920d-fb1115c67433 启用交换文件 sudo swapon /swapfile 等几秒钟,你的ClamAV应该处于活动状态(正在运行),它不会阻止你的邮件服务器发送电子邮件。 systemctl status [email protected] 要在系统启动时装载交换空间,请编辑/etc/fstab文件。 sudo nano /etc/fstab 在该文件底部添加以下行。 /swapfile swap swap defaults 0 0 保存并关闭文件。然后重新加载系统D。 sudo systemctl daemon-reload 步骤7:检查端口25(出站)是否被阻止 您的ISP或主机服务提供商不会阻止与服务器端口25的传入连接,这意味着您可以接收来自其他邮件服务器的电子邮件。然而,许多ISP/主机提供商会阻止与其他邮件服务器端口25的传出连接,这意味着您无法发送电子邮件。 如果您的电子邮件没有到达您的其他电子邮件地址,例如Gmail,那么您可以使用telnet实用程序检查端口25(出站)是否被阻止。在CentOS 7上安装telnet时使用: sudo yum install telnet 然后在邮件服务器上运行以下命令。 telnet gmail-smtp-in.l.google.com 25 如果端口25(出站)未被阻止,您将看到如下消息,这表示已成功建立连接。(提示:输入quit并按Enter键关闭连接。) Trying 74.125.68.26... Connected to gmail-smtp-in.l.google.com. Escape character is '^]'. 220 mx.google.com ESMTP y22si1641751pll.208 - gsmtp 如果端口25(出站)被阻止,您将看到如下情况: Trying 2607:f8b0:400e:c06::1a... Trying 74.125.195.27... telnet: Unable to connect to remote host: Connection timed out 在这种情况下,您的Postfix无法向其他SMTP服务器发送电子邮件。请您的ISP/主机提供商为您打开它。如果他们拒绝您的请求,您需要设置SMTP中继以绕过端口25阻塞。 还是不能发邮件? 如果端口25(出站)未被阻止,但您仍然无法从自己的邮件服务器向Gmail等其他电子邮件地址发送电子邮件,那么您应该检查邮件日志(/var/log/mail.log)。 sudo nano /var/log/mail.log 例如,有些人可能会在文件中看到以下几行。 host gmail-smtp-in.l.google.com[2404:6800:4003:c03::1b] said: 550-5.7.1 [2a0d:7c40:3000:b8b::2] Our system has detected that 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR 550-5.7.1 records and authentication. Please review 550-5.7.1 for more information 这意味着您的邮件服务器正在使用IPv6发送电子邮件,但您没有设置IPv6记录。你应该去你的DNS管理员那里,为邮件设置AAAA记录。你的领域。com,那么您应该为IPv6地址设置PTR记录,这将在步骤9中讨论。 如何禁用灰色列表 默认情况下,iRedMail已启用GreyList,这会告诉其他发送SMTP的服务器在几分钟后重试。这主要有助于阻止垃圾邮件,但也会降低用户体验。如果您希望禁用灰色列表,请按照以下说明操作。 向/opt/iredapd/settings添加写入权限。py文件。 sudo chmod 600 /opt/iredapd/settings.py 然后编辑配置文件。 sudo nano /opt/iredapd/settings.py 找到下面这行。 plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"] 从列表中删除“灰色列表”。保存并关闭文件。然后重新启动iRedApp。 sudo systemctl restart iredapd 将配置文件更改回只读模式。 sudo chmod 400 /opt/iredapd/settings.py 第8步:在计算机或移动设备上使用邮件客户端 启动你的桌面电子邮件客户端,比如Mozilla Thunderbird,并添加一个邮件帐户。如果Thunderbird发现您的邮件服务器配置如下,只需单击“完成”按钮,您就可以阅读和发送电子邮件。 如果Thunderbird没有找到您的邮件服务器配置,请单击手动配置按钮输入您的邮件服务器详细信息。 在“传入服务器”部分,选择IMAP协议,输入mail。你的领域。com作为服务器名,选择端口143和STARTTLS。选择普通密码作为身份验证方法。 在“发送”部分,选择SMTP协议,输入mail。你的领域。com作为服务器名,选择端口587和STARTTLS。选择普通密码作为身份验证方法。 提示:您还可以在端口993上使用带有SSL/TLS加密的IMAP。 故障2阻止您自己的IP地址 如果您犯了一个错误,多次登录邮件服务器失败,那么邮件服务器上的Fail2ban服务可能会阻止您的IP地址。你可以通过编辑监狱将你的IP地址添加到白名单中。本地文件。 sudo nano /etc/fail2ban/jail.local 将您自己的IP地址添加到忽略列表中,如下所示。将12.34.56.78替换为您的真实IP地址。 ignoreip = 12.34.56.78 127.0.0.1 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 保存并关闭文件。然后重启Fail2ban。 sudo systemctl restart fail2ban 第9步:提高电子邮件交付能力 为了防止您的电子邮件被标记为垃圾邮件,您应该设置PTR、SPF、DKIM和DMARC记录。 PTR记录 指针记录或PTR记录将IP地址映射到FQDN(完全限定域名)。它与A记录相对应,用于反向DNS查找,这有助于阻止垃圾邮件发送者。如果没有找到发送服务器的PTR记录,许多SMTP服务器会拒绝电子邮件。 要检查PTR记录中的IP地址,请运行以下命令: dig -x IP-address +short 或 host IP-address PTR记录不由您的域注册器管理。它由提供IP地址的人管理。由于您从主机提供商或ISP获得IP地址,而不是从域注册商获得,因此您必须在主机提供商的控制面板中为您的IP设置PTR记录,或者询问ISP。它的值应该是邮件服务器的主机名:mail。你的领域。通用域名格式。如果您的服务器使用IPv6地址,请确保也为您的IPv6地址添加PTR记录。 要编辑Kamatera VP的反向DNS记录,请登录Kamatera客户端区域,然后打开支持票证,告诉他们为服务器IP地址添加PTR记录,以将IP地址指向邮件。你的领域。通用域名格式。你可能会想,这并不方便,但这是为了让垃圾邮件发送者远离平台,因此像我们这样的合法电子邮件发送者将拥有良好的IP声誉。 SPF记录 SPF(发件人策略框架)记录指定允许哪些主机或IP地址代表域发送电子邮件。您应该只允许您自己的电子邮件服务器或ISP的服务器为您的域发送电子邮件。在DNS管理界面中,创建一个新的TXT记录,如下所示。 哪里: TXT表示这是一条TXT记录。 在名称字段中输入@代表主域名。 v=spf1表示这是一条SPF记录,版本为spf1。 mx意味着mx记录中列出的所有主机都被允许为您的域发送电子邮件,而所有其他主机都被禁止。 ~all表示来自您域的电子邮件应该只来自SPF记录中指定的主机。来自其他主机的电子邮件将被标记为伪造。 要检查您的SPF记录是否传播到公共互联网,您可以在Linux机器上使用dig实用程序,如下所示: dig your-domain.com txt txt选项告诉dig我们只想查询txt记录。 DKIM记录 DKIM(DomainKeys Identified Mail)使用私钥对从您的域发送的电子邮件进行数字签名。接收SMTP服务器使用在DNS DKIM记录中发布的公钥验证签名。 iRedMail脚本会自动为服务器配置DKIM。唯一要做的就是在DNS管理器中创建DKIM记录。运行以下命令以显示DKIM公钥。 sudo amavisd -c /etc/amavisd/amavisd.conf showkeys DKIM公钥在括号中。 然后在DNS管理器中,创建一个TXT记录,输入dkim_名称字段中的domainkey。复制括号中的所有内容并粘贴到值字段中。删除所有双引号和换行符。 保存更改后,运行以下命令测试DKIM记录是否正确。 sudo amavisd -c /etc/amavisd/amavisd.conf testkeys 如果DKIM记录正确,测试将通过。 TESTING#1 linuxbabe.com: dkim._domainkey.linuxbabe.com => pass 请注意,您的DKIM记录可能需要一些时间才能传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://www.dmarcanalyzer.com/dkim/dkim-check/,输入dkim作为选择器,并输入您的域名以检查dkim记录传播。 DMARC记录 DMARC代表基于域的消息身份验证、报告和一致性。DMARC可以帮助接收电子邮件服务器识别合法电子邮件,并防止电子邮件欺骗使用您的域名。 要创建DMARC记录,请转到DNS管理器并添加TXT记录。在名称字段中,输入_dmarc。在“值”字段中,输入以下内容。(您应该创建[email ;protected]电子邮件地址。) v=DMARC1; p=none; pct=100; rua=mailto:[email protected] 上述DMARC记录是一个安全的起点。如果你想阅读DMARC的完整解释,请查看以下文章。请注意,这是可选的。 创建DMARC记录以保护您的域名免受电子邮件欺骗 第10步:测试电子邮件分数和位置 创建PTR、SPF、DKIM记录后,转到https://www.mail-tester.com.你会看到一个独特的电子邮件地址。从你的域名发送电子邮件到此地址,然后检查你的分数。如你所见,我得了满分。在测试结果中,您应该检查您的PTR记录、SPF和DKIM记录是否有效。 邮件测试员。com只能显示发件人分数。还有另一个名为GlockApps的服务,可以让你检查你的电子邮件是否被放在收件人的收件箱或垃圾邮件文件夹中,或者被直接拒绝。它支持许多流行的电子邮件提供商,如Gmail、Outlook、Hotmail、YahooMail、iCloud mail等。 如果你的电子邮件仍被标记为垃圾邮件呢? 在这篇文章中,我有更多提示:如何阻止你的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 如果您的电子邮件被Microsoft邮箱拒绝怎么办? 微软似乎正在使用一个内部黑名单来屏蔽许多合法的IP地址。如果您的电子邮件被Outlook或Hotmail拒绝,您需要提交发件人信息表。之后,Outlook/Hotmail将接受您的电子邮件。 添加多个邮件域 我写这篇文章是为了向您展示如何在iRedMail中添加多个邮件域。 启用SMTPS端口465 如果要使用Microsoft Outlook客户端,则需要在Postfix SMTP服务器中启用SMTPS端口465。 故障排除 首先,请使用至少4GB内存的VPS。在1GB RAM VPS上运行iRedMail会导致数据库、SpamAssassin或ClamAV因内存不足而被终止。如果你真的想使用1GB内存的VPS,你会丢失收到的电子邮件,并有其他不良后果。 如果无法访问iRedMail web界面,如502网关错误,则应检查/var/log/Nginx/目录中的Nginx日志以找到线索。您可能还需要检查邮件日志/var/log/maillog。 检查各种服务是否正在运行。 systemctl status postfix systemctl status dovecot systemctl status nginx systemctl status mariadb systemctl status [email protected] systemctl status amavisd 如果启用了防火墙,则应在防火墙中打开以下端口。 HTTP port: 80 HTTPS port: 443 SMTP port: 25 Submission port: 587 (and 465 if you are going to use Microsoft Outlook mail client) IMAP port: 143 and 993 如果你想使用UFW防火墙,请查看我的指南:Debian和Ubuntu上的UFW防火墙入门。 如何更新TLS证书 让我们加密颁发的TLS证书仅在90天内有效,设置Cron作业以自动续订证书非常重要。您可以运行以下命令来续订证书。 sudo certbot renew -w /var/www/html 您可以使用--dry run选项来测试更新过程,而不是进行真正的更新。 sudo certbot renew -w /var/www/html --dry-run 如果在续订TLS证书时看到以下错误。 The client lacks sufficient authorization :: Invalid response 然后需要创建隐藏目录。 sudo mkdir -p /var/www/html/.well-known/acme-challenge 并将www数据设置为webroot的所有者。 sudo chown www-data:www-data /var/www/html/ -R 另外,编辑SSL虚拟主机/etc/nginx/sites enabled/00默认SSL。conf.添加以下行。 location ~ /.well-known/acme-challenge { root /var/www/html/; allow all; } 保存并关闭文件。测试Nginx配置并重新加载。 sudo nginx -t sudo systemctl reload nginx 创建Cron作业 如果现在试运行成功,您可以创建Cron作业来自动续订证书。只需打开root用户的crontab文件。 sudo crontab -e 然后在文件底部添加以下行。 @daily certbot renew -w /var/www/html/ --quiet && systemctl reload postfix dovecot nginx 重新加载Postfix、Dovecot和Nginx是使这些程序获取新证书和私钥所必需的。 面向高级用户 您可能需要自定义SpamAssassin内容过滤器,以便更好地检测垃圾邮件。 通过检查Postfix/SpamAssassin中的标题和正文来阻止垃圾邮件 如果您的网站和邮件服务器运行在两个不同的VP(虚拟专用服务器)上,您可以在网站和邮件服务器之间设置SMTP中继,以便您的网站可以通过邮件服务器发送电子邮件。请参阅下面的文章。 在CentOS/RHEL上的2台后缀SMTP服务器之间设置SMTP中继 收尾 就这样!我希望本教程能帮助您使用iRedMail在CentOS 7上设置邮件服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:72
  • 如何使用iRedMail在Ubuntu20.04上轻松设置完整的邮件服务器

    在Linux上从头开始设置自己的电子邮件服务器是一个漫长而乏味的过程,如果你不是高级用户,这将是一个痛苦的过程。本教程将向您展示如何使用iRedMail在Ubuntu20.04上快速设置一个功能齐全的邮件服务器,为您节省大量时间和麻烦。 什么是iRedMail? iRedMail是一个shell脚本,可以在Linux/BSD服务器上自动安装和配置所有必要的邮件服务器组件,从而消除手动安装和配置。使用iRedMail,您可以在基于web的管理面板中轻松创建无限邮箱和无限邮件域。邮箱可以存储在MariaDB/MySQL、PostgreSQL数据库或OpenLDAP中。以下是iRedMail将自动安装和配置的开源软件列表。 后缀SMTP服务器 Dovecot IMAP服务器 Nginx web服务器为管理面板和webmail提供服务 用于存储用户信息的OpenLDAP、MySQL/MariaDB或PostgreSQL 一个用于DKIM签名和验证的新版本 SpamAssassin用于反垃圾邮件 ClamAV用于抗病毒 Roundcube网络邮件 SOGo群件,提供网络邮件、日历(CalDAV)、联系人(CardDAV)、任务和ActiveSync服务。 用于保护SSH的Fail2ban 邮件列表管理器 Netdata服务器监控 iRead Postfix策略服务器用于GreyList 第一步:选择合适的主机提供商并购买域名 要使用iRedMail设置一个功能齐全的电子邮件服务器,您需要一个至少有3GB内存的服务器,因为安装后,您的服务器将使用超过2GB的内存。 强烈建议您在Ubuntu 20.04服务器的干净安装上安装iRedMail。 本教程是在每月9美元的Kamatera VPS(虚拟专用服务器)上完成的,该服务器具有1个CPU和3GB RAM。他们提供30天的免费试用期。 Kamatera是运行邮件服务器的一个非常好的选择,因为 它们不会阻止端口25,因此您可以发送无限量的电子邮件(事务性电子邮件和时事通讯),而无需在SMTP中继服务上花钱。Kamatera没有任何SMTP限制。你每天可以发送一百万封电子邮件。 IP地址不在任何电子邮件黑名单上。(至少对我来说是这样。我选择了达拉斯数据中心。)你肯定不想被列入可怕的微软Outlook IP黑名单或spamrats黑名单。有些黑名单会屏蔽整个IP范围,你无法从此类黑名单中删除你的IP地址。 您可以编辑PTR记录以提高电子邮件的可交付性。 它们允许你向你的电子邮件订阅者发送时事通讯,而不受每小时或每天的限制。 您可以为一台服务器订购多个IP地址。这对需要发送大量电子邮件的人非常有用。您可以在多个IP地址上传播电子邮件流量,以实现更好的电子邮件交付。 其他VPS提供商,如DigitalOcean阻止了端口25。DigitalOcean不会解锁端口25,因此您需要设置SMTP中继以绕过阻止,这可能会增加您的费用。如果您使用Vultr VPS,则默认情况下端口25被阻止。如果您打开支持票证,他们可以解除阻止,但如果他们决定不允许您的电子邮件发送活动,他们可能会在任何时候再次阻止。如果你使用他们的服务器发送时事通讯,Vultr实际上可能会重新阻止它。 转到Kamatera网站创建帐户,然后在帐户仪表板中创建服务器。 我建议遵循下面链接的教程,在Kamatera上正确设置Linux VPS服务器。 如何在Kamatera上创建Linux VPS服务器 创建服务器后,Kamatera将向您发送一封包含服务器SSH登录详细信息的电子邮件。要登录到服务器,可以使用SSH客户端。如果您在计算机上使用Linux或macOS,只需打开一个终端窗口并运行以下命令即可登录服务器。将12.34.56.78替换为服务器的IP地址。 ssh [email protected] 系统将要求您输入密码。 你还需要一个域名。我从namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。 第2步:创建DNS MX记录 MX记录指定哪个或多个主机处理特定域名的电子邮件。例如,为linuxbabe处理电子邮件的主机。com是邮件。利努克斯宝贝。通用域名格式。如果拥有Gmail账户的人向[email&#160;protected]发送电子邮件,Gmail服务器将查询linuxbabe的MX记录。通用域名格式。当它发现那封邮件。利努克斯宝贝。com负责接收电子邮件,然后查询邮件记录。利努克斯宝贝。com获取IP地址,从而可以发送电子邮件。 你需要去你的DNS托管服务(通常是你的域名注册)创建DNS记录。在DNS管理器中,为域名创建MX记录。在名称字段中输入@代表主域名,然后输入mail。你的领域。com在值字段中。 注意:MX记录的主机名不能是其他名称的别名。此外,强烈建议您使用主机名,而不是MX记录的裸IP地址。 DNS管理员可能会要求您输入首选项值(也称为优先级值)。它可以是0到65356之间的任何数字。小数字的优先级高于大数字。建议将该值设置为0,以便此邮件服务器具有接收电子邮件的最高优先级。创建MX记录后,还需要为邮件创建一个记录。你的领域。com,以便将其解析为IP地址。如果您的服务器使用IPv6地址,请确保添加AAAA记录。 提示:如果使用Cloudflare DNS服务,则在创建邮件记录时不应启用CDN功能。你的领域。通用域名格式。Cloudflare不支持SMTP代理。 第3步:配置主机名 通过SSH登录服务器,然后运行以下命令更新现有软件包。 sudo apt update sudo apt upgrade -y 在升级过程中,它可能会问您以下问题。如果要继续使用端口6543进行SSH,请选择保持当前安装的本地版本。如果您想将端口22用于SSH,那么选择install the package maintainer's version(安装软件包维护者版本)。 我强烈建议创建一个sudo用户来管理服务器,而不是使用默认的root用户。运行以下命令创建用户。将用户名替换为首选用户名。 adduser username 然后将用户添加到sudo组。 adduser username sudo 切换到新用户。 su - username 接下来,使用以下命令为服务器设置完全限定的域名(FQDN)。 sudo hostnamectl set-hostname mail.your-domain.com 我们还需要使用命令行文本编辑器(如Nano)更新/etc/hosts文件。 sudo nano /etc/hosts 像下面那样编辑它。(使用箭头键在文件中移动光标。) 127.0.0.1 mail.your-domain.com localhost 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要关闭文件,请按Ctrl+X。) 要查看更改,请重新登录,然后运行以下命令查看主机名。 hostname -f 第4步:使用iRedMail在Ubuntu20.04上设置邮件服务器 运行以下命令从其Github存储库下载最新版本的iRedMail脚本安装程序。 wget https://github.com/iredmail/iRedMail/archive/1.5.0.tar.gz 提取存档文件。 tar xvf 1.5.0.tar.gz 然后将cd放入新创建的目录中。 cd iRedMail-1.5.0/ 向iRedMail添加可执行权限。sh脚本。 chmod +x iRedMail.sh 接下来,使用sudo权限运行Bash脚本。 sudo bash iRedMail.sh 邮件服务器安装向导将出现。使用Tab键选择Yes,然后按Enter键。 下一个屏幕将要求您选择邮件存储路径。您可以使用默认路径:/var/vmail,只需按Enter键即可。 然后选择是否要运行web服务器。强烈建议您选择运行web服务器,因为您需要基于web的管理面板来添加电子邮件帐户。此外,它还允许您访问Roundcube网络邮件。默认情况下,Nginx web服务器处于选中状态,因此只需按Enter键即可。(星号表示该项目已被选中。) 然后为电子邮件帐户选择存储后端。选择一个你熟悉的。本教程选择了MariaDB。按向上和向下箭头键,然后按空格键进行选择。 如果选择了MariaDB或MySQL,则需要设置MySQL根密码。 接下来,输入您的第一个邮件域。您可以稍后在基于web的管理面板中添加其他邮件域。本教程假设您想要一个像[email&#160;protected]这样的电子邮件帐户。在这种情况下,你需要进入你的域名。com在这里,没有子域。不要在域名后按空格键。我认为iRedMail会将空格字符与域名一起复制,这可能会导致安装失败。 接下来,为邮件域管理员设置密码。 选择可选组件。默认情况下,选择4个项目。如果您想使用SOGo群件(网络邮件、日历、通讯簿、ActiveSync),请按向下箭头键和空格键进行选择。按Enter键进入下一个屏幕。 现在,您可以查看您的配置。键入Y开始安装所有邮件服务器组件。 在安装结束时,选择y以使用iRedMail提供的防火墙规则并重新启动防火墙。 现在iRedMail安装完成了。您将收到webmail的URL、web管理面板和登录凭据的通知。iRedMail。提示文件包含有关iRedMail服务器的重要信息。 重新启动Ubuntu 20.04服务器。 sudo shutdown -r now 服务器重新联机后,您可以访问web管理面板。 https://mail.your-domain.com/iredadmin/ 注意,在上面的URL中,访问管理面板的子目录是/IREDAMIN/,而不是/iredmail/。因为它使用的是自签名TLS证书,所以需要在web浏览器中添加安全异常。 步骤5:安装Let's Encrypt TLS证书 由于邮件服务器正在使用自签名TLS证书,桌面邮件客户端用户和webmail客户端用户都将看到警告。为了解决这个问题,我们可以获得并安装免费的Let's Encrypt TLS证书。 获取证书 首先,通过SSH再次登录服务器,并运行以下命令在Ubuntu 20.04上安装Let's Encrypt(certbot)客户端。 sudo apt install certbot iRedMail已经在默认的Nginx虚拟主机中配置了TLS设置,因此我建议使用webroot插件而不是Nginx插件来获取证书。运行以下命令。用实际数据替换红色文本。 sudo certbot certonly --webroot --agree-tos --email [email protected] -d mail.your-domain.com -w /var/www/html/ 当它询问您是否希望接收EFF的通信时,您可以选择否。 如果一切顺利,您将看到以下文本,表明您已成功获得TLS证书。您的证书和链已保存在/etc/letsencrypt/live/mail。你的领域。com/directory。 未能获得TLS证书 如果certbot无法获得TLS证书,可能是因为您的DNS记录没有传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://dnsmap.io,输入邮件服务器的主机名(mail.your domain.com)以检查DNS传播。 如果certbot无法获取证书,并且您看到以下消息, Failed authorization procedure. mail.linuxbabe.com (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching : Timeout during connect (likely firewall problem) 这可能是因为你创造了AAAA的邮件记录。你的领域。com,但Nginx web服务器不监听IPv6地址。要修复此错误,请编辑/etc/nginx/sites enabled/00默认值。配置文件 sudo nano /etc/nginx/sites-enabled/00-default.conf 找到下面这行。 #listen [::]:80; 删除#字符以为此Nginx虚拟主机启用IPv6。 listen [::]:80; 保存并关闭文件。然后编辑SSL虚拟主机/etc/nginx/sites enabled/00默认SSL。形态。 sudo nano /etc/nginx/sites-enabled/00-default-ssl.conf 添加以下行。 listen [::]:443 ssl http2; 保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl reload nginx 再次运行以下命令以获取TLS证书。用实际数据替换红色文本。 sudo certbot certonly --webroot --agree-tos --email [email protected] -d mail.your-domain.com -w /var/www/html/ 现在您应该能够成功获得TLS证书。 在Nginx中安装证书 获得TLS证书后,让我们配置Nginx web服务器以使用它。编辑SSL模板文件。 sudo nano /etc/nginx/templates/ssl.tmpl 找到下面两行。 ssl_certificate /etc/ssl/certs/iRedMail.crt; ssl_certificate_key /etc/ssl/private/iRedMail.key; 替换为: ssl_certificate /etc/letsencrypt/live/mail.your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mail.your-domain.com/privkey.pem; 保存并关闭文件。然后测试nginx配置并重新加载。 sudo nginx -t sudo systemctl reload nginx 再次访问iRedMail管理面板,您的web浏览器将不再警告您,因为Nginx现在使用的是有效的TLS证书。 在Postfix和Dovecot中安装TLS证书 我们还需要配置Postfix SMTP服务器和Dovecot IMAP服务器来使用Let's Encrypt颁发的证书,这样桌面邮件客户端就不会显示安全警告。编辑Postfix的主配置文件。 sudo nano /etc/postfix/main.cf 找到下面三行。(第95、96、97行)。 smtpd_tls_key_file = /etc/ssl/private/iRedMail.key smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crt 替换为: smtpd_tls_key_file = /etc/letsencrypt/live/mail.your-domain.com/privkey.pem smtpd_tls_cert_file = /etc/letsencrypt/live/mail.your-domain.com/cert.pem smtpd_tls_CAfile = /etc/letsencrypt/live/mail.your-domain.com/chain.pem 保存并关闭文件。然后重新加载后缀。 sudo systemctl reload postfix 接下来,编辑Dovecot的主配置文件。 sudo nano /etc/dovecot/dovecot.conf 好的,下面两行。(第47、48行) ssl_cert = </etc/ssl/certs/iRedMail.crt ssl_key = </etc/ssl/private/iRedMail.key 替换为: ssl_cert = </etc/letsencrypt/live/mail.your-domain.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.your-domain.com/privkey.pem 保存并关闭文件。然后重新装好多佛科特。 sudo systemctl reload dovecot 从现在起,桌面邮件用户将不会看到安全警告。 第6步:发送测试电子邮件 使用邮政局长邮件帐户([email&#160;protected])登录iredadmin面板。在“添加”选项卡中,可以添加其他域或电子邮件地址。 如果您看到“无控制域”错误,请参阅本文。 创建用户后,您可以访问Roundcube webmail地址,并使用新的邮件用户帐户登录。 https://mail.your-domain.com/mail/ 现在,您可以测试电子邮件的发送和接收。请注意,您可能需要等待几分钟才能收到电子邮件,因为iRedMail默认情况下会启用灰色列表,这是一种通知其他发送SMTP服务器在几分钟后重试的方式。邮件日志文件/var/log/mail中的以下行。日志表明已启用灰色列表。 Recipient address rejected: Intentional policy rejection, please try again later; 添加交换空间 ClamAV用于扫描电子邮件中的病毒。ClamAV可以使用相当数量的RAM。如果您的服务器上没有足够的RAM,ClamAV将无法正常工作,这将阻止您的邮件服务器发送电子邮件。您可以向服务器添加交换文件,以增加服务器上的总RAM。(请注意,在服务器上使用交换空间会降低服务器性能。如果希望获得更好的性能,应升级物理RAM,而不是使用交换空间。) 要在服务器上添加交换空间,首先,使用fallocate命令创建一个文件。例如,在根文件系统中创建一个名为swapfile、容量为1G的文件: sudo fallocate -l 1G /swapfile 然后确保只有root用户可以读写它。 sudo chmod 600 /swapfile 将其格式化为交换: sudo mkswap /swapfile 输出: Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=0aab5886-4dfb-40d4-920d-fb1115c67433 启用交换文件 sudo swapon /swapfile 要在系统启动时装载交换空间,请编辑/etc/fstab文件。 sudo nano /etc/fstab 在该文件底部添加以下行。 /swapfile swap swap defaults 0 0 保存并关闭文件。然后重新加载systemd并重新启动ClamAV。 sudo systemctl daemon-reload sudo systemctl restart clamav-daemon 步骤7:检查端口25(出站)是否被阻止 您的ISP或主机服务提供商不会阻止与服务器端口25的传入连接,这意味着您可以接收来自其他邮件服务器的电子邮件。然而,许多ISP/主机提供商会阻止与其他邮件服务器端口25的传出连接,这意味着您无法发送电子邮件。 如果你的电子邮件没有到达你的其他电子邮件地址,比如Gmail,那么在你的邮件服务器上运行以下命令,检查端口25(出站)是否被阻止。 telnet gmail-smtp-in.l.google.com 25 如果未被阻止,您将看到如下消息,这表明已成功建立连接。(提示:输入quit并按Enter键关闭连接。) Trying 74.125.68.26... Connected to gmail-smtp-in.l.google.com. Escape character is '^]'. 220 mx.google.com ESMTP y22si1641751pll.208 - gsmtp 如果端口25(出站)被阻止,您将看到如下情况: Trying 2607:f8b0:400e:c06::1a... Trying 74.125.195.27... telnet: Unable to connect to remote host: Connection timed out 在这种情况下,您的Postfix无法向其他SMTP服务器发送电子邮件。请您的ISP/主机提供商为您打开它。如果他们拒绝您的请求,您需要设置SMTP中继以绕过端口25阻塞。 还是不能发邮件? 如果端口25(出站)未被阻止,但您仍然无法从自己的邮件服务器向Gmail等其他电子邮件地址发送电子邮件,那么您应该检查邮件日志(/var/log/mail.log)。 sudo nano /var/log/mail.log 例如,有些人可能会在文件中看到以下几行。 host gmail-smtp-in.l.google.com[2404:6800:4003:c03::1b] said: 550-5.7.1 [2a0d:7c40:3000:b8b::2] Our system has detected that 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR 550-5.7.1 records and authentication. Please review 550-5.7.1 for more information 这意味着您的邮件服务器正在使用IPv6发送电子邮件,但您没有设置IPv6记录。你应该去你的DNS管理员那里,为邮件设置AAAA记录。你的领域。com,那么您应该为IPv6地址设置PTR记录,这将在步骤9中讨论。 第8步:在计算机或移动设备上使用邮件客户端 启动你的桌面电子邮件客户端,比如Mozilla Thunderbird,并添加一个邮件帐户。 在“传入服务器”部分,选择IMAP协议,输入mail。你的领域。com作为服务器名,选择端口143和STARTTLS。选择普通密码作为身份验证方法。 在“发送”部分,选择SMTP协议,输入mail。你的领域。com作为服务器名,选择端口587和STARTTLS。选择普通密码作为身份验证方法。 故障2阻止您自己的IP地址 如果您犯了一个错误,多次登录邮件服务器失败,那么邮件服务器上的Fail2ban服务可能会阻止您的IP地址。你可以通过编辑监狱将你的IP地址添加到白名单中。本地文件。 sudo nano /etc/fail2ban/jail.local 将您自己的IP地址添加到忽略列表中,如下所示。将12.34.56.78替换为您的真实IP地址。 ignoreip = 12.34.56.78 127.0.0.1 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 保存并关闭文件。然后重启Fail2ban。 sudo systemctl restart fail2ban 第9步:提高电子邮件交付能力 为了防止您的电子邮件被标记为垃圾邮件,您应该设置PTR、SPF、DKIM和DMARC记录。 PTR记录 指针记录或PTR记录将IP地址映射到FQDN(完全限定域名)。它与A记录相对应,用于反向DNS查找,这有助于阻止垃圾邮件发送者。如果没有找到发送服务器的PTR记录,许多SMTP服务器会拒绝电子邮件。 要检查PTR记录中的IP地址,请运行以下命令: dig -x IP-address +short 或 host IP-address PTR记录不由您的域注册器管理。它由提供IP地址的组织管理。因为您从主机提供商或ISP获得IP地址,而不是从域注册商获得,所以您必须在主机提供商的控制面板中为您的IP设置PTR记录,或者询问ISP。它的值应该是邮件服务器的主机名:mail。你的领域。通用域名格式。如果您的服务器使用IPv6地址,请确保也为您的IPv6地址添加PTR记录。 要编辑Kamatera VP的反向DNS记录,请登录Kamatera客户端区域,然后打开支持票证,告诉他们为服务器IP地址添加PTR记录,以将IP地址指向邮件。你的领域。通用域名格式。你可能会想,这并不方便,但这是为了让垃圾邮件发送者远离平台,因此像我们这样的合法电子邮件发送者将拥有良好的IP声誉。 SPF记录 SPF(发件人策略框架)记录指定允许哪些主机或IP地址代表域发送电子邮件。您应该只允许您自己的电子邮件服务器或ISP的服务器为您的域发送电子邮件。在DNS管理界面中,创建一个新的TXT记录,如下所示。 说明: TXT表示这是一条TXT记录。 在名称字段中输入@代表主域名。 v=spf1表示这是一条SPF记录,版本为spf1。 mx意味着mx记录中列出的所有主机都被允许为您的域发送电子邮件,而所有其他主机都被禁止。 ~all表示来自您域的电子邮件应该只来自SPF记录中指定的主机。来自其他主机的电子邮件将被标记为伪造。 要检查您的SPF记录是否传播到公共互联网,您可以在Linux机器上使用dig实用程序,如下所示: dig your-domain.com txt txt选项告诉dig我们只想查询txt记录。 DKIM记录 DKIM(DomainKeys Identified Mail)使用私钥对从您的域发送的电子邮件进行数字签名。接收SMTP服务器使用在DNS DKIM记录中发布的公钥验证签名。 iRedMail脚本会自动为服务器配置DKIM。唯一要做的就是在DNS管理器中创建DKIM记录。运行以下命令以显示DKIM公钥。 sudo amavisd-new showkeys DKIM公钥在括号中。 然后在DNS管理器中,创建一个TXT记录,输入dkim_名称字段中的domainkey。复制括号中的所有内容并粘贴到值字段中。删除所有双引号和换行符。 保存更改后,运行以下命令测试DKIM记录是否正确。 sudo amavisd-new testkeys 如果DKIM记录正确,测试将通过。 TESTING#1 linuxbabe.com: dkim._domainkey.linuxbabe.com => pass 请注意,您的DKIM记录可能需要一些时间才能传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://www.dmarcanalyzer.com/dkim/dkim-check/,输入dkim作为选择器,并输入您的域名以检查dkim记录传播。 DMARC记录 DMARC代表基于域的消息身份验证、报告和一致性。DMARC可以帮助接收电子邮件服务器识别合法电子邮件,并防止电子邮件欺骗使用您的域名。 要创建DMARC记录,请转到DNS管理器并添加TXT记录。在名称字段中,输入_dmarc。在“值”字段中,输入以下内容。(您应该创建[email&#160;protected]电子邮件地址。) v=DMARC1; p=none; pct=100; rua=mailto:[email protected] 上述DMARC记录是一个安全的起点。如果你想阅读DMARC的完整解释,请查看以下文章。请注意,这是可选的。 创建DMARC记录以保护您的域名免受电子邮件欺骗 第10步:测试电子邮件分数和位置 创建PTR、SPF、DKIM记录后,转到https://www.mail-tester.com.你会看到一个独特的电子邮件地址。从你的域名发送电子邮件到此地址,然后检查你的分数。如你所见,我得了满分。在测试结果中,您应该检查您的PTR记录、SPF和DKIM记录是否有效。 邮件测试员。com只能显示发件人分数。还有另一个名为GlockApps的服务,可以让你检查你的电子邮件是否被放在收件人的收件箱或垃圾邮件文件夹中,或者被直接拒绝。它支持许多流行的电子邮件提供商,如Gmail、Outlook、Hotmail、YahooMail、iCloud mail等。 如果你的电子邮件仍被标记为垃圾邮件呢? 在这篇文章中,我有更多提示:如何阻止你的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 如果您的电子邮件被Microsoft邮箱拒绝怎么办? 微软似乎正在使用一个内部黑名单来屏蔽许多合法的IP地址。如果您的电子邮件被Outlook或Hotmail拒绝,您需要提交发件人信息表。之后,Outlook/Hotmail将接受您的电子邮件。 添加多个邮件域 我写这篇文章是为了向您展示如何在iRedMail中添加多个邮件域。 如何禁用灰色列表 默认情况下,iRedMail已启用GreyList,这会告诉其他发送SMTP的服务器在几分钟后重试。这主要有助于阻止垃圾邮件,但也会降低用户体验。如果您希望禁用灰色列表,请按照以下说明操作。 向/opt/iredapd/settings添加写入权限。py文件。 sudo chmod 600 /opt/iredapd/settings.py 然后编辑配置文件。 sudo nano /opt/iredapd/settings.py 找到下面这行。 plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"] 从列表中删除“灰色列表”。保存并关闭文件。然后重新启动iRedApp。 sudo systemctl restart iredapd 将配置文件更改回只读模式。 sudo chmod 400 /opt/iredapd/settings.py 启用SMTPS端口465 如果要使用Microsoft Outlook客户端,则需要在Postfix SMTP服务器中启用SMTPS端口465。 故障排除 首先,请使用至少4GB内存的VPS。在1GB RAM VPS上运行iRedMail会导致数据库、SpamAssassin或ClamAV因内存不足而被终止。如果你真的想使用1GB内存的VPS,你会丢失收到的电子邮件,并有其他不良后果。 如果无法访问iRedMail web界面,如502网关错误,则应检查/var/log/Nginx/目录中的Nginx日志以找到线索。您可能还需要检查邮件日志/var/log/mail。日志 检查各种服务是否正在运行。 systemctl status postfix systemctl status dovecot systemctl status nginx systemctl status mariadb systemctl status clamav-daemon systemctl status amavis 如果启用了防火墙,则应在防火墙中打开以下端口。 HTTP port: 80 HTTPS port: 443 SMTP port: 25 Submission port: 587 (and 465 if you are going to use Microsoft Outlook mail client) IMAP port: 143 and 993 如果你想使用UFW防火墙,请查看我的指南:Debian和Ubuntu上的UFW防火墙入门。 如何更新TLS证书 让我们加密颁发的TLS证书仅在90天内有效,设置Cron作业以自动续订证书非常重要。您可以运行以下命令来续订证书。 sudo certbot renew -w /var/www/html/ 您可以使用--dry run选项来测试更新过程,而不是进行真正的更新。 sudo certbot renew -w /var/www/html/ --dry-run 如果在续订TLS证书时看到以下错误。 The client lacks sufficient authorization :: Invalid response 然后需要创建隐藏目录。 sudo mkdir -p /var/www/html/.well-known/acme-challenge 并将www数据设置为webroot的所有者。 sudo chown www-data:www-data /var/www/html/ -R 另外,编辑SSL虚拟主机/etc/nginx/sites enabled/00默认SSL。conf.添加以下行。 location ~ /.well-known/acme-challenge { root /var/www/html/; allow all; } 保存并关闭文件。测试Nginx配置并重新加载。 sudo nginx -t sudo systemctl reload nginx 创建Cron作业 如果现在试运行成功,您可以创建Cron作业来自动续订证书。只需打开root用户的crontab文件。 sudo crontab -e 然后在文件底部添加以下行。 @daily certbot renew -w /var/www/html/ --quiet && systemctl reload postfix dovecot nginx 重新加载Postfix、Dovecot和Nginx是使这些程序获取新证书和私钥所必需的。 设置备份邮件服务器 主邮件服务器有时可能会关闭。如果您将邮件服务器托管在数据中心,那么停机时间非常短,因此您不必担心丢失入站邮件。如果您在家中托管邮件服务器,则无法预测停机时间,因此在数据中心运行备份邮件服务器是一种很好的做法,以防止丢失入站邮件。备份邮件服务器只需要512MB内存即可运行。请在下面的文章中查看全部细节。 如何在Ubuntu上设置带有后缀的备份电子邮件服务器(完整指南) 面向高级用户 iRedMail不包括DMARC验证服务,您可以查看以下教程来设置OpenDMARC以阻止电子邮件欺骗。 在Ubuntu上安装带有后缀的OpenDMARC,以阻止电子邮件欺骗/垃圾邮件 您可能需要自定义SpamAssassin内容过滤器,以便更好地检测垃圾邮件。 通过检查Postfix/SpamAssassin中的标题和正文来阻止垃圾邮件 如果您的网站和邮件服务器运行在两个不同的VP(虚拟专用服务器)上,您可以在网站和邮件服务器之间设置SMTP中继,以便您的网站可以通过邮件服务器发送电子邮件。请参阅下面的文章。 如何在Ubuntu上的两个Postfix SMTP服务器之间设置SMTP中继 收尾 就这样!我希望本教程能帮助你用iRedMail在Ubuntu20.04上安装邮件服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:58
  • 如何使用Nginx在iRedMail中托管多个邮件域

    本教程将向您展示如何使用iRedMail设置多个电子邮件域(虚拟主机),这是一种设置您自己的电子邮件服务器的简单方法。 先决条件 为了学习本教程,假设 您已经用一个域设置了一个iRedMail服务器。 您使用的是iRedMail 0.9.8或更高版本,它使用Nginx来服务webmail。版本0.9.8中删除了对Apache web服务器的支持。 你需要做什么 如果你想托管多个邮件域,那么你需要 在iRedMail管理面板中添加新的邮件域和用户。 为新邮件域创建MX、A和SPF记录。 为其他域设置DKIM签名 为新域设置DMARC记录。 为多个域设置RoundCube Webmail、Postfix和Dovecot 反向DNS检查用于检查发送方的IP地址是否与HELO主机名匹配。添加新邮件域时,无需添加其他PTR记录。 步骤1:在iRedMail管理面板中添加其他域 使用邮局主管帐户登录iRedMail管理面板。(https://mail.your-domain.com/iredadmin)然后在添加选项卡中添加域。 接下来,在新域下添加一个用户。 步骤2:为新邮件域创建MX、A和SPF记录 在DNS管理器中,为新域添加MX记录,如下所示。 Record Type    Name      Value MX   @ mail.domain2.com A记录指向邮件服务器的IP地址。 Record Type Name Value A mail IP-address-of-mail-server 如果您的服务器使用IPv6地址,请确保添加AAAA记录。 然后创建SPF记录,以允许MX主机为新邮件域发送电子邮件。 Record Type Name Value TXT   @   v=spf1 mx ~all 步骤3:为新域设置DKIM签名 你需要告诉amavisd为新邮件域的每封发送邮件签名。编辑/etc/amavis/conf.d/50-user文件。 sudo nano /etc/amavis/conf.d/50-user 找到下面一行, dkim_key('domain1.com', 'dkim', '/var/lib/dkim/domain1.com.pem'); 添加另一行以指定第二个域的私钥的位置。 dkim_key('domain2.com', 'dkim', '/var/lib/dkim/domain2.com.pem'); 在@dkim_signature_options_bysender_maps部分,添加以下行。 "domain2.com" => { d => "domain2.com", a => 'rsa-sha256', ttl => 10*24*3600 }, 保存并关闭文件。然后为第二个域生成私钥。 sudo amavisd-new genrsa /var/lib/dkim/domain2.com.pem 2048 重启阿玛维斯。 sudo systemctl restart amavis 显示公共密钥。 sudo amavisd-new showkeys 将显示所有公钥。我们需要第二个域的公钥,它在括号中。 在DNS管理器中,为第二个域创建一个TXT记录。进入dkim_名称字段中的domainkey。复制括号中的所有内容并粘贴到值字段中。删除所有双引号。(您可以先将其粘贴到文本编辑器中,删除所有双引号,然后将其复制到DNS管理器。DNS管理器可能会要求您删除其他无效字符,例如回车符。) 保存更改后。用这个命令检查TXT记录。 dig TXT dkim._domainkey.domain2.com 现在,您可以运行以下命令来测试您的DKIM DNS记录是否正确。 sudo amavisd-new testkeys 如果DNS记录正确,测试将通过。 TESTING#1 domain1.com: dkim._domainkey.domain1.com => pass TESTING#2 domain2.com: dkim._domainkey.domain2.com => pass 请注意,您的DKIM记录可能需要一些时间才能传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://www.dmarcanalyzer.com/dkim/dkim-check/,输入dkim作为选择器,并输入您的域名以检查dkim记录传播。 步骤4:为新域设置DMARC记录 要创建DMARC记录,请转到DNS管理器并添加TXT记录。在名称字段中,输入_dmarc。在“值”字段中,输入以下内容: v=DMARC1; p=none; pct=100; rua=mailto:[email protected] 上述DMARC记录是一个安全的起点。要查看DMARC的完整解释,请查看以下文章。 创建DMARC记录以保护您的域名免受电子邮件欺骗 第5步:为多个域设置RoundCube、Postfix和Dovecot 让第一个域的用户使用邮件是有道理的。域1。com和第二个域的用户使用邮件。域2。com使用RoundCube webmail时。 将工作目录更改为/etc/nginx/。 cd /etc/nginx/ 在/etc/nginx/sites enabled/目录中为第二个域创建一个空白服务器块文件。 sudo touch sites-enabled/mail.domain2.com.conf 将默认HTTP站点配置复制到该文件。 cat sites-enabled/00-default.conf | sudo tee -a sites-enabled/mail.domain2.com.conf 将默认SSL站点配置复制到该文件。 cat sites-enabled/00-default-ssl.conf | sudo tee -a sites-enabled/mail.domain2.com.conf 编辑虚拟主机文件。 sudo nano sites-enabled/mail.domain2.com.conf 找到下面这行。 server_name _; 我们需要将服务器名称更改为mail。域2。com,因为稍后我们需要使用Certbot生成新的tls证书。 server_name mail.domain2.com; 服务器名称有两个实例,您需要同时更改这两个实例。保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl reload nginx 现在,使用Certbot webroot插件为所有邮件域获取TLS证书,这样您将拥有一个包含多个域名的TLS证书,邮件客户端将不会抛出安全警告。 sudo certbot certonly --webroot --agree-tos -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email your-email-address -w /var/www/html 请注意,在上面的命令中,我们使用第一个邮件域指定了证书名,该域将在文件路径中使用,因此您不必在Postfix或Dovecot配置文件中更改文件路径。 当它询问您是否要更新现有证书以包含新域时,回答U并按Enter键。 现在您应该会看到以下消息,这表明已成功获取多域证书。 如果遇到以下错误, Detail: Invalid response from [xx.xx.xx.xx]: 404 然后需要使用certbot nginx插件来获取TLS证书。 sudo apt install python3-certbot-nginx sudo certbot certonly -a nginx --agree-tos -d mail.domain1.com,mail.domain2.com --cert-name mail.domain1.com --email your-email-address 获得TLS证书后,重新加载Nginx以获取新证书。 sudo systemctl reload nginx 您现在应该可以使用不同的域来访问RoundCube webmail。此外,您还需要重新加载Postfix SMTP服务器和Dovecot IMAP服务器,以便让它们获取新证书。 sudo systemctl reload postfix dovecot 在计算机或移动设备上使用邮件客户端 启动你的桌面电子邮件客户端,比如Mozilla Thunderbird,并添加第二个域的邮件帐户。 在“传入服务器”部分,选择IMAP协议,输入mail。域2。com作为服务器名,选择端口143和STARTTLS。选择普通密码作为身份验证方法。 在“发送”部分,选择SMTP协议,输入mail。域2。com作为服务器名,选择端口587和STARTTLS。选择普通密码作为身份验证方法。 提示:您还可以将端口993用于IMAP的SSL/TLS加密,将端口465用于SMTP的SSL/TLS加密。您不应该使用端口25作为SMTP端口来提交发送的电子邮件。 虽然Postfix SMTP服务器和Dovecot IMAP服务器在与其他服务器通信时使用第一个邮件域(mail.domain1.com)的主机名,但它们现在使用的是多域证书,因此邮件客户端不会显示证书警告。 SPF和DKIM检查 现在,您可以使用桌面电子邮件客户端或webmail客户端向[email&#160;protected]发送测试电子邮件,并获得免费的电子邮件身份验证报告。这是我从25号端口收到的报告。通用域名格式 别忘了在网上测试你的电子邮件分数https://www.mail-tester.com还可以使用GlockApps测试电子邮件的放置。 如果DKIM检查失败,您可以转到https://www.dmarcanalyzer.com/dkim/dkim-check/查看您的DKIM记录是否有任何错误。 如果你的电子邮件仍被标记为垃圾邮件呢? 在这篇文章中,我有更多的建议:7个有效的建议来阻止你的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 多个邮件域的RDN? 反向DNS(RDN),又名PTR记录,用于检查发送方的IP地址是否与HELO主机名匹配。添加新邮件域时,无需添加其他PTR记录。您的RDN应该只设置一个主机名,即Postfix中设置的主机名,可以通过以下命令显示。 postconf myhostname rDNS是IP地址的记录。这不是域名的记录。如果只有一个IP地址,那么只需要一条指向一个主机名的rDNS记录。反向DNS检查不会验证发件人:域在您的电子邮件中,只要您的IP地址有rDNS记录,并且主机名可以解析回相同的IP地址,您就可以通过反向DNS检查。 此外,在一台服务器上托管多个域时,不需要在Postfix中更改以下设置。 我的主机名 肌动蛋白 我的目的地 托管电子邮件服务,如G Suite和Microsoft Exchange Online,都使用一个主机名作为服务器,为客户发送电子邮件。G套件用户发送的电子邮件都使用谷歌。主机名中的com和Microsoft Exchange Online用户发送的电子邮件都使用outlook。主机名中的com。对于其他电子邮件服务提供商,如Mailchimp、SendinBlue、SendPluse等,情况也是如此。它们都为单个服务器使用一个主机名,而一个IP地址只有一个RDN记录。 就这样!我希望本教程能帮助您使用iRedMail托管多个电子邮件域。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:65