• 服务器租用配置方案需要考虑哪些方面?

    在选择好服务器租用的服务商之后,下一步就是要确定好服务器租用的方案。在服务器租用之前,和服务商的沟通很关键,因为一切信息,都来自于商家。在这里,为了让你少走弯路,MMCLOUD小编为你提供了一些思路供你参考,希望对你有所帮助。 一、根据服务器的租用时长,确定不同的租用方案 1、短租方案 刚创业的朋友,资金可能会比较紧张。虽说我们的服务器性能非常完美,但是价格会比较高。一次性拿出那么多钱,对于刚创业的朋友会比较吃紧,这个时候大家可以考虑月付或者季度付。短期方案非常适合创业初期的朋友。 2、长租方案 长租方案就是推荐大家一次性付款1年或者3年甚至更长时间。一般来说,一次性付款会有折扣优惠,给大家节约了一大笔资金;其次是减少了麻烦,无需每个月都需要联系服务商续费。从而避免出现忘记续费,服务器停止服务的情况出现。长租方案对大家非常方便,当然你要对所选的商家比较信任,这点比较重要。 3、递增方案 网站架设初期,网站没有什么人气,这个时候大家可以租用低一点的配置。随着后期流量的增长再租用高配服务器。服务器的配置随着网站访问量的变动而变动,这样租用服务器会能节约早期的投入成本,避免造成不必要的资源浪费。 二、根据企业的业务需求,建立服务器需求清单,按需配置方案  1、罗列需求清单 明确自己的需求,罗列一份服务器需求清单,清单里标明CPU、内存、硬盘、带宽、防御、线路、价格、服务商名称、服务商资质等各种需求属性及参数,再去咨询对应服务商货比三家。 2、硬盘 服务器因为要面对多用户的并发文件访问,所以要求服务器所用的硬盘的I/O读写性能非常高。比如说,网页游戏服务器商通常会选择随时读写速率高、故障率低的SATA、SAS硬盘作为服务器的标准配置。值得注意的是:传统高速SAS硬盘在面对大量小图片元素时,磁盘I/O还是吃力,但SSD固态硬盘技术可以有效解决此类问题。 3、CPU 服务器能否承受得起大量的访问请求,CPU起着至关重要的作用。以游戏行业为例,小型游戏选择线程低的配置即可满足需求,而中型大型的游戏则需要配置高的CPU才能保障玩家们游戏时的稳定性和速度,否则玩家们体验不佳,你这个游戏设计得再好也得不到认可。 4、内存 内存的重要性仅次于CPU,因服务器的许多故障都源于内存。在服务器内存选择方面,我们主要从网站类型、访问量、网站数据大小来衡量内存大小,同时也要考虑所选的内存技术是哪种属性的。如DDR2、DDR3,以及所支持的内存容量,还要看它所具有的其他特性,如支持的内行模组,纠错方式,是否支拌内在镜像、内存保护、内存阵列等技术。 5、线路 就用户的多样性而言,当然是多线或BGP线路访问更顺畅。 6、带宽大小 比如说,游戏服务器在高峰期时还需要保证游戏的运行稳定和速度,所以一般游戏服务商会选择大带宽来应对大量的访问需求。 7、防御 防御不是每个站都需要的,要视自身站点特性来判断是否配置。比方说,游戏行业在受到攻击方面是经常会遇到的问题,ddos攻击常达百G以上,而且攻击方式复杂多变,对于服务器端的攻击,应用层的攻击以及DNS攻击是防护难题。 8、价格 不同配置不同性能的服务器价格可比性不强,建议根据适合自己的需求来配置。 三、除了以上两点,做服务器租用方案的时候,同时还要注意以下事项: 1、高配置不等于高性能,稳定性和扩展性最为重要,虽然考察机房次要,但是考察一下也是很必要的。 2、硬件和软件、网络资源共享是发展趋势,软件与硬件互补性强,综合考虑选择标准。 3、通用服务器向专用服务器发展,易用性和专用性非常明显。 4、要签订严谨的租用合同,明确双方责任、权利。 以上就是MMCLOUD提供的服务器租用方案及相关注意事项,看完之后对于方案方面也会有一个大致的了解,也希望通过小编分享的内容,更加了解服务器租用方案的重要性。

    2021.09.03 浏览:144
  • 在Debian 10 Buster上设置OpenConnect VPN服务器(ocserv)

    本教程将向您展示如何通过在Debian 10 Buster上安装OpenConnect VPN服务器来运行自己的VPN服务器。OpenConnect VPN服务器,又名ocserv,是Cisco AnyConnnect VPN协议的开源实现,广泛应用于企业和大学。AnyConnect是一种基于SSL的VPN协议,允许单个用户连接到远程网络。 为什么要设置自己的VPN服务器? 也许你是VPN服务提供商或系统管理员,这就要求你设置自己的VPN服务器。 你不信任VPN服务提供商的禁止登录策略,所以你选择了自主机路径。 您可以使用VPN来实施网络安全策略。例如,如果您运行自己的电子邮件服务器,则可以通过在防火墙中创建IP地址白名单,要求用户仅从VPN服务器的IP地址登录。因此,您的电子邮件服务器经过加固以防止黑客活动。 也许你只是想知道VPN服务器是如何工作的。 OpenConnect VPN服务器的功能 轻便快速。在我的测试中,我可以通过OpenConnect VPN观看YouTube 4K视频。YouTube在我的国家(中国)被屏蔽。 在Linux和大多数BSD服务器上运行。 与Cisco AnyConnect客户端兼容 有针对Linux、macOS、Windows和OpenWRT的OpenConnect客户端软件。对于Android和iOS,您可以使用Cisco AnyConnect客户端。 支持密码身份验证和证书身份验证 支持RADIUS记帐。 易于设置 我特别喜欢这样一个事实:与其他VPN技术相比,最终用户使用OpenConnect VPN非常简单方便。每当我在我的计算机上安装Linux发行版,并想快速解锁网站或隐藏我的IP地址时,我就会安装OpenConnect客户端,只需两行命令即可连接到服务器: sudo apt install openconnect sudo openconnect -b vpn.mydomain.com 此外,还有用于Fedora、RHEL、CentOS、Arch Linux和OpenSUSE的OpenConnect VPN客户端。您可以使用软件包管理器轻松安装它。 sudo dnf install openconnect sudo yum install openconnect sudo pacman -S openconnect 要求 要学习本教程,您需要一个VPS(虚拟专用服务器),可以自由访问被屏蔽的网站(在您的国家或互联网过滤系统之外)。我推荐Kamatera VPS,其特点是: 30天免费试用。 起价为每月4美元(1GB内存) 基于KVM的高性能VPS 世界各地的9个数据中心,包括美国、加拿大、英国、德国、荷兰、香港和ISRALL。 按照下面链接的教程在Kamatera创建Linux VPS服务器。 如何在Kamatera上创建Linux VPS服务器 一旦你有了一个运行Debian 10 buster的VPS,请按照下面的说明操作。 您还需要一个域名来为OpenConnect VPN启用HTTPS。我从namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。 步骤1:在Debian 10 Buster上安装OpenConnect VPN服务器 通过SSH登录Debian 10 Buster服务器。然后使用apt从Debian存储库安装ocserv包。 sudo apt update sudo apt install ocserv 一旦安装,OpenConnect VPN服务器将自动启动。您可以通过以下方式检查其状态: systemctl status ocserv 样本输出: ● ocserv.service - OpenConnect SSL VPN server Loaded: loaded (/lib/systemd/system/ocserv.service; enabled; vendor preset: enabled Active: active (running) since Thu 2017-11-30 05:45:07 UTC; 11s ago Docs: man:ocserv(8) Main PID: 19235 (ocserv-main) CGroup: /system.slice/ocserv.service ├─19235 ocserv-main └─19242 ocserv-secm 提示:如果上述命令没有立即退出,您可以按Q键重新控制终端。 如果它没有运行,则可以从以下内容开始: sudo systemctl start ocserv 默认情况下,OpenConnect VPN服务器监听TCP和UDP端口443。如果web服务器正在使用它,则VPN服务器无法启动。稍后我们将在OpenConnect VPN配置文件中看到如何更改端口。 如果你的服务器上有防火墙,那么你需要打开端口80和443。例如,如果使用UFW,则运行以下命令。 sudo ufw allow 80/tcp sudo ufw allow 443/tcp 第2步:在Debian 10 Buster服务器上安装Let's Encrypt Client(Certbot) 与ocserv一起安装的gnutls bin包提供了创建您自己的CA和服务器证书的工具,但我们将获取并安装Let's Encrypt certificate。使用Let’s Encrypt证书的优点是,它是免费的,更容易设置,并且受VPN客户端软件的信任。 运行以下命令在Debian 10上安装Let's Encrypt client(certbot)。 sudo apt install certbot 要检查版本号,请运行 certbot --version 样本输出: certbot 0.31.0 步骤3:从Let's Encrypt获取受信任的TLS证书 我建议使用standalone或webroot插件来获取TLS证书。 独立插件 如果Debian 10 Buster服务器上没有运行web服务器,并且您希望OpenConnect VPN服务器使用端口443,那么您可以使用独立插件从Let's Encrypt获取TLS证书。为vpn设置DNS记录。你的地盘。com,然后运行以下命令以获取证书。 sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email [email protected] -d vpn.example.com 说明: certonly:获取证书,但不要安装它。 --standalone:使用standalone插件获取证书 --首选挑战http:执行http-01挑战以验证我们的域,该域将使用端口80。 --同意:同意让我们加密服务条款。 --电子邮件:电子邮件地址用于帐户注册和恢复。 -d:指定你的域名。 从下面的截图可以看出,我成功地获得了证书。 使用webroot插件 如果Debian 10 Buster服务器的web服务器监听端口80和443,那么最好使用webroot插件来获取证书,因为webroot插件几乎适用于所有web服务器,我们不需要在web服务器中安装证书。 首先,您需要为vpn创建一个虚拟主机。实例通用域名格式。 阿帕奇 如果您使用的是Apache web服务器,则在/etc/apache2/sites available/目录下创建虚拟主机。 sudo nano /etc/apache2/sites-available/vpn.example.com.conf 并将以下行粘贴到文件中。 <VirtualHost *:80> ServerName vpn.example.com DocumentRoot /var/www/ocserv </VirtualHost> 保存并关闭文件。然后创建web根目录。 sudo mkdir /var/www/ocserv 将www数据(Apache用户)设置为web根目录的所有者。 sudo chown www-data:www-data /var/www/ocserv -R 启用此虚拟主机。 sudo a2ensite vpn.example.com 重新加载Apache以使更改生效。 sudo systemctl reload apache2 创建并启用虚拟主机后,运行以下命令以获取使用webroot插件加密证书。 sudo certbot certonly --webroot --agree-tos --email [email protected] -d vpn.example.com -w /var/www/ocserv/ Nginx 如果您使用的是Nginx web服务器,那么在/etc/Nginx/conf.d/下创建虚拟主机。 sudo nano /etc/nginx/conf.d/vpn.example.com.conf 将以下行粘贴到文件中。 server { listen 80; server_name vpn.example.com; root /var/www/ocserv/; location ~ /.well-known/acme-challenge { allow all; } } 保存并关闭文件。然后创建web根目录。 sudo mkdir /var/www/ocserv 将www数据(Nginx用户)设置为web根目录的所有者。 sudo chown www-data:www-data /var/www/ocserv -R 重新加载Nginx以使更改生效。 sudo systemctl reload nginx 创建并启用虚拟主机后,运行以下命令以获取使用webroot插件加密证书。 sudo certbot certonly --webroot --agree-tos --email [email protected] -d vpn.example.com -w /var/www/ocserv/ 第4步:编辑OpenConnect VPN服务器配置文件 编辑ocserv配置文件。 sudo nano /etc/ocserv/ocserv.conf 首先,配置密码身份验证。默认情况下,通过PAM(可插拔认证模块)进行密码认证是启用的,这允许您使用Debian系统帐户从VPN客户端登录。可以通过注释掉以下行来禁用此行为。 auth = "pam[gid-min=1000]" 如果我们希望用户使用单独的VPN帐户而不是系统帐户登录,我们需要添加以下行以启用密码文件的密码身份验证。 auth = "plain[passwd=/etc/ocserv/ocpasswd]" 编辑完这个配置文件后,我们将看到如何使用ocpasswd工具生成/etc/ocserv/ocpasswd文件,其中包含用户名和编码密码的列表。 注意:Ocserv支持客户端证书身份验证,但我们来加密它不会颁发客户端证书。如果要启用证书身份验证,则需要设置自己的CA以颁发客户端证书。 接下来,如果您不想让ocserv使用TCP和UDP端口443(有一个web服务器使用端口443),请找到以下两行并更改端口号。否则就别管他们。 tcp-port = 443 udp-port = 443 然后找出下面两行。我们需要改变它们。 server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem server-key = /etc/ssl/private/ssl-cert-snakeoil.key 将默认设置替换为让我们加密服务器证书和服务器密钥文件的路径。 server-cert = /etc/letsencrypt/live/vpn.example.com/fullchain.pem server-key = /etc/letsencrypt/live/vpn.example.com/privkey.pem 然后,设置客户端的最大数量。默认值为128。设置为零表示无限。 max-clients = 128 设置用户可以同时登录的设备数量。默认值为2。设置为零表示无限。 max-same-clients = 2 默认情况下,keepalive数据包每300秒(5分钟)发送一次。我更喜欢使用短时间(30秒)来减少VPN连接中断的机会。 keepalive = 30 接下来,找到下面这行。将false更改为true以启用MTU发现。 try-mtu-discovery = false 您可以通过以下两个参数设置在断开连接之前允许客户端保持空闲的时间。如果您希望客户端无限期地保持连接,那么请注释掉这两个参数。 idle-timeout=1200 mobile-idle-timeout=1800 之后,将默认域设置为vpn。实例通用域名格式。 default-domain = vpn.example.com 默认情况下,IPv4网络配置如下所示。这将导致问题,因为大多数家庭路由器还将IPv4网络范围设置为192.168.1.0/24。 ipv4-network = 192.168.1.0 ipv4-netmask = 255.255.255.0 我们可以使用另一个专用IP地址范围(如10.10.10.0/24)来避免IP地址冲突,因此将ipv4网络的值更改为 ipv4-network = 10.10.10.0 现在取消注释下面这行,通过VPN隧道所有DNS查询。 tunnel-all-dns = true 更改DNS解析程序地址。你可以使用谷歌的公共DNS服务器。 dns = 8.8.8.8 dns = 8.8.4.4 或者Cloudflare的公共DNS服务器。 dns = 1.1.1.1 dns = 1.0.0.1 注意:如果您是VPN服务提供商,最好运行自己的DNS解析器。如果在同一台服务器上运行DNS解析程序,请将DNS指定为 dns = 10.10.10.1 10.10.10.1是VPN LAN中OpenConnect VPN服务器的IP地址。这将稍微加快客户端的DNS查找,因为VPN服务器和DNS解析程序之间的网络延迟已消除。 然后注释掉所有路由参数(在下面几行的开头添加#字符),这将把服务器设置为客户端的默认网关。 #route = 10.0.0.0/8 #route = 172.16.0.0/12 #route = 192.168.0.0/16 #route = fd00::/8 #route = default #no-route = 192.168.5.0/255.255.255.0 保存并关闭文件,然后重新启动VPN服务器,以使更改生效。 sudo systemctl restart ocserv 第5步:创建VPN帐户 现在使用ocpasswd工具生成VPN帐户。 sudo ocpasswd -c /etc/ocserv/ocpasswd username 系统将要求您为用户设置密码,信息将保存到/etc/ocserv/ocpasswd文件中。要重置密码,只需再次运行上述命令。 步骤6:在Linux内核中启用IP转发 为了让VPN服务器在VPN客户端和Internet之间路由数据包,我们需要启用IP转发。编辑sysctl。conf文件。 sudo nano /etc/sysctl.conf 在该文件末尾添加以下行。 net.ipv4.ip_forward = 1 保存并关闭文件。然后使用下面的命令应用更改。p选项将从/etc/sysctl加载sysctl设置。conf文件。此命令将在系统重新启动时保留所做的更改。 sudo sysctl -p 第7步:在防火墙中配置IP伪装 我们需要在服务器防火墙中设置IP伪装,以便服务器成为VPN客户端的虚拟路由器。我将使用UFW,它是iptables防火墙的前端。在Debian上安装UFW时使用: sudo apt install ufw 首先,需要允许SSH通信。 sudo ufw allow 22/tcp 接下来,找到服务器主网络接口的名称。 ip addr 正如你所看到的,在我的Debian服务器上它的名字是ens3。 要配置IP伪装,我们必须在UFW配置文件中添加iptables命令。 sudo nano /etc/ufw/before.rules 默认情况下,过滤器表有一些规则。在该文件末尾添加以下行。将ens3替换为您自己的网络接口名称。 # NAT table rules *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.10.10.0/24 -o ens3 -j MASQUERADE # End each table with the 'COMMIT' line or these rules won't be processed COMMIT 在Nano文本编辑器中,按Ctrl+W,然后按Ctrl+V,可以转到文件的末尾。 以上几行将在nat表的后路由链的末尾附加(-A)条规则。它将把你的虚拟专用网络与互联网连接起来。同时也会对外界隐藏你的人际网络。所以互联网只能看到VPN服务器的IP,却看不到VPN客户端的IP,就像你的家庭路由器隐藏了你的私人家庭网络一样。 默认情况下,UFW禁止数据包转发。我们可以允许为我们的专用网络转发。在该文件中找到ufw BEFORT forward链,并添加以下3行,如果源IP或目标IP在10.10.10.0/24范围内,这3行将接受数据包转发。 # allow forwarding for trusted network -A ufw-before-forward -s 10.10.10.0/24 -j ACCEPT -A ufw-before-forward -d 10.10.10.0/24 -j ACCEPT 保存并关闭文件。然后启用UFW。 sudo ufw enable 如果以前启用过UFW,那么可以使用systemctl重新启动UFW。 sudo systemctl restart ufw 现在,如果使用以下命令列出NAT表的后路由链中的规则: sudo iptables -t nat -L POSTROUTING 你可以看到化装规则。 UFW处理防火墙规则可能需要一些时间。如果伪装规则未显示,则再次重新启动UFW(sudo systemctl restart UFW)。 步骤8:打开防火墙中的443端口 运行以下命令打开TCP和UDP端口443。如果您为ocserv配置了不同的端口,则将443更改为您配置的端口。 sudo ufw allow 443/tcp sudo ufw allow 443/udp 现在,OpenConnect VPN服务器已准备好接受客户端连接。 对于运行本地DNS解析程序的用户,如果指定10.10.10.1作为VPN客户端的DNS服务器,则必须允许VPN客户端使用以下UFW规则连接到端口53。 sudo ufw insert 1 allow in from 10.10.10.0/24 您还需要编辑绑定DNS服务器的配置,以允许VPN客户端发送如下递归DNS查询。 allow-recursion { 127.0.0.1; 10.10.10.0/24; }; 如何在Debian 10 Buster桌面上安装和使用OpenConnect VPN客户端 运行以下命令在Debian桌面上安装OpenConnect VPN命令行客户端。 sudo apt install openconnect 您可以从下面的命令行连接到VPN-b标志将使其在连接建立后在后台运行。 sudo openconnect -b vpn.example.com 默认情况下,openconnect客户端将联系服务器的端口443。如果为服务器配置了其他端口,则可以添加端口号。 sudo openconnect -b vpn.example.com:port-number 您将被要求输入VPN用户名和密码。如果成功建立连接,您将看到以下消息。 Got CONNECT response: HTTP/1.1 200 CONNECTED CSTP connected. DPD 60, Keepalive 300 Connected as 10.10.10.139, using SSL + LZ4, with DTLS + LZ4 in progress Continuing in background; pid 17050 如果连接失败,可以查看ocserv日志以了解原因。(可能您没有正确输入密码。) sudo journaltcl -eu ocserv 要停止连接,请运行: sudo pkill openconnect 要以非交互方式运行客户端,请使用以下语法。 echo -n password | sudo openconnect -b vpn.example.com -u username --passwd-on-stdin 如果要使用Network Manager管理VPN连接,则需要安装这些软件包。 sudo apt install network-manager-openconnect network-manager-openconnect-gnome 如果您成功连接到VPN服务器,但您的公共IP地址没有更改,这是因为IP转发或IP伪装不起作用。我的iptables命令有一次输入错误,导致我的电脑无法浏览互联网。 系统启动时自动连接 为了让OpenConnect VPN客户端在启动时自动连接到服务器,我们可以创建一个systemd服务单元。 sudo nano /etc/systemd/system/openconnect.service 将以下行放到文件中。替换红色文本。 [Unit] Description=OpenConnect VPN Client After=network-online.target Wants=network-online.target [Service] Type=simple ExecStart=/bin/bash -c '/bin/echo -n password | /usr/sbin/openconnect vpn.example.com -u username --passwd-on-stdin' KillSignal=SIGINT Restart=always RestartSec=2 [Install] WantedBy=multi-user.target 保存并关闭文件。然后启用此服务,使其在引导时启动。 sudo systemctl enable openconnect.service 文件内容说明: After=网络在线。目标和需求=网络在线。目标使此服务在网络启动后运行。 实际上,这项服务仍然可以在网络开通之前运行。如果服务失败,我们添加Restart=always和RestartSec=2以在2秒后重新启动该服务。 Systemd无法识别管道重定向。因此,在ExecStart指令中,我们将命令用单引号括起来,并使用Bash shell运行它。 由于OpenConnect VPN客户端将作为在后台运行的systemd服务运行,因此不需要在OpenConnect命令中添加-b标志。 当发出systemctl stop openconnect命令时,KillSignal指令告诉Systemd发送SIGINT信号。这将通过注销会话、恢复DNS服务器设置和Linux内核路由表来执行完全关闭。 要立即启动此Systemd服务,请运行 sudo systemctl start openconnect 要停止此Systemd服务,请运行 sudo systemctl stop openconnect VPN连接中断时自动重启 有时VPN连接会由于各种原因而中断。要使VPN客户端自动重新启动,请编辑根用户的crontab文件。 sudo crontab -e 在该文件末尾添加以下行。 * * * * * ping -c 10 10.10.10.1 > /dev/null || systemctl restart openconnect 此Cron作业将每分钟运行一次,以检查VPN客户端是否可以ping VPN服务器的专用IP地址(10.10.10.1)。如果ping失败,则将执行右侧的命令以重新启动VPN客户端。|是Bash中的OR运算符。只有当左边的命令返回错误时,它才会执行右边的命令。 保存并关闭文件。 适用于Windows和MacOS的OpenConnect GUI客户端 它们可以从OpenConnect GUI Github页面下载。 速度 OpenConnect VPN非常快。我可以用它在YouTube上观看4k视频。如您所见,连接速度为63356kbps,相当于61Mbit/s。 这是速度测试的测试结果。网 速度优化 OpenConnect默认使用TLS over UDP协议(DTLS)来实现更快的速度,但UDP无法提供可靠的传输。TCP比UDP慢,但可以提供可靠的传输。我可以给你的一个优化技巧是禁用DTL,使用标准TLS(通过TCP),然后启用TCP BBR以提高TCP速度。 要禁用DTL,请在ocserv配置文件中注释掉以下行(在开头添加#符号)。 udp-port = 443 保存并关闭文件。然后重启ocserv服务。 sudo systemctl restart ocserv.service 要启用TCP BBR,请查看以下教程。请注意,您需要在ocserv中禁用DTL,否则TCP BBR将无法工作。 如何通过启用TCP BBR轻松提升Debian网络性能 在我的测试中,启用TCP BBR的标准TLS比DTL快两倍。 影响速度的另一个非常重要的因素是本地计算机和VPN服务器之间的连接有多好。如果你住在中东和VPN服务器位于美国,速度将是缓慢的。选择一个离你住的地方近的数据中心。 自动续订让我们加密证书 编辑root用户的crontab文件。 sudo crontab -e 在文件末尾添加以下行以每天运行Cron作业。如果证书将在30天后过期,certbot将尝试续订证书。VPN服务器需要重新启动ocserv服务才能获取新的证书和密钥文件。 @daily certbot renew --quiet && systemctl restart ocserv 故障排除提示 请注意,如果您使用的是OpenVZ VPS,请确保在VPS控制面板中启用TUN虚拟网络设备。(如果你使用Kamatera VPS,那么你有基于KVM的VPS,所以你不必担心这一点。) 如果遇到任何问题,请查看OpenConnect VPN服务器日志。 sudo journalctl -eu ocserv.service 我发现如果我把443端口换成另一个端口,中国的防火长城会阻止这个VPN连接。 如果ocserv告诉您它无法加载/etc/ocserv/ocserv。conf文件,您可以停止ocserv。 sudo systemctl stop ocserv 然后在前台运行它,并启用调试。 sudo /usr/sbin/ocserv --foreground --pid-file /run/ocserv.pid --config /etc/ocserv/ocserv.conf --debug=10 然后,输出可能会给您一些ocserv不工作的线索。 使OpenConnect VPN服务器和Web服务器同时使用端口443 请阅读以下文章: 运行OpenConnect VPN服务器&amp;Apache/Nginx与HAProxy在同一个盒子上 如何在ocserv中禁用TLS 1.0和TLS 1.1 PCI理事会在2018年6月30日否决了TLS 1.0,主流网络浏览器将在2020年禁用TLS 1.0和TLS 1.1。对于VPN服务器,我们也应该这样做。编辑主配置文件。 sudo nano /etc/ocserv/ocserv.conf 找到以下行: tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128" 要在OpenConnect VPN服务器中禁用TLS 1.0和TLS 1.1,只需添加-VERS-TLS1。0和-VERS-TLS1。1号排队。 tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-RSA:-VERS-SSL3.0:-ARCFOUR-128:-VERS-TLS1.0:-VERS-TLS1.1" 保存并关闭文件。然后重启ocserv。 sudo systemctl restart ocserv 现在ocserv只接受TLS1.3和TLS1.2。有关在ocserv中配置TLS参数的更多信息,请参阅GnuTLS优先级字符串。 要检查OpenConnect VPN服务器是否支持TLS 1.0,请运行以下命令。 openssl s_client -connect vpn.your-domain.com:443 -tls1 并检查TLS 1.1 openssl s_client -connect vpn.your-domain.com:443 -tls1_1 如果在输出中看到以下消息,则表示不支持TLS版本。 New, (NONE), Cipher is (NONE) Secure Renegotiation IS NOT supported 每用户或每组配置 Ocserv允许按用户和按组配置。要启用此功能,请取消注释/etc/ocserv/ocserv中的以下两行。conf文件。 config-per-user = /etc/ocserv/config-per-user/ config-per-group = /etc/ocserv/config-per-group/ 保存并关闭文件。然后创建每个用户和每个组的配置目录。 sudo mkdir /etc/ocserv/config-per-user/ sudo mkdir /etc/ocserv/config-per-group/ 接下来,您可以在这两个目录下创建一个文件。例如,创建user1文件以允许对user1进行自定义配置。 sudo nano /etc/ocserv/config-per-user/user1 还可以创建group1文件,以允许对名为group1的组进行自定义配置。 sudo nano /etc/ocserv/config-per-group/group1 您可以在文件中添加如下内容。 route = 10.10.10.0/255.255.255.0 这意味着,在user1连接到此VPN服务器后,只有到10.10.10.0/24网络的流量将通过VPN服务器路由。到其他IP地址的流量通过原始网关路由。这被称为分裂隧道,在以下情况下非常有用: 您只希望VPN客户端能够浏览内部资源,而不希望所有流量都通过VPN服务器。 你需要为云服务器构建一个专用网络。 客户端需要连接到多个VPN。一个VPN可以使用拆分隧道,另一个使用完整隧道。 保存并关闭文件。重新启动ocserv以使更改生效。 如何运行ocserv的多个实例 一个ocserv进程只能绑定到服务器上的一个TCP或UDP端口。如果希望允许ocserv绑定到多个TCP或UDP端口,则需要运行多个ocserv进程。这很简单。复制/lib/systemd/system/ocserv。新文件的服务。 sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv2.service 然后编辑新文件。 sudo nano /etc/systemd/system/ocserv2.service 改变 /etc/ocserv/ocserv.conf 到 /etc/ocserv/ocserv2.conf 保存并关闭文件。接下来,您可以编辑/etc/ocserv/ocserv2。conf文件并添加自定义配置。完成后,启动第二个ocserv服务。 sudo systemctl start ocserv2 收尾 就这样!我希望本教程能帮助您在Debian 10 Buster服务器上安装和配置OpenConnect VPN。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:414
  • 在Ubuntu20.04上设置OSM地理编码服务器

    在之前的教程中,我解释了在Ubuntu 20.04上构建自己的OSM tile服务器的过程。本教程将向您展示如何在Ubuntu20.04上设置Namingm地理编码服务器。Nagnitm为OpenStreetMap提供搜索功能,因此如果访客在搜索框中输入地址,将返回该地址的纬度/经度位置。 注意:如果你要为整个星球安装Namingm,那么你应该为Namingm启动另一台服务器,因为它还需要64GB的RAM和1TB的SSD。 第一步:从源代码构建提名 安装依赖项包以构建Nagnitm。 sudo apt update sudo apt install build-essential cmake g++ libboost-dev libboost-system-dev libboost-filesystem-dev libexpat1-dev zlib1g-dev libbz2-dev libpq-dev libproj-dev apache2 php php-pgsql libapache2-mod-php php-intl php-cgi phpunit php-codesniffer python3-setuptools python3-dev python3-pip python3-psycopg2 python3-tidylib python3-behave python-pytest pylint git clang-tidy postgresql-server-dev-12 创建提名用户。(无需为此用户创建密码。) sudo useradd -d /srv/nominatim -s /bin/bash -m nominatim 更改为/srv/m/目录。 cd /srv/nominatim/ 向您自己的用户帐户授予权限。 sudo apt install acl sudo setfacl -R -m u:username:rwx /srv/nominatim/ 从官方网站下载提名。 wget https://nominatim.org/release/Nominatim-3.5.1.tar.bz2 取出柏油球。 tar xvf Nominatim-3.5.1.tar.bz2 创建构建目录。 mkdir build 更改到此目录并配置生成环境。 cd build cmake /srv/nominatim/Nominatim-3.5.1 编译源代码。 make 第2步:配置提名 Nagnitm的默认配置文件是/srv/Nagnitm/build/settings/settings。php。我们可以创建一个本地。php文件,并在那里添加我们的修改。 sudo nano /srv/nominatim/build/settings/local.php 在文件中添加以下行。 <?php @define('CONST_Website_BaseURL', '/nominatim/'); @define('CONST_Default_Lat', 55.0); @define('CONST_Default_Lon', 1.0); @define('CONST_Default_Zoom', 6); @define('CONST_Map_Tile_URL', 'https://tile.linuxbabe.com/osm/{z}/{x}/{y}.png'); 上述配置定义了 相对于磁贴服务器的Namingm实例的路径。 默认纬度、经度和缩放级别。 OSM磁贴服务器的URL。默认情况下,提名使用公共资源https://tile.openstreetmap.org磁贴服务器。在这里,我使用自己的磁贴服务器。 您还可以查看/srv/namitm/build/settings/settings。php文件,并在需要时添加自己的自定义项。例如,如果要导入大型数据集(欧洲、北美、planet等),最好启用节点位置的平面节点存储,这样节点坐标将存储在一个简单的文件中,而不是数据库中,从而节省导入时间和磁盘存储。 @define('CONST_Osm2pgsql_Flatnode_File', '/srv/nominatim/flatnode.file'); 保存并关闭文件。 第3步:安装和配置PostgreSQL 注意:如果OSM tile server和Nagnitm安装在同一台服务器上,则可以跳过此步骤,因为您在设置OSM tile server时已经完成了此操作。 我们将使用PostgreSQL存储地图数据。PostGIS是PostgreSQL的地理空间扩展。运行以下命令来安装它们。 sudo apt install postgresql postgresql-contrib postgis postgresql-12-postgis-3 然后我们需要调整PostgreSQL以获得最佳性能。编辑主配置文件。 sudo nano /etc/postgresql/12/main/postgresql.conf 在该文件中查找以下参数并使用以下值。 shared_buffers = 15GB work_mem = 1GB maintenance_work_mem = 10GB effective_cache_size = 24GB synchronous_commit = off max_wal_size = 1GB checkpoint_timeout = 10min checkpoint_completion_target = 0.9 fsync = off full_page_writes = off 保存并关闭文件。重新启动PostgreSQL以使更改生效。 sudo systemctl restart postgresql 请注意,导入OSM数据库后,应打开fsync和full_page_write,否则可能会损坏数据库。 默认情况下,PostgreSQL会尝试在RAM中使用巨大的页面。然而,Linux默认情况下不会分配巨大的页面。检查PostgreSQL的进程ID。 sudo head -1 /var/lib/postgresql/12/main/postmaster.pid 样本输出: 7031 然后检查该进程ID的峰值。 grep ^VmPeak /proc/7031/status 样本输出: VmPeak: 16282784 kB 这是PostgreSQL将使用的峰值内存大小。现在检查Linux中巨大页面的大小。 cat /proc/meminfo | grep -i huge 样本输出: AnonHugePages: 0 kB ShmemHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB Hugetlb: 0 kB 我们可以计算出我们需要多少巨大的页面。将VmPeak值除以巨大页面的大小:16282784KB/2048KB=7950。编辑/etc/sysctl。conf文件。 sudo nano /etc/sysctl.conf 添加以下行以分配7950个大页面。 vm.nr_hugepages = 7950 保存并关闭文件。然后应用更改。 sudo sysctl -p 如果你再次查看meminfo, cat /proc/meminfo | grep -i huge 我们可以看到有7950个巨大的页面可用。 AnonHugePages: 0 kB ShmemHugePages: 0 kB HugePages_Total: 7950 HugePages_Free: 7950 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB 重新启动PostgreSQL以使用大型页面。 sudo systemctl restart postgresql 第4步:导入OSM数据库 下载维基百科重要性转储文件,这将提高Nomatim搜索结果的质量。 cd /srv/nominatim/Nominatim-3.5.1/data wget https://www.nominatim.org/data/wikimedia-importance.sql.gz 下载美国和英国邮政编码数据。 wget https://www.nominatim.org/data/us_postcode_data.sql.gz wget https://www.nominatim.org/data/gb_postcode_data.sql.gz 下载国家代码数据文件。 wget -O country_osm_grid.sql.gz https://www.nominatim.org/data/country_grid.sql.gz 然后需要下载一个OSM文件并将其导入PostgreSQL。你可以去http://download.geofabrik.de下载你需要的摘录。也可以在磁贴服务器设置过程中使用PBF文件。 在PostgreSQL中创建www数据用户,这样web服务器将对数据库具有只读访问权限。 sudo -u postgres createuser www-data 向postgres用户授予权限。 sudo setfacl -R -m u:postgres:rwx /srv/nominatim/ 切换到postgres用户。 sudo -u postgres -i 并运行以下命令将OSM提取导入PostgreSQL。 cd /srv/nominatim/build/ /srv/nominatim/build/utils/setup.php --osm-file /home/osm/great-britain-latest.osm.pbf --all 2>&1 | tee setup.log 导入数据库后,索引过程将开始。总共有30个等级。 完成后,运行以下命令进行验证。 /srv/nominatim/build/utils/check_import_finished.php 退出postgres用户。 exit 第5步:设置Apache 如果OSM磁贴服务器上安装了Namingm,则编辑磁贴服务器配置文件。 sudo nano /etc/apache2/sites-enabled/tileserver_site-le-ssl.conf 在VirtualHost标记之间添加以下行。 <Directory "/srv/nominatim/build/website"> Options FollowSymLinks MultiViews AddType application/json .php DirectoryIndex search.php Require all granted </Directory> alias /nominatim /srv/nominatim/build/website 保存并关闭文件。然后重新加载Apache。 sudo systemctl reload apache2 如果要在单独的服务器上设置Namingm,则需要安装Apache和PHP。 sudo apt install apache2 php7.4 libapache2-mod-php7.4 php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline 为提名创建虚拟主机。 sudo nano /etc/apache2/sites-enabled/nominatim.conf 在此文件中添加以下行。 <VirtualHost *:80> ServerName nominatim.example.com DocumentRoot /srv/nominatim/build/website <Directory "/srv/nominatim/build/website"> Options FollowSymLinks MultiViews AddType application/json .php DirectoryIndex search.php Require all granted </Directory> alias /nominatim /srv/nominatim/build/website ErrorLog ${APACHE_LOG_DIR}/nominatim_error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/nominatim_access.log combined </VirtualHost> 保存并关闭文件。然后重启Apache。 sudo systemctl restart apache2 现在参观https://tile.yourdomain.com/nominatim.您将看到您的Nomatim实例。 CSS文件位于/srv/namitm/build/website/CSS/search。css,如果你想定制外观。 第6步:更新提名数据库 为了使Namingm数据库保持最新,我们需要安装Pyosmium。它可以从默认的软件存储库中获得,但建议使用pip3安装最新版本。 sudo pip3 install osmium 这将安装一个二进制文件/usr/local/bin/pyosmium获取更改。编辑配置文件。 sudo nano /srv/nominatim/build/settings/local.php 添加以下行以指定pyosmium get changes的位置。 @define('CONST_Pyosmium_Binary', '/usr/local/bin/pyosmium-get-changes'); 接下来,我们需要告诉Namingm在哪里下载更新。默认情况下,它被配置为从https://planet.openstreetmap.org/replication/minute.如果您从geofabrik下载了OSM PBF文件。de,那么最好也从那里下载更新。 要查找自己地图的更新URL,请转到https://download.geofabrik.de/找到你所在的地区。然后找到该文件的URL。osc。gz文件。 此URL是更新URL。 在/srv/namignm/build/settings/local中添加以下行。php文件。您需要使用自己的更新URL。 // base URL of the replication service @define('CONST_Replication_Url', ''); // How often upstream publishes diffs @define('CONST_Replication_Update_Interval', '86400'); // How long to sleep if no update found yet @define('CONST_Replication_Recheck_Interval', '900'); 保存并关闭文件。向postgres用户授予权限。 sudo setfacl -R -m "u:postgres:rwx" /srv/nominatim/build/ 然后切换到postgres用户。 sudo -u postgres -i 初始化更新过程。 /srv/nominatim/build/utils/update.php --init-updates 更新我的数据库。 /srv/nominatim/build/utils/update.php --import-osmosis-all 第7步:设置Cron作业以进行自动更新 编辑root用户的Crontab文件。 sudo crontab -e 在此文件中添加以下行。 @daily sudo -u postgres /srv/nominatim/build/utils/update.php --import-osmosis-all 保存并关闭文件。如果不想自动更新Nagnitm数据库,只需从Crontab文件中删除上面的一行即可。 如何在拖沓的地图上添加搜索功能 我假设你的slippy地图是使用传单JavaScript库显示的。要将搜索功能添加到地图中,需要使用传单地理编码插件。我将向您展示如何使用传单控制地理编码器。其实很简单。 假设您使用以下HTML代码来显示拖拉地图。 <html> <head> <meta charset="UTF-8"> <title>My first osm</title> <link rel="stylesheet" type="text/css" href="leaflet.css"/> <script type="text/javascript" src="leaflet.js"></script> <style> #map{width:100%;height:100%} </style> </head> <body> <div id="map"></div> <script> var map = L.map('map').setView([54,1],6); L.tileLayer('https://tile.yourdomain.com/osm/{z}/{x}/{y}.png',{maxZoom:19}).addTo(map); </script> </body> </html> 现在,您需要在HTML标题中添加以下两行,以使用传单控制地理编码器插件。 <link rel="stylesheet" href="https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.css" /> <script src="https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.js"></script> 然后将以下函数添加到&lt;脚本&gt&lt/脚本&gt;将搜索功能添加到地图中。 L.Control.geocoder().addTo(map); 最终的HTML代码如下所示: <html> <head> <meta charset="UTF-8"> <title>My first osm</title> <link rel="stylesheet" type="text/css" href="leaflet.css"/> <link rel="stylesheet" href="https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.css" /> <script type="text/javascript" src="leaflet.js"></script> <script src="https://unpkg.com/leaflet-control-geocoder/dist/Control.Geocoder.js"></script> <style> #map{width:100%;height:100%} </style> </head> <body> <div id="map"></div> <script> var map = L.map('map').setView([54,1],6); L.tileLayer('https://tile.yourdomain.com/osm/{z}/{x}/{y}.png',{maxZoom:19}).addTo(map); L.Control.geocoder().addTo(map); </script> </body> </html> 保存并关闭文件。然后在web浏览器中重新加载地图,您应该会在右上角看到一个搜索按钮。 默认情况下,传单控制地理编码器使用公共https://nominatim.openstreetmap.org地理编码服务。要使用您自己的地理编码服务,请删除以下行。 L.Control.geocoder().addTo(map); 改为添加以下行。将该URL替换为您的提名地理编码服务的URL。请注意,不应省略尾随的斜杠。 var geocoder = L.Control.Geocoder.nominatim({serviceUrl:'https://tile.yourdomain.com/nominatim/'}); if (URLSearchParams && location.search) { // parse /?geocoder=nominatim from URL var params = new URLSearchParams(location.search); var geocoderString = params.get('geocoder'); if (geocoderString && L.Control.Geocoder[geocoderString]) { console.log('Using geocoder', geocoderString); geocoder = L.Control.Geocoder[geocoderString](); } else if (geocoderString) { console.warn('Unsupported geocoder', geocoderString); } } var control = L.Control.geocoder({ query: 'Type Address here', placeholder: 'Search here...', geocoder: geocoder, position: 'topright' }).addTo(map); var marker; setTimeout(function() { control.setQuery('Type Address here'); }, 12000); 默认位置为右上角。如果你愿意,可以把它改成左上角。 您还可以为反向地理编码添加以下代码。当访客点击地图上的某个点时,该地址的名称就会出现。 map.on('click', function(e) { geocoder.reverse(e.latlng, map.options.crs.scale(map.getZoom()), function(results) { var r = results[0]; if (r) { if (marker) { marker .setLatLng(r.center) .setPopupContent(r.html || r.name) .openPopup(); } else { marker = L.marker(r.center) .bindPopup(r.name) .addTo(map) .openPopup(); } } }); }); 保存并关闭文件。然后在web浏览器中重新加载地图。 提高反向搜索的准确性 提名中有两种类型的搜索: 前向搜索,又名地理编码,返回地址的纬度和经度 反向搜索,又名反向地理编码,返回纬度和经度的地址,即当访问者点击地图上的某个点时。 如果进行反向搜索,则标记针和弹出窗口与您单击的地图上的位置不在同一位置,则需要增加缩放级别。地图。getZoom()函数将获取当前的地图视图,该视图由setView()函数设置,如下所示 var map = L.map('map').setView([54,1],6); 缩放级别设置为6,这将导致反向搜索的精度较低。我们可以对反向搜索的缩放级别进行硬编码,如下所示: geocoder.reverse(e.latlng, map.options.crs.scale(21), function(results) i、 换张地图。getZoom()到21。反向搜索的最大缩放级别为21。您可以选择另一个缩放级别以满足您的需要。 故障排除 如果地图上的搜索功能不起作用,您可以检查web浏览器的控制台,找出哪里出了问题。有些人可能会认为406不可接受或CORS不允许出现错误。确保为设置了正确的MIME类型。Apache配置文件中的php。有些人可能有下面这句话,这可能会导致上述错误。 AddType text/html .php 应该是的 AddType application/json .php 更改MIME类型后。重新加载Apache以使更改生效。 sudo systemctl reload apache2 收尾 我希望本教程能帮助你在Ubuntu20.04上安装Namingm地理编码服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:90
  • 如何在Ubuntu上设置带有后缀的备份电子邮件服务器(完整指南)

    本教程将向您展示如何在Ubuntu上设置带有后缀的备份电子邮件服务器。备份电子邮件服务器通常被称为备份MX。MX代表邮件交换器。之前我写过一篇文章,解释iRedMail如何帮助您快速运行自己的电子邮件服务器。有时,你的电子邮件服务器可能会脱机,尤其是如果你在家里而不是在数据中心运行电子邮件服务器。您可以设置备份电子邮件服务器,以便在主电子邮件服务器关闭时接收电子邮件并对其排队。当备份MX重新联机时,它将把排队的电子邮件转发给主MX。 要求 由于要设置备份电子邮件服务器,您需要一台正常运行时间较长的服务器,因此最好在数据中心租用一台虚拟专用服务器(VPS)。确保服务器可以在端口25上发送电子邮件。我在每月4美元的Kamatera VPS实例(1个CPU,1GB RAM)上设置了备份电子邮件服务器。您可以按照下面的教程创建Kamatera VPS。 如何在Kamatera上创建Linux VPS服务器 假设您的备份MX主机不是任何域的主电子邮件服务器。将不同主机上的主电子邮件服务器和辅助电子邮件服务器的角色分开是一种很好的做法。 创建DNS MX记录 MX记录指定哪个或多个主机处理特定域名的电子邮件。例如,为linuxbabe处理电子邮件的主机。com是电子邮件。利努克斯宝贝。com,它是主要的电子邮件服务器。您可以使用dig实用程序查询MX记录。 dig MX +short linuxbabe.com 如果拥有Gmail账户的人向[email&#160;protected]发送电子邮件,Gmail服务器将查询linuxbabe的MX记录。通用域名格式。当它发现那封邮件时。利努克斯宝贝。com负责接收电子邮件,然后查询电子邮件记录。利努克斯宝贝。com获取IP地址,从而可以发送电子邮件。 要设置备份电子邮件服务器,您需要在DNS管理器中创建另一个MX记录。在名称字段中输入@代表主域名,然后在值字段中输入备份电子邮件服务器的主机名。我把我的备份邮件服务器命名为mx2。利努克斯宝贝。通用域名格式。 现在我的域名有两个MX记录。请注意,开头有两个数字。它们被称为偏好值或优先级值。小数字的优先级高于大数字。 发送SMTP服务器将选择优先级最高的电子邮件服务器来发送电子邮件。如果该电子邮件服务器不可用,则将尝试具有第二高优先级的电子邮件服务器。您可以在DNS管理器中设置首选项值。它可以是0到65356之间的任何数字。确保备份电子邮件服务器的数量大于主电子邮件服务器的数量。别忘了为备份MX创建一个A记录。 注意:MX记录的主机名不能是其他名称的别名。此外,强烈建议您使用主机名,而不是MX记录的裸IP地址。 在Ubuntu上设置带有后缀的备份电子邮件服务器 我们只需要在备份MX主机上安装和配置Postfix SMTP服务器。不需要其他软件。运行以下命令在Ubuntu上安装Postfix。 sudo apt update sudo apt install postfix 当您看到以下消息时,按Tab键并按Enter键。 然后选择第二个选项:互联网站点。 接下来,输入备份MX主机名作为系统邮件名称。例如,我输入了mx2。利努克斯宝贝。通用域名格式。请注意,您不能在此处输入主域名。也就是说,我不能进入linuxbabe。com的系统邮件名称。 安装Postfix后,打开配置文件。 sudo nano /etc/postfix/main.cf 默认情况下,/etc/postfix/main。cf文件包含以下行。 smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination 说明: Permit_mynetworks告诉Postfix在自己的网络上转发来自SMTP客户端的电子邮件。 Permit_sasl_authenticated告诉Postfix转发来自已验证SMTP客户端的电子邮件。 如果收件人的域名既不在$relay_domains中,也不在$my_destination中,Defer_unauth_destination会使Postfix拒绝来自其他SMTP客户端的请求。 我们需要添加relay_domains参数,指定域名,以便在主电子邮件服务器重新联机时将电子邮件转发到主电子邮件服务器。 relay_domains = linuxbabe.com 如果要将其作为多个域名的备份MX主机,还可以指定多个域名。 relay_domains = linuxbabe.com, 2nd-domain.com 建议您将myhostname的默认值更改为mx2。你的领域。通用域名格式。 myhostname = mx2.linuxbabe.com 确保mydestination的值不包括您的主域名,否则您的备份MX主机将向本地系统发送电子邮件,而不是转发到主电子邮件服务器。以下值可以。 mydestination = $myhostname, mx2.linuxbabe.com , localhost, localhost.localdomain, localhost Postfix继续尝试在Maximum_queue_lifetime参数中指定的时间内传递排队的消息,该参数确定延迟消息在被反弹回发送方之前在队列中停留的时间。默认值为5天,如下面的命令所示。 postconf -d | grep maximal_queue_lifetime 输出: maximal_queue_lifetime = 5d SMTP协议(RFC 2821)建议发送SMTP服务器至少在4-5天内重试失败的电子邮件传递。因此,如果运行备份MX主机,可能需要将队列寿命延长10天。在main的末尾添加以下行。cf文件。 maximal_queue_lifetime = 10d 保存并关闭文件。然后重新启动Postfix以使更改生效。 sudo systemctl restart postfix 尝试传递延迟消息的最小间隔时间由minimal_backoff_time参数确定,默认情况下为300秒(5分钟)。如果交付再次失败,等待时间将延长。发送延迟消息的两次尝试之间的最大等待时间由maximum_backoff_time参数确定,默认情况下为4000秒(约66.66分钟) 确保防火墙允许入站连接到TCP端口25。 接力接受者 默认情况下,备份MX主机上的后缀将接受属于$relay_域的任何地址。如果主电子邮件服务器告诉备份MX主机收件人的电子邮件地址不存在,则备份MX主机必须将邮件转发给原始发件人。 垃圾邮件发送者经常将消息发送到虚构的地址,因此您的备份MX主机将不必要地接收大量必须被退回的电子邮件。如果垃圾邮件发送者使用其他人的真实地址作为发送者地址,那么无辜的人将从你的服务器收到被转发的电子邮件。有时他们会认为你是个垃圾邮件发送者。 强烈建议您在备份MX主机上维护一个有效收件人地址列表。在/etc/postfix/main中。在cf文件中,添加以下行。 relay_recipient_maps = hash:/etc/postfix/relay_recipients 然后可以在/etc/postfix/relay_recipients文件中指定有效的收件人地址,如下所示。 [email protected]       OK [email protected]       OK [email protected]       OK 显然,手动添加收件人地址只适用于小型电子邮件服务器。对于大型电子邮件服务器来说,这很耗时。相反,您可以使用MySQL/MariaDB或LDAP执行实时查找。如果您的电子邮件服务器使用MariaDB存储电子邮件帐户信息,则可以设置MariaDB主从复制,以便备份电子邮件服务器在数据库中具有相同的电子邮件帐户。注意,您还需要复制/etc/postfix/main中的MySQL/MariaDB查找配置。cf文件从主电子邮件服务器发送到备份主机,以便备份主机知道如何查询数据库。 设置relay_recipient_maps参数后,必须包括提供备份服务的所有域的电子邮件地址。如果您不知道某个域的所有有效电子邮件地址,可以使用如下通配符条目。 [email protected]       OK [email protected]       OK [email protected]       OK @2nd-domain.com             OK 最后一个条目是一个通配符条目,允许第二个域的任何电子邮件地址。保存并关闭文件。然后创建中继收件人。数据库文件。 sudo postmap /etc/postfix/relay_recipients 反垃圾邮件过滤器 垃圾邮件发送者经常以备份MX主机为目标发送垃圾邮件。因此,在主MX主机和备份MX主机上部署反垃圾邮件过滤器非常重要。你可以使用我的6个技巧来阻止带有后缀的垃圾邮件。值得一提的是,您需要确保备份MX主机可以通过主电子邮件服务器上的垃圾邮件过滤器。 启用TLS加密 默认情况下,Postfix不会加密来自或到其他电子邮件服务器的连接。重要的是,我们启用TLS加密,这样电子邮件就不会被监听网络流量的中间人窥探到。我们可以很容易地从Let's Encrypt获得免费的TLS证书。发布以下命令,从官方PPA在Ubuntu服务器上安装Let's Encrypt client(certbot)。 sudo apt install software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt update sudo apt install certbot 现在,您可以使用三个插件(standalone、Apache、Nginx)中的一个获得TLS证书,具体取决于您的服务器。 使用独立插件获取TLS证书 如果备份MX主机上没有运行web服务器,则可以使用独立插件通过执行以下命令从Let's Encrypt获取TLS证书。 sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email your-email-address -d mx2.your-domain.com 说明: certonly:获取证书,但不要安装它。 --standalone:使用standalone插件获取证书 --首选挑战http:执行http-01挑战以验证我们的域,该域将使用端口80。默认情况下,独立插件将使用端口443执行tls sni挑战。 --同意:同意让我们加密服务条款。 --电子邮件:电子邮件地址用于帐户注册和恢复。 -d:指定你的域名。 从下面的截图可以看到,我成功地获得了证书。 使用Apache插件获取TLS证书 如果Apache web服务器正在备份MX主机上运行,则可以使用Apache插件获取TLS证书。运行以下命令安装Apache插件。 sudo apt install python3-certbot-apache mx2需要有一个Apache虚拟主机。你的领域。在获得TLS证书之前,让我们加密TLS证书。创建虚拟主机文件: sudo nano /etc/apache2/sites-available/mx2.your-domain.com.conf 然后将以下文本粘贴到文件中。 <VirtualHost *:80> ServerName mx2.your-domain.com DocumentRoot /var/www/mx2.your-domain.com </VirtualHost> 保存并关闭文件。然后创建web根目录。 sudo mkdir /var/www/mx2.your-domain.com 将www数据(Apache用户)设置为web根目录的所有者。 sudo chown www-data:www-data /var/www/mx2.your-domain.com -R 启用此虚拟主机。 sudo a2ensite mx2.your-domain.com.conf 重新加载Apache以使更改生效。 sudo systemctl reload apache2 创建并启用虚拟主机后,运行以下命令以获取Let's Encrypt TLS证书。 sudo certbot --apache --agree-tos --redirect --hsts --email your-email-address -d mx2.your-domain.com 您应该会看到以下消息,这意味着证书已成功获得。 使用Nginx插件获取TLS证书 如果Nginx web服务器正在备份MX主机上运行,则可以使用Nginx插件获取TLS证书。运行以下命令安装Nginx插件。 sudo apt install python3-certbot-nginx 对于mx2,您需要一个Nginx虚拟主机。你的领域。在获得TLS证书之前,让我们加密TLS证书。创建虚拟主机文件: sudo nano /etc/nginx/conf.d/mx2.your-domain.com.conf 接下来,将以下文本粘贴到文件中。 server { listen 80; server_name mx2.your-domain.com; root /var/www/mx2.your-domain.com/; location ~ /.well-known/acme-challenge { allow all; } } 保存并关闭文件。然后创建web根目录。 sudo mkdir /var/www/mx2.your-domain.com/ 将www数据(Nginx用户)设置为web根目录的所有者。 sudo chown www-data:www-data /var/www/mx2.your-domain.com -R 重新加载Nginx以使更改生效。 sudo systemctl reload nginx 创建并启用虚拟主机后,运行以下命令获取并安装让我们使用Nginx插件加密证书。 sudo certbot --nginx --agree-tos --redirect --hsts --email your-email-address -d mx2.your-domain.com 您应该看到以下内容,这意味着该证书已成功获得。您还可以查看证书存储的目录。 在Postfix中安装TLS证书 现在我们已经获得了一个有效的TLS证书,让我们在Postfix中安装它。 sudo nano /etc/postfix/main.cf 找到TLS参数部分和以下两行。 smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key 替换为: smtpd_tls_cert_file=/etc/letsencrypt/live/mx2.your-domain.com/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/mx2.your-domain.com/privkey.pem 然后添加以下3行,这将在Postfix SMTP服务器中启用TLS。 smtpd_tls_security_level=may smtpd_tls_protocols = !SSLv2, !SSLv3 !TLSv1 smtpd_tls_loglevel = 1 保存并关闭文件。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,Postfix SMTP服务器可以使用STARTTLS与端口25上的SMTP客户端建立加密连接。请注意,最终用户电子邮件客户端不会与备份MX主机通信,因此无需在端口587或465上启用提交服务。 在主服务器和备份服务器之间实施TLS连接 由于您的主电子邮件服务器也配置了有效的Let's Encrypt TLS证书,我们可以强制备份MX主机在向主电子邮件服务器发送电子邮件时使用TLS。在/etc/postfix/main中。cf文件中,添加以下参数,这将使Postfix SMTP客户端始终使用TLS,并使用/etc/ssl/certs目录中的受信任根CA证书验证远程服务器证书。 smtp_tls_security_level = verify smtp_tls_verify_cert_match = hostname, nexthop, dot-nexthop smtp_tls_CApath = /etc/ssl/certs smtp_tls_loglevel = 1 保存并关闭主管道。cf文件。然后使用以下命令创建哈希符号链接。 Ubuntu 18.04: sudo openssl rehash /etc/ssl/certs Ubuntu 16.04: sudo c_rehash /etc/ssl/certs 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以使用以下命令从备份MX主机向您的电子邮件地址发送电子邮件。 echo "hello" | sendmail [email protected] 消息发送后,您可以在/var/log/mail中找到以下文本。日志文件。 Verified TLS connection established 如果备份MX主机尝试建立TLS连接,但无法验证主电子邮件服务器的证书,则可以找到以下消息。 Untrusted TLS connection established 如何识别转发的电子邮件 通过查看电子邮件客户端中的电子邮件标题,可以识别转发的电子邮件。例如,我关闭了我的主电子邮件服务器,然后使用我的Gmail帐户向我的域电子邮件帐户发送电子邮件。几分钟后,我再次启动主电子邮件服务器。检查电子邮件头时,客户端IP和HELO主机名属于我的备份MX主机,因此我知道它是通过备份MX主机转发的。 Received-SPF: Softfail (mailfrom) identity=mailfrom; client-ip=23.254.225.226; helo=mx2.linuxbabe.com; [email protected]; receiver=<UNKNOWN> 请注意,SPF检查结果为Softfail,这意味着Gmail没有指定我的备份MX主机被允许代表Gmail发送电子邮件。com,但如果我的备份MX主机代表gmail发送电子邮件。com,收件人的SMTP服务器可以接受它并将其标记为Softfail。 设置SMTP回退中继 由于您现在有两个SMTP服务器,您可以在它们之间设置SMTP中继,因此如果一个SMTP服务器无法向特定收件人发送电子邮件,Postfix将使用另一个SMTP服务器再次发送电子邮件。我们将使用smtp_fallback_relay参数来实现这一点。 在主邮件服务器上编辑Postfix主配置文件。 sudo nano /etc/postfix/main.cf 在文件末尾添加以下行。将12.34.56.78替换为辅助邮件服务器的IP地址。 smtp_fallback_relay = [12.34.56.78]:25 保存并关闭文件。然后重新启动Postfix以使更改生效。 sudo systemctl restart postfix 然后在辅助邮件服务器上编辑Postfix主配置文件。 sudo nano /etc/postfix/main.cf 查找mynetworks参数。 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 将主邮件服务器的IP地址添加到列表中。这允许主邮件服务器将辅助邮件服务器用作中继,而无需SMTP身份验证。 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 Primary-Mail-Server-IP 保存并关闭文件。然后重新启动Postfix。 sudo systemctl restart postfix 请注意,不应将辅助邮件服务器配置为将主邮件服务器用作回退中继主机,因为当您发送大量电子邮件(如时事通讯)时,这会导致电子邮件在两个邮件服务器之间来回循环。 Postfix将在以下情况下使用SMTP回退中继: 连接超时。 收件人的SMTP服务器暂时推迟了电子邮件传递,例如使用greylisting。 邮件队列已满。 收尾 我希望本教程能帮助你在Ubuntu上安装一个带有后缀的备份电子邮件服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心。

    2022.03.23 浏览:88
  • 如何处理Microsoft Outlook IP黑名单

    在之前的教程中,我解释了如何使用iRedMail或Modoboa轻松设置自己的邮件服务器,并分享了一些从黑名单中删除IP地址的技巧。然而,有些人很难摆脱Outlook使用的Microsoft Outlook IP黑名单。com,hotmail。现场直播。com和msn。com邮件服务器。 如果您的IP地址被阻止,Microsoft Outlook通常会发回以下消息。 host eur.olc.protection.outlook.com[104.47.22.161] said: 550 5.7.1 Unfortunately, messages from [xx.xx.xx.xx] weren't sent. Please contact your Internet service provider since part of their network is on our block list (S3150). You can also refer your provider to http://mail.live.com/mail/troubleshooting.aspx#errors. [DB8EUR06FT013.eop-eur06.prod.protection.outlook.com] (in reply to MAIL FROM command) 正如你所见,整个IP范围都被屏蔽了。就我个人而言,我不认为应该使用这种反垃圾邮件技术,因为它会对合法发件人造成附带损害。相比之下,Gmail在处理IP声誉方面要聪明得多。您可以提交发件人信息表单来解决此问题。有时微软会解锁你的IP地址,有时你的请求会被拒绝。 让你的IP地址脱离Outlook黑名单的可靠方法是让你的邮件服务器通过返回路径认证。然而,它非常昂贵。你需要一次性支付200美元的申请费和每年至少1375美元的许可费。我将向您展示一种绕过Outlook IP黑名单的免费方法。 使用SMTP中继服务绕过Microsoft Outlook IP黑名单 您可以将邮件服务器配置为通过SMTP中继服务中继电子邮件。他们保持着良好的IP声誉,所以你的电子邮件可以通过IP黑名单。有许多SMTP中继服务。有些收取一点费用,有些每月提供免费配额。 您不必配置邮件服务器来转发所有电子邮件。我将向您展示如何配置Postfix SMTP服务器,以中继发送到outlook的电子邮件。com,hotmail。现场直播。com和msn。com电子邮件地址,所以你不会很快用完免费配额。现在使用微软邮箱的人不多了。我的订户中只有6.5%使用hotmail、outlook、live和msn电子邮件地址。 这里我推荐SendinBlue SMTP中继服务,它允许你每月免费发送9000封电子邮件。不需要信用卡。 配置SendinBlue SMTP中继 在SendinBlue创建一个免费帐户。完成用户配置文件后,单击事务选项卡,您将获得SMTP设置。 请注意,您可能需要联系Sendinblue客户服务以激活事务性电子邮件服务。 SSH连接到邮件服务器,并安装libsasl2 modules包,这是SASL身份验证所必需的。 sudo apt install libsasl2-modules 如果您使用CentOS/Rocky Linux/Alma Linux,请安装以下软件包。 sudo dnf install cyrus-sasl-plain cyrus-sasl-md5 接下来,使用命令行文本编辑器(如Nano)打开Postfix主配置文件。 sudo nano /etc/postfix/main.cf 在该文件末尾添加以下行。 transport_maps = regexp:/etc/postfix/transport.microsoft 暗示 如果使用iRedMail,可以找到transport_maps参数并添加regexp行。 transport_maps = regexp:/etc/postfix/transport.microsoft proxy:mysql:/etc/postfix/mysql/transport_maps_user.cf proxy:mysql:/etc/postfix/mysql/transport_maps_maillist.cf proxy:mysql:/etc/postfix/mysql/transport_maps_domain.cf 如果使用Modoboa,可以找到tranport_maps参数并添加regexp行。 transport_maps = regexp:/etc/postfix/transport.microsoft proxy:mysql:/etc/postfix/sql-transport.cf proxy:mysql:/etc/postfix/sql-spliteddomains-transport.cf 然后将以下行添加到此文件的末尾。 # outbound relay configurations smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noplaintext, noanonymous smtp_tls_security_level = may header_size_limit = 4096000 保存并关闭文件。接下来,创建/etc/postfix/transport。微软文件。 sudo nano /etc/postfix/transport.microsoft 在此文件中添加以下行。这会告诉Postfix,如果收件人是Microsoft邮箱用户,请使用Sendinblue SMTP中继。 /.*@(outlook|hotmail|live|msn)/..*/i relay:[smtp-relay.sendinblue.com]:587 保存并关闭文件。创建。数据库文件。 sudo postmap /etc/postfix/transport.microsoft 接下来,创建/etc/postfix/sasl_passwd文件。 sudo nano /etc/postfix/sasl_passwd 将SMTP中继主机和SMTP凭据添加到此文件,如下所示。用SendinBlue提供的您自己的用户名和密码替换smtp_用户名和smtp_密码。注意用户名和密码之间有一个冒号。 [smtp-relay.sendinblue.com]:587 smtp_username:smtp_password 保存并关闭文件。然后用postmap创建相应的hash db文件。 sudo postmap /etc/postfix/sasl_passwd 现在你应该有一个文件/etc/postfix/sasl_passwd。db。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 默认情况下,sasl_passwd和sasl_passwd。数据库文件可以被服务器上的任何用户读取。将权限更改为600,这样只有root用户才能读写这两个文件。 sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db 从现在起,Postfix将使用Sendinblue SMTP中继向Microsoft邮箱用户发送电子邮件。您可以向hotmail发送测试电子邮件。com,outlook。现场直播。com或msn。com电子邮件地址。 请注意,您需要单击发件人&amp;在您的帐户仪表板中的IPs选项卡添加您的域。 在SendinBlue中设置SPF/DKIM身份验证 在SendinBlue仪表板中,单击右上角的帐户名,然后单击Senders&amp;IP。选择域选项卡-&gt;管理-&gt;验证这个域。 一个弹出窗口出现。您需要为您的域添加前3条记录。 &nbsp; &nbsp; 故障排除提示 如果您的Postfix SMTP服务器无法通过SMTP中继发送电子邮件,并且您在邮件日志(/var/log/mail.log)中看到以下错误。 sasl authentication failed cannot authenticate to server no mechanism available 这可能是因为您的系统缺少libsasl2 modules包,可以使用以下命令安装该包。 sudo apt install libsasl2-modules 然后重新启动Postfix。 sudo systemctl restart postfix 注意:上述错误有时可能是由SMTP中继服务器上的无效TLS证书(自签名或过期)引起的。然而,使用Sendinblue时很少发生这种情况。 从垃圾邮件文件夹中取出 SMTP中继服务可以让你绕过IP黑名单,但这并不意味着你的电子邮件将100%进入收件箱。您的电子邮件可能会被放入垃圾邮件文件夹。如果您遵守电子邮件发送最佳实践,您的电子邮件最终将被放入收件箱文件夹。 我创建了一个新的hotmail。com邮箱作为测试。从我的域名发送的前3份新闻稿被放在垃圾邮件文件夹中,但所有剩余的电子邮件都被放在收件箱文件夹中。我没有在我的Hotmail帐户中做任何事情。我没有打开我的通讯或点击通讯中的任何链接。我只是使用最佳实践发送电子邮件,所以微软知道我的电子邮件不是垃圾邮件。 远离微软黑名单的小贴士 如果Microsoft在一段时间内未发现您的邮件服务器存在垃圾邮件活动,则可能会将您的IP地址从黑名单中删除。以下是一些防止你的IP地址再次被列入黑名单的建议。 不要立即将带有此IP地址的新闻稿发送给Microsoft邮箱用户。你应该首先发送事务性电子邮件,以提高你在微软的IP声誉。 如果你发送时事通讯,一定要预热你的IP地址。 你可以登录Outlook。com智能网络数据服务,用于检查您在Microsoft的IP声誉。如果您的IP地址在给定的一天发送超过100条消息,您可以单击查看数据链接查看您的IP地址的邮件流量和垃圾邮件数据。 Microsoft使用3种颜色来区分IP地址的垃圾邮件率: 红色:垃圾邮件&gt;90% 黄色:10%&lt;垃圾邮件&lt;90% 绿色:垃圾邮件&lt;10% 从两张截图中可以看出,我的IP声誉有所提高。 收尾 我希望本教程能帮助您绕过Microsoft Outlook IP黑名单。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费通讯,获取更多有用的教程?

    2022.03.24 浏览:143
  • 如何使用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 浏览:202
  • 在Debian 10 Buster上设置绑定权威DNS服务器

    本教程将向您展示如何使用广泛使用的BIND 9软件在Debian 10 Buster上设置和运行自己的权威名称服务器。 注意:本教程展示了命令行方法。如果您想从web GUI编辑DNS记录,我建议使用Webmin设置权威DNS服务器,这是一个免费的开源服务器控制面板。 什么是权威DNS服务器? 如果您拥有一个域名,并且希望您自己的DNS服务器为您的域名处理名称解析,而不是使用您的域名注册商的DNS服务器,那么您需要设置一个权威的DNS服务器。 域名所有者使用权威DNS服务器来存储DNS记录。它为DNS解析程序(如8.8.8.8或1.1.1.1)提供权威答案,这些解析程序代表终端用户在PC、智能手机或平板电脑上查询DNS记录。 关于BIND BIND(Berkeley Internet Name Domain)是一款开源、灵活、功能齐全的DNS软件,由于其稳定性和高质量,在Unix/Linux上得到了广泛应用。它最初是由加州大学伯克利分校开发的,后来在1994年,它的开发转移到了互联网系统联盟(ISC)。 BIND可以同时充当区域的权威DNS服务器和DNS解析程序。DNS解析程序也可以称为递归名称服务器,因为它为最终用户执行递归DNS查找。然而,同时扮演两个角色并不有利。在两台不同的机器上分离这两个角色是一种很好的做法。 在前一篇文章中,我解释了在Debian 10 Buster上设置本地DNS解析器的步骤。本教程将向您展示如何在Debian 10 Buster上将BIND9设置为仅限权威的DNS服务器,并禁用递归。 先决条件 要学习本教程,您应该已经购买了域名。我在namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。 你还需要两台服务器。一台服务器用于主DNS服务器,另一台用于从DNS服务器。理想情况下,这两台服务器应该位于不同的物理位置。如果一个DNS服务器处于脱机状态,另一个DNS服务器仍然可以回答您的域名的DNS查询。 每台服务器只需要512MB内存,以下是我推荐的主机提供商。我都用过了。 Vultr:起价为每月2.5美元。需要信用卡。你可以通过我的推荐链接在Vultr创建一个账户,获得50美元的免费信用。 DigitalOcean:起价为每月5美元。不需要信用卡。你可以用贝宝。你可以通过我的推荐链接在DigitalOcean创建一个帐户,获得50美元的免费信用。 购买两台服务器后,在其上安装Debian 10,并按照以下说明操作。 请注意,在Debian上安装软件时,您需要拥有root权限。可以在命令开头添加sudo,或者使用su-command切换到root用户。 使用BIND9在Debian 10 Buster上设置权威DNS服务器 您需要在两台服务器上运行本节中的命令。 通过SSH登录这两台服务器,并运行以下命令,从默认存储库在Debian 10服务器上安装BIND 9。BIND 9是当前版本,BIND 10是一个死项目。 sudo apt update sudo apt install bind9 bind9utils bind9-doc 检查版本号。 named -v 样本输出: BIND 9.11.5-P4-5.1-Debian (Extended Support Version) <id:998753c> 要检查版本号和生成选项,请运行 named -V 默认情况下,绑定在安装后自动启动。您可以通过以下方式检查其状态: systemctl status bind9 输出: ● bind9.service - BIND Domain Name Server Loaded: loaded (/lib/systemd/system/bind9.service; enabled; vendor preset: en Active: active (running) since Sun 2019-07-14 10:27:56 UTC; 4min 6s ago Docs: man:named(8) Main PID: 1481 (named) Tasks: 4 (limit: 1149) Memory: 13.7M CGroup: /system.slice/bind9.service └─1481 /usr/sbin/named -u bind 提示:如果上述命令没有立即退出,请按Q。 如果它没有运行,那么从以下内容开始: sudo systemctl start bind9 并在启动时启用自动启动: sudo systemctl enable bind9 BIND服务器将以BIND用户的身份运行,该用户是在安装过程中创建的,并在TCP和UDP端口53上侦听,如运行以下命令所示: sudo netstat -lnptu | grep named 绑定守护进程被称为named。(守护进程是在后台运行的软件。)命名的二进制文件由bind9包安装,还有另一个重要的二进制文件:rndc,远程名称守护程序控制器,由bind9utils包安装。rndc二进制文件用于重新加载/停止和控制绑定守护进程的其他方面。通信通过TCP端口953完成。 例如,我们可以检查绑定名称服务器的状态。 sudo rndc status 主绑定配置文件/etc/BIND/named。conf从其他3个文件中获取设置。 /etc/bind/named。形态选项 /etc/bind/named。conf.local /etc/bind/named。conf.default-zones Debian上的BIND9服务器提供了本地主机和本地网络客户端的递归服务。由于我们正在设置权威DNS服务器,因此需要禁用递归。编辑/etc/bind/named。conf.options文件。 sudo nano /etc/bind/named.conf.options 在options{…}子句中添加以下行。 // hide version number from clients for security reasons. version "not currently available"; // disable recursion on authoritative DNS server. recursion no; // enable the query log querylog yes; // disallow zone transfer allow-transfer { none; }; 从技术上讲,您只需要添加递归no;禁用递归,但最好添加其他3条指令。保存并关闭文件。然后重启BIND。 sudo systemctl restart bind9 主DNS服务器配置 从两台服务器中选择一台作为主DNS服务器。我们将把它命名为ns1。实例通用域名格式。 主DNS服务器保存区域文件的主副本。在此服务器上更改DNS记录。一个域可以有一个或多个DNS区域。每个DNS区域都有一个区域文件,其中包含该区域中的每个DNS记录。为了简单起见,本文假设您希望使用单个DNS区域来管理您的域名的所有DNS记录。 /etc/bind/named。conf.default-zones文件定义根区域和本地主机区域。要为域名添加区域,请编辑/etc/bind/named。conf.local文件。 sudo nano /etc/bind/named.conf.local 将以下行添加到此文件。替换示例。使用你自己的域名。将12.34.56.78替换为从属DNS服务器的IP地址。 zone "example.com" { type master; file "/etc/bind/db.example.com"; allow-query { any; }; allow-transfer { 12.34.56.78; }; }; 在上述配置中,我们使用zone子句创建了一个新区域,并指定这是主区域。区域文件是/etc/bind/db。实例com,我们将在其中添加DNS记录。仅允许从DNS服务器进行区域传输。 我们可以使用区域模板文件,而不是从头创建区域文件。复制数据库的内容。空到一个新文件。 sudo cp /etc/bind/db.empty /etc/bind/db.example.com 区域文件可以包含3种类型的条目: 注释:以分号(;)开头 指令:以美元符号($)开头 资源记录:又名DNS记录 区域文件通常由以下类型的DNS记录组成。 SOA(授权开始)记录:定义区域的关键特征。这是区域文件中的第一个DNS记录,是必需的。 NS(名称服务器)记录:指定用于存储DNS记录和回答域名DNS查询的服务器。区域文件中必须至少有两条NS记录。 MX(邮件交换器)记录:指定哪些主机负责域名的电子邮件传递。 (地址)记录:将DNS名称转换为IPv4地址。 AAAA(Quad A)记录:将DNS名称转换为IPv6地址。 CNAME记录(规范名称):用于为DNS名称创建别名。 TXT记录:SPF、DKIM、DMARC等。 现在,让我们编辑区域文件。 sudo nano /etc/bind/db.example.com 默认情况下,它如下所示: 你可以改成这个。 哪里 $TTL指令定义区域的默认生存时间值,即DNS记录可以缓存在DNS解析程序上的时间。该指令是强制性的。时间以秒为单位。 $ORIGIN指令定义基本域。 域名必须以点(.)结尾,这是根域。当域名以点结尾时,它是一个完全限定的域名(FQDN)。 @符号引用基本域。 在DNS类中。它代表互联网。存在其他DNS类,但很少使用。 区域文件中的第一条记录是SOA(授权开始)记录。此记录包含以下信息: 主DNS服务器。 区域管理员的电子邮件地址。RFC 2142建议使用电子邮件地址[email&#160;protected]。在区域文件中,此电子邮件地址采用以下形式:hostmaster。实例com,因为@符号在区域文件中有特殊含义。 区域序列号。序列号是从DNS服务器跟踪区域变化的一种方式。按照惯例,序列号采用日期格式:yyyymmddss,其中yyyy是四位数字的年份号,mm是月份,dd是日期,ss是日期的序列号。更改区域文件时,必须更新序列号。 刷新值。当达到刷新值时,从DNS服务器将尝试从主DNS服务器读取SOA记录。如果序列号变高,则启动区域传输。 重试值。定义从DNS服务器无法连接到主DNS服务器时的重试间隔(以秒为单位)。 到期:如果从属DNS服务器在这段时间内未能与主DNS服务器联系,则从属DNS服务器将停止响应此区域的DNS查询。 负缓存TTL:为不存在的DNS名称(NXDOMAIN)定义DNS响应的生存时间值。 TXT记录通常用双引号括起来。如果添加DKIM记录,还需要用括号括起该值。 保存并关闭文件。然后运行以下命令检查主配置文件中是否存在语法错误。无声输出表示未发现错误。 sudo named-checkconf 然后检查区域文件的语法。 sudo named-checkzone example.com /etc/bind/db.example.com 如果区域文件中存在语法错误,则需要修复它,否则将无法加载此区域。以下消息表示没有语法错误。 zone example.com/IN: loaded serial 2019011503 OK 然后重启BIND9。 sudo systemctl restart bind9 如果您使用的是简单防火墙(UFW),请打开TCP和UDP端口53。 sudo ufw allow 53/tcp sudo ufw allow 53/udp 如果您直接使用iptables防火墙,请运行以下命令。 sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT 从DNS服务器配置 现在我们使用另一台服务器作为从DNS服务器,它将被命名为ns2。实例通用域名格式。 首先,编辑命名文件。conf.local文件。 sudo nano /etc/bind/named.conf.local 添加一个如下所示的区域。将12.34.56.78替换为主DNS服务器的IP地址。 zone "example.com" { type slave; file "db.example.com"; allow-query { any; }; masters { 12.34.56.78; }; }; 在上面的配置中,我们指定这是示例中的从属DNS服务器。它将只接受来自主DNS服务器的区域传输。 保存并关闭文件。然后运行以下命令检查主配置文件中是否存在语法错误。 sudo named-checkconf 如果没有发现错误,请重新启动BIND9。 sudo systemctl restart bind9 从DNS服务器上的区域文件是从区域传输加载的,该传输用于同步从主DNS服务器到从DNS服务器的DNS记录更改。BIND9重新启动后,区域传输将立即启动。使用以下命令检查BIND9日志。 sudo journalctl -eu bind9 您可以看到如下消息,这表明区域传输成功。 named[31518]: transfer of 'example.com/IN' from 12.34.56.78#53: Transfer completed: 1 messages, 16 records, 886 bytes, 0.004 secs (221500 bytes/sec) 区域文件将另存为/var/cache/bind/db。实例从DNS服务器上的com。 如果您使用的是简单防火墙(UFW),请打开TCP和UDP端口53。 sudo ufw allow 53/tcp sudo ufw allow 53/udp 如果您直接使用iptables防火墙,请运行以下命令。 sudo iptables -A INPUT -p tcp --dport 53 -j ACCEPT sudo iptables -A INPUT -p udp --dprot 53 -j ACCEPT 更多关于区域转移的信息 当达到SOA记录中的刷新时间时,从属DNS服务器将再次联系主服务器,如果主服务器上的序列号大于从属服务器上的序列号,则将启动区域传输。有两种类型的区域转移: 完整区域传输(AXFR):传输区域文件的完整副本。 增量区域传输(IXFR):仅传输更改的DNS记录。 两种类型的区域传输都使用TCP端口53。默认情况下,从属DNS服务器上的绑定将请求增量区域传输,而主DNS服务器上的绑定仅在区域是动态的情况下才允许增量区域传输。 区域传输间隔是DNS记录更改传播速度的主要因素。当区域发生更改时,绑定主机将通知从属DNS服务器,而不是等待从属DNS服务器联系。这可以大大缩短将区域更改传播到Internet的时间。 反向区 反向区域包含将IP地址映射到DNS名称的PTR记录。它是DNS A记录的对应项。PTR记录通常是邮件服务器通过垃圾邮件过滤器所必需的。此记录不属于域。您需要在主机提供商的控制面板上创建PTR记录,或者询问您的ISP,所以我不打算在BIND中介绍创建反向区域。 更改NS记录并创建胶水记录 现在你需要去你的域名注册商的网站更改你的域名的NS记录,这样互联网就会知道你现在正在使用自己的DNS服务器。通常在NS记录中使用主机名,比如ns1。实例com和ns2。实例通用域名格式。 name server 1:   ns1.example.com name server 2: ns2.example.com 如果你有一个域名的例子。com,您使用一个子域作为权威DNS服务器(ns1.example.com和ns2.example.com),然后您还需要在您的域注册器上创建一个粘合记录,以便Internet可以知道您的DNS服务器的IP地址。胶水记录是ns1的A记录。实例com和ns2。实例通用域名格式。 ns1.example.com        IP-address-of-master-server ns2.example.com IP-address-of-slave-server 上述信息将通过可扩展配置协议(EPP)发送给运行TLD DNS服务器的注册运营商,以便TLD DNS服务器知道您的域名的权威DNS服务器的名称和IP地址。根据您使用的域注册器,您的NS记录可能会立即传播,或者传播可能需要24小时。你可以去https://dnsmap.io检查您的新NS记录是否处于活动状态。 我将向你展示如何在namescapet上实现这一点。 如果你在NameCheap购买了域名,请登录你的NameCheap帐户。选择左侧边栏上的域列表菜单,然后单击最右侧的管理按钮。 选择高级DNS。 滚动到页面底部,您将找到个人DNS服务器部分。单击添加名称服务器按钮添加您自己的名称服务器:ns1。实例com和ns2。实例通用域名格式。您需要输入名称服务器的IP地址。 添加两个名称服务器后,单击搜索按钮检查它们是否已成功添加。如果是这样,胶水记录将显示在此页面底部。 现在单击“域”选项卡,并使用自定义DNS服务器。 根据您使用的域注册器,您的NS记录可能会立即传播,或者传播可能需要24小时。你可以去https://dnsmap.io检查您的新NS记录是否处于活动状态。 胶水记录和NS记录传播到Internet后,DNS服务器将响应域名的DNS查询。您可以通过以下方式查看查询日志: sudo journalctl -eu bind9 您还可以使用dig实用程序检查域名的NS记录。 dig NS example.com 如果NS记录和glue记录已传播到Internet,您应该在“答案”部分看到您的名称服务器。如果您看到SERVFAIL错误,可能是因为您没有在名称服务器上打开UDP端口53。 需要知道的事情 术语主DNS服务器仅表示此服务器存储区域文件的主副本。在DNS解析方面,它没有更高的优先级。 更改区域文件时,请始终更新SOA序列号。 启用解析器 BIND可以同时充当区域的权威DNS服务器和DNS解析程序。在两台不同的机器上分离这两个角色是一种很好的做法,在本文中,我们在BIND中禁用了解析器。如果您真的想启用解析器,请按照以下说明操作。 编辑绑定配置文件。 sudo nano /etc/bind/named.conf.options 找到下面几行。 // disable recursion on authoritative DNS server. recursion no; 将它们更改为以下内容,这样只有受信任的IP地址才能向DNS解析程序发送递归查询,而您的服务器将不会是开放的解析程序。 // allow recursion for trusted clients only. recursion yes; allow-query { localhost; 12.34.56.78; }; 将12.34.56.78替换为您自己的IP地址。保存并关闭文件。确保在/etc/bind/named中定义区域。conf.local文件具有以下选项,因此Internet可以查询您所在区域的DNS记录。 allow-query { any; }; 然后重启BIND。 sudo systemctl restart bind9 去https://openresolver.com/测试绑定服务器是否为开放式解析程序。 收尾 就这样!我希望本教程能帮助您使用BIND9在Debian 10 Buster上设置权威DNS服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:106
  • 如何使用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 浏览:126
  • 在Ubuntu 20.04、18.04、16.04上为多个域设置Postfix仅发送SMTP服务器

    在本文中,我将向您展示如何在Ubuntu20.04、18.04、16.04上将Postfix设置为只发送SMTP服务器。我将首先向您展示如何为单个域执行此操作,然后如果需要,您可以为多个域应用这些步骤。 用例 您有一个需要向用户发送事务性电子邮件(如密码重置电子邮件)的网站/web应用程序。最有可能的是,用户不需要回复这些电子邮件,或者如果他们回复,回复电子邮件将被发送到您的专用邮件服务器。在这种情况下,可以使用Postfix(一种流行的SMTP服务器软件)在web服务器上设置只发送SMTP服务器。 先决条件 要从服务器发送电子邮件,端口25(出站)必须打开。许多ISP和托管公司,如DigitalOcean block port 25来控制垃圾邮件。我建议使用ScalaHost,因为它不会阻止端口25(出站)。一旦你有了ScalaHost服务器,就在上面安装Ubuntu,并按照下面的说明操作。 为多个域设置Postfix仅发送SMTP服务器实际上并不困难。首先,我们需要为一个域配置它,然后为多个域设置它。 第一步:在Ubuntu上安装后缀 运行以下命令从默认的Ubuntu存储库安装Postfix。 sudo apt-get update sudo apt-get install postfix -y 系统将要求您选择邮件服务器配置类型。按Tab键,然后按Enter键。 在下一个屏幕中,按Enter键选择默认选项:Internet站点。 接下来,输入系统邮件名称的域名,即@symbol后面的域名。 第2步:配置后缀 设置后缀主机名 默认情况下,Postfix SMTP服务器在与其他SMTP服务器通信时使用操作系统的主机名来标识自身。但是,操作系统的主机名可能会更改,如果您的主机名无效,一些SMTP服务器将拒绝您的电子邮件。因此,使用以下命令直接在Postfix配置文件中设置主机名是一种很好的做法。 sudo postconf -e "myhostname = sendonly.yourdomain.com" 这个主机名应该有一个指向服务器IP地址的DNS a记录。 设置$mydomain参数 $mydomain参数指定本地internet域名。默认情况下,使用$myhostname减去第一个组件。您可以通过以下方式显示$mydomain的当前值: postconf mydomain 它应该是你的顶级域名,比如 linuxbabe.com 如果它没有显示您的apex域名,则将$mydomain参数设置为: sudo postconf -e "mydomain = yourdomain.com" 设置$myorigin参数 $myorigin参数指定附加到没有@domain部分的发件人和收件人地址的默认域名。默认设置是使用/etc/mailname文件中的值,如下所示: postconf myorigin 输出: myorigin = /etc/mailname 然后可以在/etc/mailname文件中显示该值。 cat /etc/mailname 它的价值应该是你的领域。com没有任何子域。 echo "yourdomain.com" | sudo tee /etc/mailname 重新启动后缀 最后,我们需要重新启动Postfix以使更改生效。 sudo systemctl restart postfix 第三步:设置PTR记录 您需要设置一个PTR记录(又名指针记录),它将IP地址映射到FQDN。这是A唱片的对应品。如果你的服务器IP地址没有PTR记录,许多SMTP服务器会拒绝你的电子邮件。 因为您从主机提供商或ISP获得IP地址,而不是从域注册商获得,所以您必须在主机提供商的控制面板中为您的IP设置PTR记录,或者询问ISP。例如,在ScalaHost中,您可以通过打开支持票证或使用他们网站上的实时聊天来设置PTR记录。尽管您可以将PTR记录设置为任何主机名,但为了获得最佳实践,您应该在步骤2中使用后缀主机名 要查看PTR记录设置是否正确,请运行以下命令。将12.34.56.78替换为您自己的IP地址。 host 12.34.56.78 请注意,如果服务器使用IPv6地址,最好为后缀主机名添加AAAA记录,并为IPv6地址设置PTR记录。 第4步:安装和配置OpenDKIM DKIM代表域密钥识别邮件。你可以在你的服务器上安装OpenDKIM,并使用它为从你的域发送的电子邮件添加签名,使用你的私钥。接收SMTP服务器使用您在DNS中发布的相应公钥验证签名。如果你想让你的邮件进入收件人的收件箱,添加DKIM签名是必须的。 首先从默认的Ubuntu存储库安装OpenDKIM。 sudo apt-get install opendkim opendkim-tools 然后将postfix用户添加到opendkim组。 sudo adduser postfix opendkim 编辑OpenDKIM主配置文件。 sudo nano /etc/opendkim.conf 找到下面几行。 #Canonicalization simple #Mode sv #SubDomains no 取消对它们的注释,并用release/simple替换simple。将模式从sv更改为s,因为没有入站电子邮件来验证签名。 Canonicalization relaxed/simple Mode s SubDomains no 在该文件末尾添加以下行。(在Ubuntu 18.04上,用户ID已经设置为opendkim) #OpenDKIM user # Remember to add user postfix to group opendkim UserID opendkim # Map domains in From addresses to keys used to sign messages KeyTable refile:/etc/opendkim/key.table SigningTable refile:/etc/opendkim/signing.table # A set of internal hosts whose mail should be signed InternalHosts /etc/opendkim/trusted.hosts 保存并关闭文件。 创建签名表、密钥表和受信任主机文件 为OpenDKIM创建目录结构。 sudo mkdir /etc/opendkim sudo mkdir /etc/opendkim/keys 将所有者从root更改为opendkim,并确保只有opendkim用户可以读取和写入密钥目录。 sudo chown -R opendkim:opendkim /etc/opendkim sudo chmod go-rw /etc/opendkim/keys 创建签名表。 sudo nano /etc/opendkim/signing.table 将以下行添加到文件中。这意味着如果电子邮件中的From:标题包含示例。com,然后使用sendonly DKIM选择器。您可以将sendonly更改为首选DKIM选择器名称,并且该名称在DNS中应该是唯一的。 *@example.com sendonly._domainkey.example.com 保存并关闭文件。然后创建键表。 sudo nano /etc/opendkim/key.table 添加以下行。这意味着对于sendonly DKIM选择器,使用保存在/etc/opendkim/keys/example中的私钥。com/sendonly。私人签名邮件。 sendonly._domainkey.example.com    example.com:sendonly:/etc/opendkim/keys/example.com/sendonly.private 保存并关闭文件。接下来,创建受信任的主机文件。 sudo nano /etc/opendkim/trusted.hosts 将以下行添加到新创建的文件中。 127.0.0.1 localhost *.example.com 上述情况意味着来自上述IP地址和域的消息将被信任和签名。 生成私钥/公钥对 我们需要生成一个私钥来签署发送的电子邮件,以及一个用于接收SMTP服务器的公钥来验证DKIM签名。公钥将在DNS中发布。 为域创建一个单独的文件夹。 sudo mkdir /etc/opendkim/keys/example.com 使用opendkim genkey工具生成密钥。 sudo opendkim-genkey -b 2048 -d example.com -D /etc/opendkim/keys/example.com -s sendonly -v 上述命令将创建2048位密钥-d(域)指定域-D(directory)指定存储密钥的目录,我们使用sendonly作为选择器(-s)。执行命令后,私钥将保存在sendonly中。私密且仅限发送。txt将是包含公钥的txt记录。 使opendkim成为私钥的所有者。 sudo chown opendkim:opendkim /etc/opendkim/keys/example.com/sendonly.private 在DNS记录中添加公钥 显示公钥 sudo cat /etc/opendkim/keys/example.com/sendonly.txt p参数后面的字符串是公钥。在DNS管理器中,为第二个域创建一个TXT记录。输入sendonly_名称字段中的domainkey。复制括号中的所有内容并粘贴到值字段中。删除所有双引号。(您可以先将其粘贴到文本编辑器中,删除所有双引号,然后将其复制到DNS管理器。DNS管理器可能会要求您删除其他无效字符,例如回车符。) DNS记录发布后,在Ubuntu服务器上输入以下命令以测试密钥。 sudo opendkim-testkey -d example.com -s sendonly -vvv 如果一切正常,你会看到的 key OK 如果您看到密钥不安全消息,请不要惊慌。这是因为您的域名上未启用DNSSEC。 第5步:用OpenDKIM连接Postfix Postfix可以通过Unix套接字文件与OpenDKIM通信。OpenDKIM使用的默认套接字文件是/var/run/OpenDKIM/OpenDKIM。sock,如/etc/opendkim所示。conf文件。但是Ubuntu附带的postfix SMTP守护程序在chroot监狱中运行,这意味着SMTP守护程序将解析与postfix队列目录(/var/spool/postfix)相关的所有文件名。所以我们需要更改套接字文件。 编辑OpenDKIM主配置文件。 sudo nano /etc/opendkim.conf 找到以下行: Socket local:/var/run/opendkim/opendkim.sock 替换为以下行。(如果找不到上一行,请添加下一行。) Socket local:/var/spool/postfix/opendkim/opendkim.sock 创建一个目录来保存OpenDKIM套接字文件,并且只允许OpenDKIM用户和postfix组访问它。 sudo mkdir /var/spool/postfix/opendkim sudo chown opendkim:postfix /var/spool/postfix/opendkim 如果可以在/etc/default/opendkim文件中找到以下行。 SOCKET="local:/var/run/opendkim/opendkim.sock" 或 SOCKET=local:$RUNDIR/opendkim.sock 换成 SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock" 之后,我们需要编辑Postfix主配置文件。 sudo nano /etc/postfix/main.cf 在该文件末尾添加以下行,以连接Postfix和OpenDKIM。 # Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = local:opendkim/opendkim.sock non_smtpd_milters = $smtpd_milters 保存并关闭文件。重新启动OpenDKIM和Postfix。 sudo systemctl restart opendkim postfix 如果无法重新启动,OpenDKIM将不会生成任何消息。运行以下命令检查其状态。确保它在运行。 systemctl status opendkim 步骤6:创建SPF DNS记录 SPF(发件人策略框架)记录指定允许哪些主机或IP地址代表域发送电子邮件。在DNS管理界面中,创建一个新的TXT记录,如下所示。使用您自己的服务器IPv4地址和IPv6地址。 TXT  @   v=spf1 mx ip4:12.34.56.78 ip6:2600:3c01::f03c:93d8:f2c6:78ad ~all 第7步:设置发件人地址、发件人名称和返回路径 您可以在网站/web应用程序中设置自定义发件人地址、发件人名称和返回路径。让我们以WordPress为例。您可以在WordPress主题的函数中添加以下行。php文件覆盖默认的发件人地址、发件人名称和返回路径。必要时替换红色文本。 // Function to change From email address function wpb_sender_email( $original_email_address ) { return '[email protected]'; } // Function to change sender name function wpb_sender_name( $original_email_from ) { return 'LinuxBabe'; } // Set return-path the same as From address function fix_my_email_return_path( $phpmailer ) { $phpmailer->Sender = $phpmailer->From; } // Hooking up our functions to WordPress filters add_filter( 'wp_mail_from', 'wpb_sender_email' ); add_filter( 'wp_mail_from_name', 'wpb_sender_name' ); add_action( 'phpmailer_init', 'fix_my_email_return_path' ); 保存文件,就完成了。(注意functions.php文件。不要在该文件末尾的?&gt;之后添加空行,否则您的WordPress XML网站地图可能会损坏。) 步骤8:为发送的电子邮件启用TLS加密 默认情况下,Postfix在发送邮件时不使用TLS加密。要启用TLS加密,请打开/etc/postfix/main。cf文件,并在该文件末尾添加以下两行。 smtp_tls_security_level = may smtp_tls_loglevel = 1 第一行为Postfix SMTP客户端启用TLS加密。第二行将TLS连接记录在/var/log/mail中。日志文件,以便检查TLS加密是否正常工作。保存并关闭文件。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 由于Postfix不接收传入的电子邮件,因此无需为Postfix SMTP守护程序配置有效的TLS证书。 某些SMTP服务器要求您使用TLS。如果没有,他们将拒绝您的电子邮件,您将在邮件日志中看到以下错误消息。 Must issue a STARTTLS command first 第9步:测试发送者分数 现在去https://www.mail-tester.com.你会看到一个独特的电子邮件地址。从Postfix SMTP服务器上的网站向此地址发送电子邮件,然后检查您的分数。如你所见,我得了满分。在测试结果中,您应该检查您的PTR记录、SPF和DKIM记录是否有效。 您还可以打开/var/log/mail。用于检查是否使用TLS加密的日志文件。例如,下面一行显示了与mail tester的连接。com是加密的。 Anonymous TLS connection established to mail-tester.com[94.23.206.89]:25: TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits) 如果你的电子邮件仍被标记为垃圾邮件呢? 在本文中,我为您提供了更多关于电子邮件可交付性的提示:如何阻止您的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 如何为多个域配置Postfix仅发送SMTP服务器 默认情况下,Postfix允许您使用发件人标题和返回路径地址中的任何域名发送电子邮件。如果你的服务器托管多个网站,你只需要为你的其他域创建SPF DNS记录,这很容易做到,并为你的其他域配置OpenDKIM。 要为其他域配置OpenDKIM,需要在签名表、密钥表和可信主机文件中添加其他域,如下所示。 签名表(/etc/opendkim/Signing.table) *@example.com sendonly._domainkey.example.com *@example.net sendonly._domainkey.example.net 键表(/etc/opendkim/Key.table) sendonly._domainkey.example.com example.com:sendonly:/etc/opendkim/keys/example.com/sendonly.private sendonly._domainkey.example.net example.net:sendonly:/etc/opendkim/keys/example.net/sendonly.private 可信主机(/etc/opendkim/Trusted.hosts) 127.0.0.1 localhost *.example.com *.example.net 然后按照上述步骤为其他域生成DKIM私钥/公钥对,并在DNS中添加DKIM公钥。重新启动OpenDKIM,就完成了。别忘了测试你的发件人分数。 从另一台服务器发送电子邮件 有两种方法允许其他服务器通过只发送Postfix SMTP服务器发送电子邮件。 在不使用SMTP身份验证的情况下使用端口25:此方法要求其他服务器不阻止端口25(出站)。 将端口587用于SMTP身份验证:如果其他服务器阻止端口25(出站),则可以使用端口587。 没有SMTP身份验证的端口25 运行以下命令使Postfix侦听0.0.0.0,以便其他服务器可以连接到仅发送Postfix SMTP服务器。 sudo postconf "inet_interfaces = all" 然后需要将另一台服务器的IP地址添加到Postfix mynetworks参数中。将12.34.56.78替换为实际IP地址。 sudo postconf "$(postconf mynetworks) 12.34.56.78" 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 运行以下命令为另一台服务器打开端口25(入站)。 sudo ufw insert 1 allow in from 12.34.56.78 to any port 25 proto tcp 现在,您可以将SMTP客户端配置为使用mta1。你的地盘。com和端口25发送电子邮件。您不需要在SMTP客户端中指定用户名/密码。 带有SMTP身份验证的587端口 打开防火墙中的587和80端口。 sudo ufw insert 1 allow in from 12.34.56.78 to any port 25 proto tcp sudo ufw allow 80/tcp 运行以下命令使Postfix侦听0.0.0.0,以便其他服务器可以连接到仅发送Postfix SMTP服务器。 sudo postconf "inet_interfaces = all" 然后,您需要启用Postfix的提交服务,以便电子邮件客户端可以向Postfix SMTP服务器提交电子邮件。编辑母版。cf文件。 sudo nano /etc/postfix/master.cf 在提交部分,取消注释或添加以下行。请在-o之前至少允许一个空格(制表符或空格键)。在后缀配置中,前面的空格字符表示此行是前一行的延续。(默认情况下,提交部分被注释掉。您可以复制以下行并将其粘贴到文件中,这样您就不必手动取消注释或添加新文本。) submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_tls_wrappermode=no -o smtpd_sasl_auth_enable=yes -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth 上述配置启用Postfix的提交守护程序,并需要TLS加密。纯文本身份验证将被拒绝。提交守护进程监听TCP端口587。STARTTLS用于加密SMTP客户端和提交守护程序之间的通信。 保存并关闭文件。要启用SMTP身份验证,我们需要安装Dovecot。 sudo apt install dovecot-core 编辑身份验证配置文件。 sudo nano /etc/dovecot/conf.d/10-auth.conf 取消对以下行的注释。 disable_plaintext_auth = yes 当没有SSL/TLS加密时,它将禁用明文身份验证。如果您想使用完整的电子邮件地址([email&#160;protected])登录,请在文件中添加以下行。 auth_username_format = %Ln 否则,您只能使用用户名登录(不使用@your domain.com)。接下来,找到下面这行。 auth_mechanisms = plain 这一行只启用普通身份验证机制。登录是您可能希望添加的另一种身份验证机制,以支持旧的电子邮件客户端。 auth_mechanisms = plain login 保存并关闭文件。然后编辑以下文件。 sudo nano /etc/dovecot/conf.d/10-master.conf 将service auth部分更改为以下内容,以便Postfix可以找到Dovecot身份验证服务器。 service auth {     unix_listener /var/spool/postfix/private/auth {       mode = 0660       user = postfix group = postfix     } } 保存并关闭文件。重新启动Dovecot以使更改生效。 sudo systemctl restart dovecot 接下来,我们需要获得有效的TLS证书。我们可以很容易地从Let's Encrypt获得免费的TLS证书。发出以下命令在Ubuntu上安装Let's Encrypt client(certbot)。 sudo apt install certbot 然后使用独立插件获取TLS证书(假设Postfix SMTP服务器上没有运行web服务器)。 sudo certbot certonly --standalone --agree-tos --email [email protected] -d sendonly.yourdomain.com 过了一会儿,您应该会看到以下几行,这意味着证书已成功获得。您还可以查看证书存储的目录。 接下来,我们需要运行以下两个命令来指定后缀配置文件中TLS证书和私钥的位置。您的Let’s Encrypt证书和私钥存储在/etc/letsencrypt/live/sendonly下。你的领域。com/directory。 sudo postconf "smtpd_tls_cert_file = /etc/letsencrypt/live/sendonly.your-domain.com/fullchain.pem" sudo postconf "smtpd_tls_key_file = /etc/letsencrypt/live/sendonly.your-domain.com/privkey.pem" 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以将SMTP客户端配置为仅使用sendonly。你的地盘。com和端口587发送电子邮件。使用TLS加密类型和普通作为身份验证模式。您需要在SMTP服务器上创建电子邮件帐户。这很简单。使用adduser命令添加用户。 sudo adduser user1 --no-create-home 然后为该用户设置密码。 sudo passwd user1 电子邮件地址将为[电子邮件&#160;受保护]。 故障排除 未经DKIM签名的电子邮件 如果您的邮件未签名且DKIM检查失败,您可能需要检查postfix日志(/var/log/mail.log)以查看配置中的错误。如果您在邮件日志中看到以下消息, warning: connect to Milter service local:opendkim/opendkim.sock: No such file or directory 您可能需要检查opendkim systemd服务是否正在实际运行。 systemctl status opendkim 如果opendkim正在运行,但仍然看到上述错误,则可能需要更改smtpd_milters=local:opendkim/opendkim。sock to smtpd_milters=local:/opendkim/opendkim。插入/etc/postfix/main。cf文件。 必须先发出STARTTLS命令 如果在邮件日志(/var/log/mail.log)中看到以下错误,可能是因为在/etc/postfix/main中没有正确指定TLS证书。cf文件。 Must issue a STARTTLS command first (in reply to MAIL FROM command)) 致命:没有SASL身份验证机制 如果在邮件日志(/var/log/mail.log)中看到以下错误,可能是因为忘记重新启动dovecot(sudo systemctl restart dovecot)。 warning: SASL: Connect to private/auth failed: No such file or directory fatal: no SASL authentication mechanisms 此外,检查Dovecot是否正在运行。 sudo systemctl status dovecot 发送大量或大量电子邮件 您可以使用此SMTP服务器发送批量或批量电子邮件吗? 是的,但你应该只向合法订户发送批量电子邮件,也就是说,收件人应该已经注册了你的邮件列表。你不应该发送垃圾邮件(未经请求的批量电子邮件),否则你的SMTP服务器肯定会被列入黑名单。在发送大量电子邮件之前,我强烈建议遵循本文中的建议:如何阻止您的电子邮件被标记为垃圾邮件。 禁止在Postfix中接收电子邮件 默认情况下,Postfix SMTP服务器侦听计算机上的所有活动接口。由于Postfix SMTP服务器仅用于向用户发送事务性电子邮件,因此您可以阻止到TCP端口25的入站连接,这样坏的参与者就不能向其发送垃圾邮件。由于我们为端口25添加了一个白名单,合法用户不会受到影响。 从邮件头中删除敏感信息 默认情况下,Postfix SMTP服务器将添加一个Received:电子邮件头,记录客户端的IP地址,这可能会泄露您网站的IP地址(如果它位于CDN后面)。你可以告诉Postfix忽略它。创建一个头检查文件。 sudo nano /etc/postfix/smtp_header_checks 将以下行放入文件中。 /^Received:/ IGNORE 保存并关闭文件。然后编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在文件末尾添加以下行。 smtp_header_checks = regexp:/etc/postfix/smtp_header_checks 保存并关闭文件。然后运行以下命令重建哈希表。 sudo postmap /etc/postfix/smtp_header_checks 重新加载后缀以使更改生效。 sudo systemctl reload postfix 现在Postfix不会在邮件头中包含这些敏感信息。 自动更新TLS证书 您可以创建Cron作业来自动续订TLS证书。只需打开root用户的crontab文件。 sudo crontab -e 然后添加以下行。 @daily certbot renew --quiet 保存并关闭文件。 结论 我希望本教程能帮助您在Ubuntu上为多个域设置Postfix只发送SMTP服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:126
  • 在Debian 8服务器上安装让我们用Nginx加密免费TLS/SSL证书

    本指南介绍了如何使用Debian 8服务器上的Nginx服务器获取并安装Let's Encrypt free TLS/SSL证书。 安装Debian 8服务器上的加密客户端 Ubuntu16.04存储库已经有了让我们加密客户端。Debian测试库中也提供了该客户端。你们中的一些人可能会想,“哇,那么我们可以让jessie backports repo在Debian 8上安装Let's Encrypt client!”事实上,当我发现Debian 9存储库中包含Let’s Encrypt client时,我就是这么想的。 所以,让我们来开源。使用nano文本编辑器列出文件。 sudo nano /etc/apt/sources.list 然后在文件末尾添加以下行。 deb http://ftp.debian.org/debian jessie-backports main 然后更新本地包索引并安装letsencrypt。 sudo apt-get update sudo apt-get install letsencrypt -t jessie-backports 使用独立插件获得免费的TLS/SSL证书 当我们使用独立插件应用Let's Encrypt的TLS/SSL证书时,letsencrypt客户端将临时启动一个Web服务器,该服务器监听端口80。因此,如果您之前安装了Nginx Web服务器,并且Nginx正在运行,那么您需要使用以下命令停止它,以释放端口80。 sudo systemctl stop nginx 或 sudo service nginx stop 然后发出以下命令以获取证书。 sudo letsencrypt certonly --email <your-email-address> -d <your-domain-name> 子命令certonly告诉letsencrypt客户端获取证书,但不要安装证书,因为letsencrypt客户端在编写时不支持Nginx的自动配置。 电子邮件地址用于紧急通知和丢失的密钥恢复。替换&lt;您的电子邮件地址&gt;你的真实电子邮件地址-d选项用于指定您的域名。替换&lt;你的域名&gt;用你的真实域名。您应该将域名指向Debian 8服务器的IP地址,否则域验证将失败。 系统将要求您选择身份验证方法。选择第二个选项并按Enter键。 接下来,按Enter键输入Web根目录。 然后输入您的web根目录。两个常见的web根目录是/var/www/html和/usr/share/nginx/html/。 几秒钟后,您的证书将由Let’s Encrypt颁发。 通过添加以下选项,可以自动完成上述过程。 --webroot -w /var/www/html/ --webroot告诉letsencrypt客户端使用webroot插件-w是--webroot路径的缩写/var/www/html/是一个常见的Web根目录。因此,您可以使用以下一个命令来获取TLS/SSL证书,而无需停止Nginx。 sudo letsencrypt certonly --email <your-email-address> -d <your-domain-name> --webroot -w /var/www/html 您可能需要在Nginx服务器配置文件中添加以下指令,以允许访问。我很熟悉目录。 location ~ /.well-known {     allow all; } 续订让我们加密TLS/SSL证书 letsencrypt的配置目录是/etc/letsencrypt,在该目录下可以找到续订目录。在/etc/letsencrypt/renewal下有一些conf文件,它们定义了证书的更新方式。 运行以下命令在Debian 8服务器上测试续订过程: sudo letsencrypt renew --dry-run 您会发现letsencrypt客户端使用的插件和选项与最初颁发证书时使用的插件和选项相同。这是默认行为。 要更改用于续订的插件或选项,必须编辑/etc/letsencrypt/renewal下的conf文件。 假设您使用独立插件获取证书,但现在您想使用Webroot插件更新证书,因为您不想停止Nginx,然后打开conf文件。 sudo nano /etc/letsencrypt/renewal/your-domain-name.conf 保持前四行不变,将更新参数更改为以下参数。 # Options used in the renewal process [renewalparams] authenticator = webroot installer = None account = 2d29325aa8757ab4198e96d1c7b46eb6 webroot_path = /var/www/html, [[webroot_map]] your-domain-name = /var/www/html 你的账号可以在/etc/letsencrypt/accounts/acme-v01上找到。应用程序编程接口。letsencrypt。org/directory/。 然后再次测试更新过程。 sudo letsencrypt renew --dry-run --webroot-path /var/www/html 您将看到它现在正在使用Webroot插件更新证书。 要开始真正的更新过程,只需删除--dry run选项。 sudo letsencrypt renew --webroot-path /var/www/html 上述命令将尝试续订30天内到期的证书。您可以使用以下命令打开root用户的crontab文件。 sudo crontab -e 创建一个cron作业。 0 5 * * * letsencrypt renew --webroot-path /var/www/html

    2022.03.24 浏览:122