• 如何修复常见的Nginx Web服务器错误

    Nginx是当今非常流行的web服务器。本文将向您展示运行Nginx web服务器时的一些常见错误以及可能的解决方案。这不是一个完整的列表。如果在尝试建议的解决方案后仍然无法修复错误,请检查/var/log/Nginx/目录下的Nginx服务器日志,并在谷歌上搜索以调试问题。 无法连接/拒绝连接 如果在尝试访问网站时看到以下错误: Firefox can’t establish a connection to the server at www.example.com 或 www.example.com refused to connect 或 The site can't be reached, www.example.com unexpectedly closed the connection. 可能是这样 Nginx没有运行。您可以使用sudo systemctl status Nginx检查Nginx状态。使用sudo systemctl Start Nginx启动Nginx。如果Nginx无法启动,请运行sudo Nginx-t以查看配置文件是否有任何问题。并查看日志(sudo journalctl-eu nginx),找出它无法启动的原因。 防火墙阻止端口80和443。如果在Debian/Ubuntu上使用UFW防火墙,请运行sudo UFW allow 80443/tcp以打开tcp端口80和443。如果在RHEL/CentOS/Rocky Linux/AlmaLinux上使用Firewalld,请运行sudo firewall cmd--permanent--add service={http,https},然后sudo systemctl重新加载Firewalld以打开TCP端口80和443。 失败2本。如果您的服务器使用fail2ban阻止恶意请求,则可能是fail2ban禁止了您的IP地址。运行sudo journalctl-eu fail2ban检查您的IP地址是否被禁止。您可以将您的IP地址添加到fail2ban ignoreip列表中,这样就不会再次被禁止。 Nginx没有在正确的网络接口上监听。例如,Nginx没有监听服务器的公共IP地址。 连接已超时 这可能意味着您的服务器处于脱机状态,或者Nginx无法正常工作。我曾经有过一个内存不足的问题,这导致Nginx无法生成工作进程。如果您可以在/var/log/nginx/error中看到以下错误消息。日志文件,服务器内存不足。 fork() failed while spawning "worker process" (12: Cannot allocate memory) 404找不到 404找不到意味着Nginx找不到您的web浏览器要求的资源。原因可能是: 服务器上不存在web根目录。在Nginx中,web roor目录是使用root指令配置的,如下所示:root/usr/share/Nginx/linuxbabe。com/;。确保您的网站文件(HTML、CSS、JavaScript、PHP)存储在正确的目录中。 PHP-FPM没有运行。您可以使用sudo systemctl status php7检查PHP-FPM状态。4-fpm(Debian/Ubuntu)或sudo systemctl status php fpm。 您忘记包含try_文件$uri/索引。php$is_args$args;Nginx服务器配置文件中的指令。处理PHP代码需要此指令。 您的服务器没有可用磁盘空间。试着释放一些磁盘空间。您可以使用ncdu实用程序(sudo-apt-install-ncdu或sudo-dnf-install-ncdu)找出哪些目录占用了大量磁盘空间。 403禁止 此错误意味着不允许您访问请求资源。可能的情况包括: 网站管理员通过IP白名单或其他方法阻止公众访问请求的资源。 该网站可能使用ModSecurity等web应用程序防火墙,该防火墙检测到入侵攻击,因此阻止了请求。 发生403时,某些web应用程序可能会显示不同的错误消息。它可能会告诉您“安全连接失败”,而原因是相同的。 500内部服务器错误 这意味着web应用程序中存在一些错误。可能是这样 数据库服务器已关闭。使用sudo systemctl status MySQL检查MySQL/MariaDB状态。用sudo systemctl Start mysql启动它。运行sudo journalctl-eu mysql,找出它无法启动的原因。MySQL/MariaDB进程可能因内存不足而被终止。 您没有将Nginx配置为使用PHP-FPM,因此Nginx不知道如何执行PHP代码。 如果web应用程序具有内置缓存,则可以尝试刷新应用缓存以修复此错误。 您的web应用程序可能会生成自己的错误日志。检查此日志文件以调试此错误。 您的web应用程序可能具有调试模式。打开它,您将在网页上看到更详细的错误消息。例如,通过在/srv/Modoboa/instance/instance/settings中设置DEBUG=True,可以在Modoboa邮件服务器托管平台中打开调试模式。py文件。 PHP-FPM可能会过载。检查PHP-FPM日志(例如/var/log/php7.4-FPM.log)。如果您发现[pool www]似乎很忙(您可能需要增加pm.start_服务器或pm.min/max_spare_服务器)警告消息,则需要为PHP-FPM分配更多资源。 有时重新加载PHP-FPM(sudo systemctl reload php7.4-FPM)可以修复错误。 Nginx显示默认页面 如果您试图设置Nginx虚拟主机,并且在web浏览器中键入域名时,会显示默认的Nginx页面,它可能是 您在Nginx虚拟主机中的server_name指令没有使用真实的域名。 你忘了重新加载Nginx。 页面没有正确重定向 Firefox显示此错误,因为页面没有正确重定向。Google Chrome将此错误显示为www.example。com重定向了你太多次。 这意味着您配置Nginx重定向的次数过多。例如,您可能在https服务器块中添加了一个不必要的return 301指令,以将HTTP重定向到https连接。 如果已经设置了页面缓存,比如Nginx FastCGI缓存,则需要清除服务器页面缓存。 504网关超时 这意味着像PHP-FPM/MySQL/MariaDB这样的上游服务器无法足够快地处理请求。您可以尝试重新启动PHP-FPM以暂时修复错误,但最好开始调优PHP-FPM/MySQL/MariaDB以获得更快的性能。 以下是my/etc/mysql/mariadb中的InnoDB配置。conf.d/50-server。cnf文件。这是一个非常简单的性能调整。 innodb_buffer_pool_size = 1024M innodb_buffer_pool_dump_at_shutdown = ON innodb_buffer_pool_load_at_startup = ON innodb_log_file_size = 512M innodb_log_buffer_size = 8M #Improving disk I/O performance innodb_file_per_table = 1 innodb_open_files = 400 innodb_io_capacity = 400 innodb_flush_method = O_DIRECT innodb_read_io_threads = 64 innodb_write_io_threads = 64 innodb_buffer_pool_instances = 3 哪里: InnoDB缓冲池大小至少需要为RAM的一半。(对于具有少量RAM的VP,我建议将缓冲池大小设置为较小的值,如400M,否则VP将耗尽RAM。) InnoDB日志文件大小需要为缓冲池大小的25%。 将读IO线程和写IO线程设置为最大值(64),然后 让MariaDB使用3个InnoDB缓冲池实例。实例数必须与系统上的CPU核数相同。 保存更改后,重新启动MariaDB。 sudo systemctl restart mariadb 您还可以在Nginx中设置更长的超时值,以减少网关超时的机会。编辑Nginx虚拟主机文件,并在服务器{…}中添加以下行块 proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; 如果将Nginx与PHP-FPM结合使用,那么将fastcgi_read_timeout设置为更大的值,比如300秒。默认值为60秒。 location ~ /.php$ { try_files $uri /index.php$is_args$args; include snippets/fastcgi-php.conf; fastcgi_split_path_info ^(.+/.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_read_timeout 300; } 然后重新加载Nginx。 sudo systemctl reload nginx PHP-FPM也有每个脚本的最大执行时间。编辑php。ini文件。 sudo nano /etc/php/7.4/fpm/php.ini 可以将该值增加到300秒。 max_execution_time = 300 然后重启PHP-FPM sudo systemctl restart php7.4-fpm 内存耗尽 如果您在Nginx错误日志中看到以下行,则表示PHP达到了128MB内存限制。 PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 57134520 bytes) 你可以编辑php。ini文件(/etc/php/7.4/fpm/php.ini),并增加php内存限制。 memory_limit = 512M 然后重启PHP7。4-FPM。 sudo systemctl restart php7.4-fpm 如果错误仍然存在,那么很可能是web应用程序中的坏PHP代码消耗了大量RAM。 PR_END_文件错误 您已将Nginx配置为将HTTP请求重定向到HTTPS,但Nginx中没有服务HTTPS请求的服务器块。 也许Nginx没有运行? 有时,主Nginx二进制文件正在运行,但辅助进程可能会由于各种原因而失败并退出。检查要调试的Nginx错误日志(/var/log/Nginx/error.log)。 PHP-FPM上游超时 有些人可以在Nginx错误日志文件(在/var/log/Nginx/下)中找到以下错误。 [error] 7553#7553: *2234677 upstream timed out (110: Connection timed out) while reading response header from upstream 可能的解决方案: 重新启动PHP-FPM。 升级内存。 资源暂时不可用 有些人可以在Nginx错误日志文件(在/var/log/Nginx/下)中找到以下错误。 connect() to unix:/run/php/php7.4-fpm.sock failed (11: Resource temporarily unavailable) 这通常意味着你的网站有很多访问者,PHP-FPM无法处理大量的请求。您可以调整PHP-FPM子进程的数量,以便它可以处理更多请求。 编辑PHP-FPM www.conf文件。(文件路径因Linux发行版而异。) sudo /etc/php/7.4/fpm/pool.d/www.conf 默认的子进程配置如下所示: pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 上述配置意味着 PHP-FPM动态创建子进程。没有固定数量的子进程。 它最多创建5个子进程。 PHP-FPM启动时启动2个子进程。 至少有一个空闲进程。 最多有3个空闲进程。 默认设置基于没有太多资源的服务器,比如只有1GB RAM的服务器。如果你有一个高流量的网站,你可能想增加子进程的数量,这样它就可以满足更多的请求。 pm = dynamic pm.max_children = 20 pm.start_servers = 8 pm.min_spare_servers = 4 pm.max_spare_servers = 12 确保有足够的RAM来运行更多的子进程。保存并关闭文件。然后重启PHP-FPM。(您可能需要更改版本号。) sudo systemctl restart php7.4-fpm 要监视PHP-FPM的运行状况,可以启用状态页面。在PHP-FPM www.conf文件中找到以下行。请注意: ;pm.status_path = /status 删除分号以启用PHP-FPM状态页。然后重启PHP-FPM。 sudo systemctl restart php7.4-fpm 然后编辑Nginx虚拟主机文件。添加以下行。allow和deny指令用于限制访问。只有白名单上的IP地址才能访问状态页面。 location ~ ^/(status|ping)$ { allow 127.0.0.1; allow your_other_IP_Address; deny all; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index index.php; include fastcgi_params; #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/run/php/php7.4-fpm.sock; } 保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl reload nginx PHP-FPM状态页面示例。 PHP-FPM www.conf文件很好地解释了每个参数的含义。 如果PHP-FPM非常忙,无法立即为请求提供服务,它将对该请求进行排队。默认情况下,最多可以有511个未决请求,由侦听器决定。backlog参数。 listen.backlog = 511 如果您在PHP-FPM状态页面上看到以下值,则表示从未有请求放入队列,即您的PHP-FPM可以快速处理请求。 listen queue: 0 max listen queue: 0 如果队列中有511个挂起的请求,这意味着您的PHP-FPM非常繁忙,因此您应该增加子进程的数量。 您可能还需要更改Linux内核网络。果心somaxconn设置,它定义了Linux上套接字文件(如PHP-FPM Unix套接字文件)允许的最大连接数。默认情况下,其值在内核5.4之前为128,从内核5.4开始为4096。 [email protected]:~$ sysctl net.core.somaxconn net.core.somaxconn = 128 如果你经营一个高流量的网站,你可以使用一个大的价值。编辑/etc/sysctl。conf文件。 sudo nano /etc/sysctl.cnf 添加以下两行。 net.core.somaxconn = 20000 net.core.netdev_max_backlog = 65535 保存并关闭文件。然后应用设置。 sudo sysctl -p 注意:如果您的服务器有足够的RAM,您可以为PHP-FPM分配固定数量的子进程,如下所示。根据我的经验,这修复了Joomla+Virtuemart网站的500个内部错误。 pm = static pm.max_children = 50 同一网站的两个虚拟主机文件 如果运行sudo nginx-t并看到以下警告。 nginx: [warn] conflicting server name "example.com" on [::]:443, ignored nginx: [warn] conflicting server name "example.com" on 0.0.0.0:443, ignored 这意味着有两个虚拟主机文件包含相同的服务器名称配置。不要为一个网站创建两个虚拟主机文件。 对等端重置PHP-FPM连接 Nginx错误日志文件显示以下消息。 recv() failed (104: Connection reset by peer) while reading response header from upstream 这可能是由于重新启动PHP-FPM造成的。如果您自己手动重新启动,则可以忽略此错误。 Nginx插座泄漏 如果在/var/log/nginx/error中发现以下错误消息。日志文件,您的Nginx存在套接字泄漏问题。 2021/09/28 13:27:41 [alert] 321#321: *120606 open socket #16 left in connection 163 2021/09/28 13:27:41 [alert] 321#321: *120629 open socket #34 left in connection 188 2021/09/28 13:27:41 [alert] 321#321: *120622 open socket #9 left in connection 213 2021/09/28 13:27:41 [alert] 321#321: *120628 open socket #25 left in connection 217 2021/09/28 13:27:41 [alert] 321#321: *120605 open socket #15 left in connection 244 2021/09/28 13:27:41 [alert] 321#321: *120614 open socket #41 left in connection 245 2021/09/28 13:27:41 [alert] 321#321: *120631 open socket #24 left in connection 255 2021/09/28 13:27:41 [alert] 321#321: *120616 open socket #23 left in connection 258 2021/09/28 13:27:41 [alert] 321#321: *120615 open socket #42 left in connection 269 2021/09/28 13:27:41 [alert] 321#321: aborting 你可以重启操作系统来解决这个问题。如果不起作用,您需要编译一个调试版本的Nginx,它会在日志中显示调试信息。 Cloudflare错误 如果您的网站运行在Cloudflare CDN(内容交付网络)之后,以下是一些常见错误和解决方案。 521网络服务器关闭 Nginx没有运行。 您没有在防火墙中打开TCP端口80和443。 您更改了服务器IP地址,但忘记在Cloudflare中更新DNS记录。 页面没有正确重定向 如果您在SSL/TLS应用程序上的SSL设置设置为“灵活”,但您的源服务器配置为将HTTP请求重定向到HTTPS,则您的Nginx服务器会以加密连接将响应发送回Cloudflare。由于Cloudflare需要HTTP流量,因此它会不断重新发送相同的请求,从而导致重定向循环。在这种情况下,您需要在Cloudflare设置中使用完整(严格)SSL/TLS选项。 收尾 我希望本文能帮助您修复常见的Nginx web服务器错误。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门?

    2022.03.24 浏览:3770
  • 如何使用Mailjet在Ubuntu上设置后缀SMTP中继

    本教程将向您展示如何在Ubuntu上使用Mailjet设置Postfix SMTP中继。Postfix是一种流行的开源SMTP服务器。之前我写过一篇文章,介绍如何使用iRedMail在Ubuntu上轻松设置一个完整的电子邮件服务器,帮助很多读者运行自己的电子邮件服务器。 然而,一些读者告诉我,作为控制垃圾邮件的一种方式,25端口被主机提供商或ISP屏蔽,因此他们无法发送电子邮件。如果你要求,Vultr会解锁端口25,而ScalaHost根本不会阻止端口25,所以我建议使用ScalaHost VPS,其他一些主机提供商或ISP(如DigitalOcean)会拒绝解锁端口25。 SMTP接力救援 您可以绕过端口25,通过SMTP中继向外部世界发送电子邮件,因为它使用端口587。使用SMTP中继,您自己的电子邮件服务器不会直接将电子邮件发送到目标电子邮件地址。相反,有一个中间邮件服务器,也称为智能主机或中继主机,代表您发送电子邮件。您的电子邮件服务器通过端口587与智能主机通信,然后智能主机通过端口25与收件人的邮件服务器通信。 SMTP中继还可以帮助您绕过反垃圾邮件黑名单,如果您的IP地址因任何原因被列入黑名单。收件人的邮件服务器根据公共反垃圾邮件黑名单检查智能主机的IP地址,而不是检查您的服务器IP地址,因为SMTP中继服务保持良好的IP信誉,所以您的电子邮件可以通过IP黑名单。 使用Mailjet每天免费发送200封电子邮件 有几个电子邮件服务提供商(ESP)可以充当智能主机。有些收取一点费用,有些每月提供免费配额。在本文中,我想向您展示如何使用Mailjet,这是一家电子邮件服务提供商,允许您每天免费发送200封电子邮件。 Mailjet的好处在于,当你使用免费的SMTP中继服务时,它不需要你输入信用卡的详细信息。还有其他ESP每月提供免费配额,但要求您输入信用卡详细信息。(我知道当你没有信用卡时会有多沮丧。)与其他ESP相比,Mailjet也更容易设置。 在mailjet上创建一个帐户。通用域名格式。然后在仪表板上,你可以看到你需要做的三件事。 设置SMTP 管理发件人地址 设置域身份验证(SPF和DKIM) 第一步:在Ubuntu上设置后缀SMTP中继 首先,让我们使用以下命令在Ubuntu上安装Postfix SMTP服务器。如果Postfix已经在您的服务器上运行,那么请跳过安装Postfix,但您仍然需要安装libsasl2模块包。 sudo apt install postfix libsasl2-modules 当您看到以下消息时,按Tab键并按Enter键。 然后选择第二个选项:互联网站点。 接下来,设置系统邮件名称。例如,我输入我的域名linuxbabe。通用域名格式。 安装Postfix后,打开配置文件。 sudo nano /etc/postfix/main.cf 找到下面这行。 relayhost = 默认情况下,不会设置其值。你需要从你的mailjet账户中获取这个值。在mailjet仪表板中,单击设置我的SMTP。 您将看到SMTP服务器地址和SMTP凭据。 在Postfix配置文件中,将relayhost的值设置为In-v3。mailjet。com:587。 relayhost = in-v3.mailjet.com:587 然后将以下行添加到此文件的末尾。 # outbound relay configurations smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may header_size_limit = 4096000 保存并关闭文件。然后创建/etc/postfix/sasl_passwd文件。 sudo nano /etc/postfix/sasl_passwd 将SMTP中继主机和SMTP凭据添加到此文件,如下所示。用真正的Mailjet api密钥和密钥替换api密钥和密钥。 in-v3.mailjet.com:587  api-key:secret-key 保存并关闭文件。然后用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将通过mailjet发送电子邮件。 第2步:添加发件人地址 要通过mailjet发送电子邮件,您需要添加发件人域或发件人地址。在mailjet dashboard中,单击管理发件人地址。您可以验证整个域或特定电子邮件地址。 步骤3:设置域身份验证 在这一步中,我们需要设置SPF和DKIM记录,如果您希望您的电子邮件进入收件人的收件箱而不是垃圾邮件文件夹,强烈建议您这样做。 SPF:发送方策略框架。这是一个DNS记录,指定允许哪些IP地址从您的域发送电子邮件。 DKIM:DomainKeys已识别邮件。Mailjet将使用私钥对您的电子邮件进行数字签名。DKIM记录包含一个公钥,允许收件人的电子邮件服务器验证签名。 在mailjet仪表板中,单击设置域身份验证。默认情况下,SPF状态和DKIM状态都是错误的。单击管理按钮并按照说明添加SPF和DKIM记录。 创建SPF和DKIM记录后,请稍等片刻,然后刷新mailjet网页。您的新DNS记录可能需要一些时间才能在Internet上传播,具体取决于您的DNS托管服务。如果SPF和DKIM记录设置正确且传播完成,mailjet会告诉您SPF和DKIM记录良好。 发送测试电子邮件 现在我们可以使用mailx命令发送测试电子邮件,如下所示。 sudo apt install bsd-mailx echo "this is a test email." | mailx -r from-address -s hello to-address 您还可以从webmail客户端或桌面邮件客户端发送测试电子邮件。在网上测试你的电子邮件分数也是个好主意https://www.mail-tester.com.如你所见,我得了满分。 故障排除 如果您的电子邮件未送达,而您在邮件日志(/var/log/mail.log)中发现以下消息, Relay access denied (in reply to RCPT TO command)) 然后,您可能需要编辑/etc/postfix/sasl_passwd文件,并删除主机名后面的端口号,如下所示。 in-v3.mailjet.com  api-key:secret-key 保存并关闭文件。然后再次构建索引文件。 sudo postmap /etc/postfix/sasl_passwd 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以刷新电子邮件队列(尝试发送以前的电子邮件)。 sudo postqueue -f 添加其他域 如果在新计算机上为新域名设置邮件服务器,并且要为此新域名设置SMTP中继,请执行相同的步骤: 配置后缀SMTP中继设置, 在Mailjet仪表板中验证新域名 设置SPF和DKIM验证 收尾 就这样!我希望本教程能帮助你在Ubuntu上设置Postfix SMTP中继,绕过端口25或IP黑名单。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心。

    2022.03.24 浏览:157
  • 如何使用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 浏览:57
  • 如何使用Sendinblue在Ubuntu上设置后缀SMTP中继

    本教程将向您展示如何在Ubuntu上使用Sendinblue设置Postfix SMTP中继。Postfix是一种流行的开源SMTP服务器。之前我写过一篇文章,介绍如何使用iRedMail在Ubuntu上轻松设置一个完整的电子邮件服务器,这有助于许多读者运行自己的电子邮件服务器。 然而,一些读者告诉我,作为控制垃圾邮件的一种方式,托管提供商/ISP阻止了端口25,因此他们无法发送电子邮件。如果您要求,Vultr将解锁端口25,ScalaHost根本不会阻止端口25,因此我建议使用ScalaHost VPS。DigitalOcean等其他一些主机提供商/ISP将拒绝解除对25号端口的封锁。 本教程适用于所有当前的Ubuntu版本,包括Ubuntu 18.04、Ubuntu 20.04和Ubuntu 21.04。 SMTP接力救援 您可以绕过端口25,通过SMTP中继发送电子邮件,因为它使用TCP端口587。使用SMTP中继,您自己的电子邮件服务器不会直接将电子邮件发送到目标电子邮件地址。相反,有一个中间邮件服务器,也称为智能主机或中继主机,代表您发送电子邮件。您的电子邮件服务器通过TCP端口587与中继主机通信,然后中继主机通过端口25与收件人的邮件服务器通信。 SMTP中继还可以帮助您绕过反垃圾邮件黑名单,如果您的IP地址因任何原因被列入黑名单。收件人的邮件服务器会根据公共反垃圾邮件黑名单检查中继主机的IP地址,而不是您的服务器IP地址,因为SMTP中继服务保持良好的IP信誉,所以您的电子邮件可以通过IP黑名单。 使用Sendinblue每天免费发送300封电子邮件 有几个电子邮件服务提供商(ESP)可以充当中继主机。有些收取一点费用,有些每月提供免费配额。在本文中,我想向您展示如何使用Sendinblue,这是一家电子邮件服务提供商,允许您每天免费发送300封电子邮件。 Sendinblue的好处在于,当你使用免费的SMTP中继服务时,它不需要你输入信用卡的详细信息。还有其他ESP每月提供免费配额,但要求您输入信用卡详细信息。我知道当你没有信用卡时会有多沮丧。与其他ESP相比,Sendinblue也更容易设置。 步骤1:创建Sendinblue帐户 在sendinblue创建一个免费帐户。通用域名格式。完成用户配置文件后,单击事务选项卡,您将获得SMTP设置。如果没有SMTP设置,您需要联系Sendinblue客户服务以激活事务性电子邮件服务。 现在,您需要配置Postfix SMTP服务器以使用Sendinblue SMTP设置。 步骤2:使用Sendinblue设置后缀SMTP中继 首先,让我们使用以下命令在Ubuntu上安装Postfix SMTP服务器。如果Postfix已经在您的服务器上运行,那么请跳过安装Postfix,但您仍然需要安装libsasl2模块包。 sudo apt install postfix libsasl2-modules 当您看到以下消息时,按Tab键并按Enter键。 然后选择第二个选项:互联网站点。 接下来,设置系统邮件名称。例如,我输入我的域名linuxbabe。通用域名格式。 安装Postfix后,使用命令行文本编辑器(如Nano)打开主配置文件。 sudo nano /etc/postfix/main.cf 找到下面这行。 relayhost = 默认情况下,其值为空。将relayhost的值设置为[smtp relay.sendinblue.com]:587。 relayhost = [smtp-relay.sendinblue.com]:587 然后将以下行添加到此文件的末尾。 # outbound relay configurations smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous smtp_tls_security_level = may header_size_limit = 4096000 保存并关闭文件。然后创建/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发送电子邮件。 第3步:添加发件人地址 单击Sendinblue account仪表板右上角的下拉菜单,然后选择发件人&amp;“IP”选项卡以添加您的域和发件人地址。 步骤4:在SendinBlue中设置SPF/DKIM身份验证 在这一步中,我们需要设置SPF和DKIM记录,如果您希望您的电子邮件进入收件人的收件箱而不是垃圾邮件文件夹,强烈建议您这样做。 SPF:发送方策略框架。这是一个DNS记录,指定允许为您的域发送电子邮件的IP地址。 DKIM:DomainKeys已识别邮件。Sendinblue将使用私钥对您的电子邮件进行数字签名。DKIM记录包含一个公钥,允许收件人的电子邮件服务器验证签名。 在SendinBlue仪表板中,单击右上角的帐户名,然后单击Senders&amp;IPs。选择域选项卡-&gt;管理-&gt;验证这个域。 一个弹出窗口出现。您需要为您的域添加前3条记录。 创建SPF和DKIM记录后,请稍等片刻,然后单击添加的记录。请确认一下按钮。根据您的DNS托管服务,您的新DNS记录可能需要一些时间才能在Internet上传播。 去https://dnsmap.io检查您的DNS记录是否已传播到Internet。 有关DKIM记录,请访问https://www.dmarcanalyzer.com/dkim/dkim-check/,输入mail作为选择器,并输入域名以检查DKIM记录传播以及DKIM记录中是否存在错误。 如果SPF和DKIM记录设置正确且经过验证,则您的域将在Sendinblue中通过身份验证。 发送测试电子邮件 现在我们可以使用mailx命令发送测试电子邮件,如下所示。 sudo apt install bsd-mailx echo "this is a test email." | mailx -r from-address -s hello to-address 您还可以从webmail客户端或桌面邮件客户端发送测试电子邮件。在网上测试你的电子邮件分数也是个好主意https://www.mail-tester.com.如你所见,我得了满分。 故障排除 如果您的电子邮件未送达,而您在邮件日志(/var/log/mail.log)中发现以下消息, Relay access denied (in reply to RCPT TO command)) 然后,您可能需要编辑/etc/postfix/sasl_passwd文件,并删除主机名后面的端口号,如下所示。 smtp-relay.sendinblue.com smtp_username:smtp_passowrd 保存并关闭文件。然后再次构建索引文件。 sudo postmap /etc/postfix/sasl_passwd 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以刷新电子邮件队列(尝试发送以前的电子邮件)。 sudo postqueue -f 添加其他域 如果您在新主机上为新域名设置邮件服务器,并且希望为此新域名设置SMTP中继,则只需再次执行步骤2、步骤3和步骤4。 收尾 就这样!我希望本教程能帮助你在Ubuntu上设置Postfix SMTP中继,绕过端口25或IP黑名单。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:161
  • 在CentOS 8上设置Postfix仅发送SMTP服务器

    在本文中,我将向您展示如何在CentOS 8上将Postfix设置为仅发送SMTP服务器。我将首先向您展示如何为单个域执行此操作,然后如果需要,您可以为多个域应用这些步骤。 用例 您有一个需要向用户发送事务性电子邮件(如密码重置电子邮件)的网站/web应用程序。最有可能的是,用户不需要回复这些电子邮件,或者如果他们回复,回复电子邮件将被发送到您的专用邮件服务器。在这种情况下,可以使用Postfix(一种流行的SMTP服务器软件)在web服务器上设置只发送SMTP服务器。 先决条件 要从服务器发送电子邮件,端口25(出站)必须打开。许多ISP和托管公司,如DigitalOcean block port 25来控制垃圾邮件。我建议使用ScalaHost,因为它不会阻止端口25(出站)。拥有ScalaHost服务器后,在其上安装CentOS 8,并按照以下说明操作。 为多个域设置Postfix仅发送SMTP服务器实际上并不困难。首先,我们需要为一个域配置它,然后为多个域设置它。 第一步:设置主机名和PTR记录 默认情况下,Postfix在与其他SMTP服务器通信时使用服务器的主机名来标识自身。如果您的主机名无效,某些SMTP服务器将拒绝您的电子邮件。您应该设置一个完整的限定域名(FQDN),如下所示。 sudo hostnamectl set-hostname mta1.yourdomain.com 要检查服务器的主机名,请运行 hostname -f 您需要注销并重新登录,才能在命令提示下看到主机名的更改。这个主机名应该有一个指向服务器IP地址的DNS a记录。 此外,还需要设置一个PTR记录(又名指针记录),将IP地址映射到FQDN。这是A唱片的对应品。如果你的服务器IP地址没有PTR记录,许多SMTP服务器会拒绝你的电子邮件。 因为您从主机提供商或ISP获得IP地址,而不是从域注册商获得,所以您必须在主机提供商的控制面板中为您的IP设置PTR记录,或者询问ISP。例如,在ScalaHost中,您可以通过打开支持票证或使用他们网站上的实时聊天来设置PTR记录。尽管您可以将PTR记录设置为任何主机名,但为了获得最佳实践,您应该使用刚刚设置的FQDN。 要查看PTR记录设置是否正确,请运行以下命令。将12.34.56.78替换为您自己的IP地址。 host 12.34.56.78 请注意,如果服务器使用IPv6地址,最好为FQDN添加AAAA记录,并为IPv6地址设置PTR记录。 第2步:在CentOS 8上安装Postfix 运行以下命令,从默认的CentOS 8存储库安装Postfix。 sudo dnf update sudo dnf install postfix -y 安装后,启动Postfix SMTP服务器。 sudo systemctl start postfix 并在启动时启用自动启动。 sudo systemctl enable postfix 第3步:配置后缀 设置后缀主机名 默认情况下,Postfix SMTP服务器在与其他SMTP服务器通信时使用操作系统的主机名来标识自身。但是,OS主机名可能会更改,因此使用以下命令直接在Postfix配置文件中设置主机名是一种好的做法。 sudo postconf -e "myhostname = mta1.yourdomain.com" 设置$mydomain参数 $mydomain参数指定本地internet域名。默认情况下,使用$myhostname减去第一个组件。您可以通过以下方式显示$mydomain的当前值: postconf mydomain 它应该是你的顶级域名,比如 linuxbabe.com 如果它没有显示您的apex域名,则将$mydomain参数设置为: sudo postconf -e "mydomain = yourdomain.com" 设置$myorigin参数 $myorigin参数指定附加到没有@domain部分的发件人和收件人地址的默认域名。默认设置是使用$myhostname的值,如下所示: postconf myorigin 输出: myorigin = $myhostname 您可以将其值更改为您的域。通用域名格式。 sudo postconf -e "myorigin = yourdomain.com" 重新启动后缀 最后,我们需要重新启动Postfix以使更改生效。 sudo systemctl restart postfix 第4步:在CentOS 8上安装和配置OpenDKIM DKIM代表域密钥识别邮件。你可以在你的服务器上安装OpenDKIM,并使用它为从你的域发送的电子邮件添加签名,使用你的私钥。接收SMTP服务器使用您在DNS中发布的相应公钥验证签名。如果你想让你的邮件进入收件人的收件箱,添加DKIM签名是必须的。 从EPEL(企业Linux的额外软件包)存储库安装OpenDKIM。 sudo dnf install epel-release sudo dnf install opendkim perl-Getopt-Long 编辑OpenDKIM主配置文件。 sudo nano /etc/opendkim.conf 找到下面这行。 Mode v 默认情况下,OpenDKIM以验证模式(v)运行,该模式将验证传入电子邮件的DKIM签名。我们需要对发送的电子邮件进行签名,因此将此行更改为以下内容以启用签名模式。 Mode sv 找到下面一行并注释掉,因为我们将为每个域名使用单独的密钥。 KeyFile /etc/opendkim/keys/default.private 接下来,找到以下4行并取消注释。 # KeyTable /etc/opendkim/KeyTable # SigningTable refile:/etc/opendkim/SigningTable # ExternalIgnoreList refile:/etc/opendkim/TrustedHosts # InternalHosts refile:/etc/opendkim/TrustedHosts 保存并关闭文件。 创建签名表、密钥表和受信任主机文件 编辑签名表文件。 sudo nano /etc/opendkim/SigningTable 在该文件末尾添加以下行。这会告诉OpenDKIM,如果服务器上的发件人正在使用@your域。com地址,则应使用mta1标识的私钥对其进行签名_域名。你的领域。通用域名格式。 *@your-domain.com mta1._domainkey.your-domain.com mta1是DKIM选择器。域名可能有多个DKIM密钥。DKIM选择器允许您选择特定的DKIM键。您可以为DKIM选择器使用任何名称。我认为使用主机名最左边的部分作为DKIM选择器很方便。保存并关闭文件。然后编辑密钥表文件。 sudo nano /etc/opendkim/KeyTable 添加以下行,指定DKIM私钥的位置。 mta1._domainkey.your-domain.com your-domain.com:mta1:/etc/opendkim/keys/your-domain.com/mta1.private 保存并关闭文件。接下来,编辑受信任的主机文件。 sudo nano /etc/opendkim/TrustedHosts 默认情况下,127.0.0.1和::1包含在此文件中。现在添加以下行。这告诉OpenDKIM,如果电子邮件来自您自己的域名,那么OpenDKIM不应该对该电子邮件执行DKIM验证。 *.your-domain.com 保存并关闭文件。 生成私钥/公钥对 由于DKIM用于对发送的邮件进行签名和验证接收的邮件,因此需要生成一个私钥来对发送的电子邮件进行签名,并生成一个公钥来接收SMTP服务器,以验证电子邮件的DKIM签名。公钥将在DNS中发布。 为域创建一个单独的文件夹。 sudo mkdir /etc/opendkim/keys/your-domain.com 使用opendkim genkey工具生成密钥。 sudo opendkim-genkey -b 2048 -d your-domain.com -D /etc/opendkim/keys/your-domain.com -s mta1 -v 上述命令将创建2048位密钥-d(域)指定域-D(目录)指定存储密钥的目录。我使用mta1作为DKIM选择器。命令执行后,私钥将写入mta1。私有文件和公钥将写入mta1。txt文件。 默认情况下,只有root用户可以读取和写入密钥文件。使opendkim成为私钥的所有者。 sudo chown opendkim:opendkim /etc/opendkim/keys/ -R 在DNS记录中发布您的公钥 显示公钥 sudo cat /etc/opendkim/keys/your-domain.com/mta1.txt p参数后面的字符串是公钥。 在DNS管理器中,创建一个TXT记录,输入mta1_名称字段中的domainkey。然后返回终端窗口,复制括号中的所有内容,并将其粘贴到DNS记录的值字段中。您需要删除值字段中的所有双引号和换行符。如果不删除它们,那么下一步中的密钥测试可能会失败。 测试DKIM密钥 在CentOS 8服务器上输入以下命令以测试密钥。 sudo opendkim-testkey -d your-domain.com -s mta1 -vvv 如果一切正常,您将看到键OK消息。 opendkim-testkey: using default configfile /etc/opendkim.conf opendkim-testkey: checking key 'mta1._domainkey.linuxbabe.com' opendkim-testkey: key OK 如果你看到“钥匙不安全”,不要惊慌。这是因为您的域名上未启用DNSSEC。DNSSEC是安全DNS查询的安全标准。大多数域名都没有启用DNSSEC。你可以继续遵循这个指南。 现在我们可以启动opendkim服务了。 sudo systemctl start opendkim 并在启动时启用自动启动。 sudo systemctl enable opendkim OpenDKIM监听127.0.0.1:8891。 第5步:将Postfix连接到OpenDKIM 编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在这个文件的末尾添加以下几行,这样Postfix就可以通过milter协议调用OpenDKIM了。请注意,应该使用127.0.0.1作为地址。不要使用localhost。 # Milter configuration milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = $smtpd_milters 保存并关闭文件。然后将postfix用户添加到opendkim组。 sudo gpasswd -a postfix opendkim 重新启动后缀服务。 sudo systemctl restart postfix 步骤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' ); 保存文件,就完成了。 步骤8:为发送的电子邮件启用TLS加密 默认情况下,Postfix在发送邮件时不使用TLS加密。要启用TLS加密,请打开/etc/postfix/main。cf文件,并在该文件末尾添加以下两行。 smtp_tls_security_level = may smtp_tls_loglevel = 1 第一行为Postfix SMTP客户端启用TLS加密。第二行将把TLS连接记录在/var/log/maillog文件中,这样您就可以检查TLS加密是否有效。保存并关闭文件。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 由于Postfix不接收传入的电子邮件,因此无需为Postfix SMTP守护程序配置有效的TLS证书。 第9步:测试发送者分数 现在去https://www.mail-tester.com.你会看到一个独特的电子邮件地址。从Postfix SMTP服务器上的网站向此地址发送电子邮件,然后检查您的分数。如你所见,我得了满分。在测试结果中,您应该检查您的PTR记录、SPF和DKIM记录是否有效。 还可以打开/var/log/maillog文件,检查是否使用了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,需要在签名表、密钥表和可信主机文件中添加其他域,如下所示。 签名表: *@example.com mta1._domainkey.example.com *@example.net mta1._domainkey.example.net 键表: mta1._domainkey.example.com example.com:mta1:/etc/opendkim/keys/example.com/mta1.private mta1._domainkey.example.net example.net:mta1:/etc/opendkim/keys/example.net/mta1.private 受信任的主机: 127.0.0.1 localhost *.example.com *.example.net 然后按照上述步骤为其他域生成DKIM私钥/公钥对,并在DNS中添加DKIM公钥。重新启动OpenDKIM,就完成了。别忘了测试你的发件人分数。 故障排除 如果您的邮件未签名且DKIM检查失败,您可能需要检查postfix日志(/var/log/maillog)以查看配置中的错误。 从另一台服务器发送电子邮件 有两种方法允许其他服务器通过只发送Postfix SMTP服务器发送电子邮件。 在不使用SMTP身份验证的情况下使用端口25:此方法要求其他服务器不阻止端口25(出站)。 将端口587用于SMTP身份验证:如果其他服务器阻止端口25(出站),则可以使用端口587。 没有SMTP身份验证的端口25 默认情况下,CentOS 8上的Postfix仅在本地主机上侦听。您需要将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 firewall-cmd --permanent --add-port=25/tcp sudo systemctl reload firewalld 现在,您可以将SMTP客户端配置为使用mta1。你的地盘。com和端口25发送电子邮件。您不需要在SMTP客户端中指定用户名/密码。 带有SMTP身份验证的587端口 打开防火墙中的587和80端口。 sudo firewall-cmd --permanent --add-service={smtp-submission,http} sudo systemctl reload firewalld 默认情况下,CentOS 8上的Postfix仅在本地主机上侦听。您需要将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_tls_loglevel=1 -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的提交守护程序,并要求对SMTP身份验证进行TLS加密。纯文本身份验证将被拒绝。保存并关闭文件。要启用SMTP身份验证,我们需要在CentOS 8/RHEL 8服务器上安装Dovecot。 sudo dnf install dovecot 启动Dovecot并在启动时启用自动启动。 sudo systemctl start dovecot sudo systemctl enable dovecot 编辑身份验证配置文件。 sudo nano /etc/dovecot/conf.d/10-auth.conf 取消对以下行的注释。 disable_plaintext_auth = yes 当没有SSL/TLS加密时,它将禁用明文身份验证。如果您想使用完整的电子邮件地址([email&#160;protected])登录,请在文件中添加以下行。 auth_username_format = %n 否则,您只能使用用户名登录(不使用@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证书。发出以下命令,从EPEL存储库在CentOS 8/RHEL 8上安装Let's Encrypt client(certbot)。 sudo dnf install certbot 然后使用独立插件获取TLS证书(假设Postfix SMTP服务器上没有运行web服务器)。 sudo certbot certonly --standalone --agree-tos --email [email protected] -d mta1.yourdomain.com 过了一会儿,您应该会看到以下几行,这意味着证书已成功获得。您还可以查看证书存储的目录。 接下来,我们需要运行以下两个命令来指定后缀配置文件中TLS证书和私钥的位置。您的Let's Encrypt证书和私钥存储在/etc/letsencrypt/live/mta1下。你的领域。com/directory。 sudo postconf "smtpd_tls_cert_file = /etc/letsencrypt/live/mta1.your-domain.com/fullchain.pem" sudo postconf "smtpd_tls_key_file = /etc/letsencrypt/live/mta1.your-domain.com/privkey.pem" 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以将SMTP客户端配置为使用mta1。你的地盘。com和端口587发送电子邮件。使用TLS加密类型和普通作为身份验证模式。您需要在SMTP服务器上创建电子邮件帐户。这很简单。使用adduser命令添加用户。 sudo adduser user1 然后为该用户设置密码。 sudo passwd user1 电子邮件地址将为[电子邮件&#160;受保护]。 从邮件头中删除敏感信息 默认情况下,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 保存并关闭文件。 发送大量或大量电子邮件 您可以使用此SMTP服务器发送批量或批量电子邮件吗? 是的,但你应该只向合法订户发送批量电子邮件,也就是说,收件人应该已经注册了你的邮件列表。你不应该发送垃圾邮件(未经请求的批量电子邮件),否则你的SMTP服务器肯定会被列入黑名单。在发送大量电子邮件之前,我强烈建议遵循本文中的建议:如何阻止您的电子邮件被标记为垃圾邮件。 必须先发出STARTTLS命令 如果在邮件日志(/var/log/maillog)中看到以下错误,可能是因为在/etc/postfix/main中没有正确指定TLS证书。cf文件。 Must issue a STARTTLS command first (in reply to MAIL FROM command)) 结论 我希望本教程能帮助您在CentOS 8上为多个域设置Postfix仅发送SMTP服务器。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:57
  • 如何使用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 浏览:68
  • 邮件服务器IP黑名单删除提示,以提高电子邮件的可交付性

    在之前的教程中,我解释了如何使用iRedMail或Modoboa轻松设置自己的邮件服务器。本指南将向您展示如何检查邮件服务器的IP信誉,并为您提供一些删除IP黑名单的提示。在运行邮件服务器的多年中,我曾多次看到由于IP地址被列入黑名单而被拒绝的邮件。如果您按照我的指示,您将能够从大多数IP黑名单中删除您的IP地址。 注意:本文不适用于垃圾邮件发送者。如果你发送垃圾邮件,你的IP地址将再次被阻止。 不同类型的IP黑名单 首先,有内部黑名单和第三方黑名单。许多中小型邮箱提供商使用第三方黑名单(Spamhaus、Barracuda等),因为他们没有资源或时间建立自己的黑名单。像Gmail、Outlook和GMX这样的大型邮箱提供商倾向于建立自己的内部黑名单。实际上,GMX使用内部和第三方黑名单。 然后,有单一IP黑名单和整个IP范围的黑名单。通常很容易从单一IP黑名单中请求删除IP。要从整个IP范围的黑名单中脱身并不容易。幸运的是,它们并不常用。 如何检查你的IP地址是否在黑名单上 要检查您的IP地址是否在第三方黑名单上,您可以访问mxtoolbox和dnsbl。信息。请注意,您不必从每个第三方黑名单中删除您的IP地址,因为您的电子邮件收件人可能根本不会使用这些地址。 要检查您的IP地址是否在邮箱提供商的内部黑名单上,您需要检查邮件服务器的日志文件。 /var/log/mail。登录Debian/Ubuntu /CentOS/RHEL上的var/log/maillog 然而,读取原始日志文件并不有趣。我们可以使用名为pflogsumm的工具来轻松分析日志文件。在Debian/Ubuntu上安装它,方法是: sudo apt install pflogsumm 在CentOS/RHEL上,pflogsumm由postfix perl脚本包提供。 sudo dnf install postfix-perl-scripts 使用以下命令生成今天的报告。(请注意,在CentOS/RHEL上,邮件日志文件是/var/log/maillog。) sudo pflogsumm -d today /var/log/mail.log 生成昨天的报告。 sudo pflogsumm -d yesterday /var/log/mail.log 如果要生成本周的报告: sudo pflogsumm /var/log/mail.log 要在“正常”统计数据之前发出“问题”报告(反弹、延迟、警告、拒绝),请使用--problems first标志。 sudo pflogsumm -d today /var/log/mail.log --problems-first 要将电子邮件发件人地址附加到拒绝报告中的每个列表,请使用--rej add from标志。 sudo pflogsumm -d today /var/log/mail.log --rej-add-from 要在拒绝摘要中显示完整原因,请使用--verbose msg detail标志。 sudo pflogsumm -d today /var/log/mail.log --rej-add-from --verbose-msg-detail 您可以添加一个cron作业,使pflogsumm每天向您的电子邮件地址发送报告。 sudo crontab -e 添加以下行,它将在每天早上4:00生成报告。 0 4 * * * /usr/sbin/pflogsumm -d yesterday /var/log/mail.log --problems-first --rej-add-from --verbose-msg-detail -q 要通过电子邮件接收报告,请在所有Cron作业上方添加以下行。 MAILTO="[email protected]" 你应该注意“邮件跳出详细信息”和“邮件延迟详细信息”部分,在这里你可以看到这些邮件被拒绝的原因。 如果已经设置了MAILTO变量,但希望将后缀日志摘要发送到其他电子邮件地址,则可以在Cron作业中添加以下行。 0 4 * * * /usr/sbin/pflogsumm -d yesterday /var/log/mail.log --problems-first --rej-add-from --verbose-msg-detail -q | mutt -s "Postfix log summary"  [email protected] pflogsumm命令的输出被重定向到mutt,这是一个命令行邮件用户代理,它将使用输出作为电子邮件正文,并将其发送到最后指定的电子邮件地址。当然,您需要在Linux服务器上安装mutt。 sudo apt install mutt 或 sudo dnf install mutt 在新IP地址上运行邮件服务器的经验法则 当你在一个新的IP地址上运行邮件服务器时,你不应该立即使用这个IP地址发送时事通讯(又名营销邮件)。相反,你应该使用这个IP地址发送一段时间的事务性电子邮件,以提高你的声誉。 您可能还想使用SMTP中继发送几天的电子邮件,因为SMTP中继服务具有很高的IP声誉。之后,直接向熟悉的收件人发送电子邮件。 删除IP黑名单 Gmail分级限制 如果您在向Gmail用户发送电子邮件时看到以下消息,则您的IP地址已被限制为速率,而不是被列入黑名单。这是一个特例,需要仔细治疗。 Our system has detected an unusual rate of 421-4.7.28 unsolicited mail originating from your IP address. To protect our 421-4.7.28 users from spam, mail sent from your IP address has been temporarily 421-4.7.28 rate limited. Please visit 421-4.7.28 to 421 4.7.28 review our Bulk Email Senders Guidelines. 解决此问题的步骤: 向你自己的Gmail账户发送电子邮件。如果它被放在垃圾邮件文件夹中,你应该将其标记为非垃圾邮件,然后回复电子邮件。这样做几次。 一旦电子邮件没有进入你的Gmail垃圾邮件文件夹,你应该让其他Gmail用户向你的新电子邮件地址发送电子邮件。如果Gmail发现有邮件发送到你的邮件服务器,它会提高你邮件服务器IP地址的信誉。 当Gmail用户向你发送电子邮件时,你的电子邮件地址会自动添加到他/她的联系人列表中。这对你的电子邮件进入他们的收件箱很有帮助。回复那些Gmail用户。 重复步骤2和步骤3几天。 你发送交易邮件吗?如果你愿意,那太好了!现在,您可以使用邮件服务器发送事务性电子邮件。事务性电子邮件从网站或web应用程序发送给用户。例如,访问者在网站上创建帐户后收到电子邮件,或请求重置密码。它可以非常有效地提高IP声誉,因为收件人希望您向他/她发送电子邮件。在你的网站上,你可以告诉收件人检查垃圾邮件文件夹,并将你的电子邮件标记为非垃圾邮件。他们更有可能打开你的电子邮件并点击电子邮件中的链接。随着时间的推移,你的电子邮件会自动进入收件箱。请注意,邮件列表注册确认电子邮件是事务性电子邮件,因此,如果您的网站上有新闻稿注册表单,您还可以告诉收件人检查垃圾邮件文件夹,并将您的电子邮件地址添加到联系人列表中。收件人很可能会单击电子邮件中的确认链接。 在Gmail不限制你的邮件服务器后,你可以发送时事通讯。不过,你应该预热你的IP地址。例如,第一天发送100封电子邮件,第二天发送500封电子邮件,第三天发送1000封电子邮件。不要立即向成千上万的人发送电子邮件。 在向数千名用户发送时事通讯后,你可以在Gmail Postmaster工具中查看你的IP地址声誉。从下面的截图可以看出,我的IP地址在Gmail中享有很高的声誉。 Microsoft邮箱(Hotmail.com、Outlook.com、Live.com) 微软使用一个内部黑名单来屏蔽许多合法的IP地址。如果你的电子邮件被hotmail拒绝。com,outlook。com或live。com,您需要提交发件人信息表。之后,您的电子邮件将被接受。 Microsoft Exchange/Office 365 请注意,Microsoft Exchange/Office 365是面向企业主的邮件托管解决方案。它与面向消费者的邮箱服务(hotmail.com、outlook.com、live.com)不同,可能会使用不同的黑名单。例如,我曾在收件箱中看到以下未送达通知。 host agileconnected-nl01c.mail.protection.outlook.com[104.47.2.36] said: 550 5.7.511 Access denied, banned sender[xx.xx.xx.xx]. To request removal from this list please forward this message to [email protected] For more information please go to http://go.microsoft.com/fwlink/?LinkId=526653. 因此,我只需将此未送达通知转发至[email&#160;protected],并添加我自己的评论: Hi, I recently set up a new mail server on this IP address for my website. I use this mail server to send transactional emails and newsletters to my subscribers. This IP address is in a data center. I know this IP address may have been used by spammers in the past, but I have a legitimate website that will not spam. Please consider removing it from the blacklist. Best, Xiao Guoan Linuxbabe.com webmaster 你会收到一封回复邮件,告诉你需要做什么。 GMX GMX同时使用第三方黑名单和内部黑名单。如果您在向GMX用户发送电子邮件时在邮件日志中看到以下消息,则表示您的IP地址已被列入黑名单。 host mx00.emig.gmx.net[212.227.15.9] refused to talk to me: 554-gmx.net (mxgmx017) Nemesis ESMTP Service not available 554-No SMTP service 554-IP address is black listed. 554 For explanation visit https://postmaster.gmx.net/en/error-messages?ip=xx.xx.xx.xx&c=bip) 你应该去https://postmaster.gmx.net/en/contact并使用联系方式请求删除您的IP地址。在我提交请求后,我收到了来自GMX管理员的以下电子邮件。 Dear Sirs, Thank you for your information. We have now removed the mailserver's IP address from our blacklist. Our servers will be updated within the next hour. You will then be able to send emails to our system again. Many thanks 网状物判定元件 网状物de同时使用第三方黑名单和内部黑名单。如果您在向web发送电子邮件时在邮件日志中看到以下消息。删除用户,这意味着你的IP地址被列入黑名单。 host mx-ha02.web.de[212.227.17.8] refused to talk to me: 554-web.de (mxweb110) Nemesis ESMTP Service not available 554-No SMTP service 554-IP address is black listed. 554 For explanation visit https://postmaster.web.de/error-messages?ip=xx.xx.xx.xx&c=bip 你应该去https://postmaster.web.de/en/contact并使用联系方式请求删除您的IP地址。我从网上收到了以下电子邮件。在我提交请求后取消管理。 Dear Sirs, Thank you for your information. We have now removed the mailserver's IP address from our blacklist. Our servers will be updated within the next hour. You will then be able to = send emails to our system again. Many thanks 实际上是GMX和网络。de由同一家公司管理。所以,如果你的IP地址从GMX黑名单中删除,那么它也将从网络中删除。去黑名单。 iCloud Mail 如果您在向icloud发送电子邮件时在邮件日志中看到以下消息。com用户,这意味着你的IP地址被列入黑名单。 host mx2.mail.icloud.com[17.57.8.135] refused to talk to me: 550 5.7.0 Blocked - see https://support.proofpoint.com/dnsbl-lookup.cgi?ip=xx.xx.xx.xx 苹果iCloud Mail正在使用Proofpoint黑名单。你应该去https://ipcheck.proofpoint.com/检查你的IP声誉。如果您的IP地址被阻止,请提交支持票证,将您的IP地址从黑名单中删除。请注意,您应该提供收件人的电子邮件地址,以便Proofpoint可以快速找到您被阻止的电子邮件。 Proofpoint没有给我发电子邮件。大约12个小时后,我再次在https://ipcheck.proofpoint.com/.这一次,我看到了以下消息,这表明我的IP地址已从Proofpoint黑名单中删除。我可以给icloud发邮件。com用户。 Unable to do IP Lookup, or failed to contact service for IP lookup TrendMicro RBL TrendMicro是一家安全解决方案提供商。如果你收到下面这样的跳出消息,这意味着你的IP地址被TrendMicro列入黑名单。 host mail.silvester.be[91.183.124.216] said: 550 5.7.1 Mail from xx.xx.xx.xx has been blocked by Trend Micro Email Reputation Service. Please see https://ers.trendmicro.com/reputations to get detailed information. (in reply to end of DATA command) 去https://www.ers.trendmicro.com/reputations请求除名。如果你有一个合法的网站,你的退市请求将被批准。 CloudMark发送者智能 Cloudmark Sender Intelligence(CSI)是第三方IP黑名单。如果您在发送电子邮件时在邮件日志中看到以下消息,则表示您的IP地址已被CloudMark列入黑名单。 host mx.domain.com[66.96.140.73] refused to talk to me: 554 bosimpinc14 bizsmtp Connection refused. xx.xx.xx.xx has a poor reputation on Cloudmark Sender Intelligence (CSI). Please visit http://csi.cloudmark.com/reset-request/?ip=xx.xx.xx.xx to request a delisting. 去https://csi.cloudmark.com/en/reset请求除名。提交请求后,我收到了CloudMark的以下电子邮件。 Dear Xiao Guoan, Thank you for contacting Cloudmark. I have reset the reputation of your IP, so you should see delivery improve shortly. Please note that updates do not occur instantly but should generally happen within an hour of receiving this response. -- Cloudmark CSI Support 美国电话电报公司;T邮箱 美国电话电报公司;T为其客户提供以下域电子邮件。 @ameritech。网 @att.net @贝尔南。网 @闪光。网 @内维尔·贝尔。网 @帕贝尔。网 @神童。网 @sbcglobal。网 @斯内特。网 @斯沃贝尔。网 @旺斯。网 如果您在邮件日志中看到以下消息,您的IP地址已被AT&amp;T <[email protected]>: host al-ip4-mx-vip2.prodigy.net[144.160.235.144]     said: 553 5.3.0 alph764 DNSBL:RBL 521< xx.xx.xx.xx >_is_blocked.For     assistance forward this error to [email protected] (in reply to MAIL     FROM command) 只需将错误消息转发到[email&#160;protected]。我认为最好添加一些评论,比如下面我的评论。 Hi, I recently set up a new mail server on this IP address (xx.xx.xx.xx) for my website (https://your-domain.com). I use this mail server to send transactional emails and newsletters to my subscribers. This IP address is in a data center. I know this IP address may have been used by spammers in the past, but I have a legitimate website that will not spam. Please consider removing it from the blacklist. Best, Xiao Guoan Linuxbabe.com webmaster 您将收到一封电子邮件,确认他们已收到您的退市请求。如果他们决定将您的IP地址从黑名单中删除,您将收到另一封电子邮件。 t-online。判定元件 t-online。de由德国ISP德国电信公司运营。如果您在邮件日志中看到以下消息,您的IP地址已被t-online列入黑名单。判定元件。 host mx00.t-online.de[194.25.134.8] refused to talk to me: 554 IP=XX.XX.XX.XX - A problem occurred. (Ask your postmaster for help or to contact [email protected] to clarify. 您可以向[email&#160;protected]发送退市请求,如下所示: Subject: IP delisting request Body: Hi, I recently set up a new mail server on this IP address (xx.xx.xx.xx) for my website (https://your-domain.com). I use this mail server to send transactional emails and newsletters to my subscribers. This IP address is in a data center. I know this IP address may have been used by spammers in the past, but I have a legitimate website that will not spam. Please consider removing it from the blacklist. Best, Xiao Guoan Linuxbabe.com webmaster 过了一会儿,我的退市请求被批准了。以下是我收到的回复。 Dear Xiao Guoan, We will delist your IP. This measure usually becomes operative in one or two hours, but could possibly take up to 24 hours. Kind regards Deutsche Telekom AG E-Mail: [email protected] www.telekom.de 如果你的退市请求被拒绝怎么办? 一些邮箱提供商(例如.pl域名)只会告诉您您的IP地址被列入黑名单,但不会告诉您如何请求将您的IP地址从黑名单中删除。如果您的IP地址所属的网络范围被特定的黑名单(如UCEPROTECTL2)阻止,那么您别无选择,只能使用SMTP中继服务绕过IP地址黑名单。 如何使用Sendinblue在Ubuntu上设置SMTP中继 如何使用Sendinblue在Debian上设置SMTP中继 如何使用Sendinblue在CentOS/Rocky Linux上设置SMTP中继 但是,您可能不想将整个电子邮件服务器设置为使用中继主机。设置SMTP realy后,您可以配置Postfix传输映射和中继映射,以便通过中继主机发送一些电子邮件,其他电子邮件直接发送给收件人。 管理您在dnswl的IP声誉。组织 dnswl。org是最著名的公共白名单。您可以转到自助服务页面,在网站上注册帐户,然后添加邮件服务器信息。如果幸运的话,您的邮件服务器的IP地址可能会添加到白名单中。 在DNSWL上创建帐户后,您应该单击DNSWL ID选项卡来创建ID。输入您的域名并验证域所有权。然后将邮件服务器IP地址添加到DNSWL ID中。 您的IP地址不会立即添加到您的DNSWL ID。您的更改请求必须得到DNSWL管理员的批准。一旦获得批准,您的IP地址将出现在您的DNSWL ID中,这意味着您的邮件服务器IP地址将添加到白名单中。 收尾 我希望本文能帮助你从黑名单中删除IP地址。您可能还想阅读以下文章,了解如何远离垃圾邮件文件夹。 如何阻止你的电子邮件被标记为垃圾邮件 和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:63
  • 设置SMTP&;带有HAProxy的IMAP代理(Debian、Ubuntu、CentOS)

    在之前的教程中,我们讨论了如何在Linux(Ubuntu版本、CentOS/RHEL版本)上从头开始设置邮件服务器,以及如何使用iRedMail或Modoboa快速设置自己的邮件服务器,而无需手动配置邮件服务器堆栈的每个组件。本教程将向您展示如何使用HAProxy为邮件服务器设置SMTP和IMAP代理。 什么时候需要SMTP和IMAP代理? 有些人在家里运行电子邮件服务器,但可能存在以下问题: 端口25被阻塞。 它们没有静态IP地址。 他们无法创建PTR记录。 如果端口25被阻止,则无法直接向收件人发送电子邮件。如果你没有静态IP地址或PTR记录,你的电子邮件很可能会被拒绝或进入垃圾邮件文件夹。如果遇到这种情况,可以在数据中心运行VPS(虚拟专用服务器),并将其用作邮件服务器的代理。VPS有一个静态IP地址,您可以为该IP地址创建PTR记录。其他电子邮件服务器会认为VPS运行您的邮件服务,当您发送电子邮件时,他们会认为电子邮件来自您的VPS。 是的,您也可以使用SMTP中继服务(如Sendinblue)来解决这些问题,但每天和每月可以发送多少电子邮件是有限制的。如果你升级到Mailjet的付费账户,每月至少要花25美元。你发送的电子邮件越多,你每月的花费就越高。如果你运行VPS并设置邮件代理,无论你要发送多少封邮件,每月都要花费大约10美元。 如果为很多人运行邮件服务器,可能需要设置邮件代理以实现负载平衡和高可用性。在本文中,我将使用HAProxy设置SMTP和IMAP代理,这是一个免费、开源的高可用性负载平衡器和代理服务器,用于基于TCP和HTTP的应用程序。 步骤1:为邮件代理选择正确的VP 你需要一个副总裁 允许您创建PTR记录 不会阻塞端口25 允许您无限制地发送无限电子邮件。 并非所有VPS提供商都满足上述3个要求。例如,DigitalOcean会阻塞端口25,但不会解锁端口25。另一个问题是,像DigitalOcean这样的大型知名主机提供商被垃圾邮件发送者滥用。通常,服务器IP地址在几个黑名单上。 我在ScalaHost和Kamatera VPS上运行邮件服务器。在设置邮件服务器时,我总是推荐它们。对于不需要太多CPU和RAM的邮件代理,可以选择Kamatera VPS。单CPU 1GB内存计划每月只需花费4美元,您将获得一个月的免费服务。您可以按照下面的教程创建Kamatera VPS。 如何在Kamatera上创建Linux VPS服务器 您可以为VPS选择任何Linux发行版,但我建议您使用Debian、Ubuntu或CentOS。 要登录到服务器,可以使用SSH客户端。如果您在计算机上使用Linux或macOS,只需打开一个终端窗口并运行以下命令即可登录服务器。将12.34.56.78替换为VPS的IP地址。 ssh [email protected]12.34.56.78 系统将要求您输入密码。如果您使用的是Windows,请阅读下面关于如何使用SSH客户端的文章。 在Windows上使用SSH登录Linux服务器的3种方法 第2步:在VPS上设置VPN服务器 如果你家里有一个动态IP地址,那么你需要在你的VPS上设置一个VPN服务器,这样你的VPS就可以与你的邮件服务器通信,而不会因为IP地址的改变而中断。VPN服务器还可以帮助您绕过端口25阻塞。 您可以按照以下教程之一在VPS上设置WireGuard VPN。为什么我要选择WireGuard而不是像OpenVPN这样的其他VPN协议?因为WireGuard允许您为VPN客户端分配静态专用IP地址。 在Ubuntu上设置自己的WireGuard VPN服务器 在Debian上设置自己的WireGuard VPN服务器 在CentOS上设置自己的WireGuard VPN服务器 按照上述文章中的说明操作时,您的VPS是VPN服务器,而您的邮件服务器是VPN客户端。VPS将成为邮件服务器的默认网关,邮件服务器上的所有出站流量将通过VPN进行隧道传输,因此接收SMTP服务器(Gmail、Hotmail、Yahoo mail等)时会认为您的邮件来自VPS。如果你想通过VPS发送邮件,但让其他类型的流量使用原始网关,WireGuard还允许你通过启用策略路由来实现。 你应该为你的VPS设置一个PTR记录,也就是反向DNS记录。Kamatera不允许您在控制面板中编辑PTR记录。相反,你需要打开一张支持票,告诉他们为你添加PTR记录。你可能会想,这并不方便,但这是为了让垃圾邮件发送者远离平台,因此像我们这样的合法电子邮件发送者将拥有良好的IP声誉。告诉支持团队将服务器IP地址的PTR记录更新为mail。你的领域。通用域名格式。 第3步:在防火墙中打开端口并设置权限 VPS需要在防火墙中打开端口25、587、465、143和993。运行以下命令打开这些端口。 Debian/Ubuntu: sudo ufw allow 25,587,465,143,993/tcp CentOS: sudo firewall-cmd --permanent --add-service={smtp,smtp-submission,smtps,imap,imaps} sudo systemctl reload firewalld 邮件服务器需要向VPS打开各种端口。运行以下命令。 Debian/Ubuntu: sudo ufw insert 1 allow in from 10.10.10.0/24 CentOS: sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.10.10.0/24" accept' sudo systemctl reload firewalld 10.10.10.0/24是VPN服务器创建的专用IP范围,因此VPS可以访问邮件服务器上的所有端口。 在CentOS上配置SELinux 在本教程的后面部分,VPS上的HAProxy需要绑定到各种电子邮件端口,如25、587、465、143和993,但SELinux禁止这样做。如果在VPS上使用CentOS,则需要运行以下命令以允许HAProxy绑定到这些端口。 sudo setsebool -P haproxy_connect_any 1 第4步:设置SMTP代理以接收电子邮件 现在,您需要设置SMTP代理,以便其他邮件服务器可以通过VPS向您自己的邮件服务器发送电子邮件。SSH到VPS中并安装HAProxy。 Debian/Ubuntu sudo apt install haproxy 森托斯 sudo dnf install haproxy 然后编辑HAProxy主配置文件。 sudo nano /etc/haproxy/haproxy.cfg 在文件末尾添加以下行。将12.34.56.78替换为VPS的公共IP地址。将10.10.10.101替换为邮件服务器的专用IP地址,该地址由VPN服务器分配。 frontend ft_smtp bind 12.34.56.78:25 mode tcp timeout client 1m log global option tcplog default_backend bk_smtp backend bk_smtp mode tcp log global option tcplog timeout server 1m timeout connect 7s server postfix 10.10.10.101:2525 send-proxy 上述配置将使HAProxy监听端口25,并将SMTP连接传递到邮件服务器的端口2525。保存并关闭文件。重新启动HAProxy。 sudo systemctl restart haproxy 并在启动时启用自动启动。 sudo systemctl enable haproxy 要使用HAProxy作为Postfix SMTP服务器的反向代理,需要在Postfix中启用Postscreen。SSH连接到邮件服务器并编辑Postfix主配置文件。 sudo nano /etc/postfix/master.cf 在该文件开头添加以下行。将10.10.10.101替换为VPN服务器分配的邮件服务器的专用IP地址。这将在端口2525上启用Postscreen,它可以接受来自VPS的HAProxy连接。Postfix能够从HAProxy获得SMTP客户端的原始IP地址。 10.10.10.101:2525 inet n - - - 1 postscreen -o postscreen_upstream_proxy_protocol=haproxy -o postscreen_cache_map=btree:$data_directory/postscreen_2525_cache -o syslog_name=postfix/2525 然后取消对以下三行的注释。(注意:如果您使用iRedMail或Moboba来运行邮件服务器,那么默认情况下,以下三行是未注释的。) smtpd pass - - y - - smtpd dnsblog unix - - y - 0 dnsblog tlsproxy unix - - y - 0 tlsproxy 哪里: 第一行将使Postscreen将SMTP连接传递到smtpd守护进程。 dnsblog(DNS黑名单记录器)服务允许记录DNS黑名单检查。 tlsproxy服务为postscreen启用STARTTLS支持,因此当postscreen启用时,远程SMTP客户端可以建立加密连接。 保存并关闭文件。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在为你的域名添加一个新的MX记录,如下所示,你的邮件服务器可以通过VPS接收电子邮件。 Record Type    Name      Mail Server         Priority MX @ hostname-of-your-VPS 0 您可以为VPS使用任何主机名,只要它可以解析为VPS的IP地址。为了简单起见,您可以使用邮件服务器的主机名(mail.yourdomain.com)。别忘了为VPS的主机名添加DNS记录。 第5步:设置提交代理 您的用户可以在不使用代理的情况下向邮件服务器提交发送电子邮件,但如果您希望用户能够通过VPS提交发送电子邮件,该怎么办?您需要为Postfix提交服务设置代理。 在VPS上编辑HAProxy主配置文件。 sudo nano /etc/haproxy/haproxy.cfg 在文件末尾添加以下行。将12.34.56.78替换为VPS的公共IP地址。将10.10.10.101替换为邮件服务器的专用IP地址,该地址由VPN服务器分配。 frontend ft_submission bind 12.34.56.78:587 mode tcp timeout client 1m log global option tcplog default_backend bk_submission backend bk_submission mode tcp log global option tcplog timeout server 1m timeout connect 7s server postfix 10.10.10.101:10587 send-proxy frontend ft_smtps bind 12.34.56.78:465 mode tcp timeout client 1m log global option tcplog default_backend bk_smtps backend bk_smtps mode tcp log global option tcplog timeout server 1m timeout connect 7s server postfix 10.10.10.101:10465 send-proxy 通常有两个端口可以接受经过身份验证的用户提交的电子邮件:587和465。在上面的配置中,我们在HAProxy中定义了两个前端,监听端口587和465。它们将分别连接到邮件服务器的端口10587和10465。 保存并关闭文件。重新启动HAProxy。 sudo systemctl restart haproxy 然后在邮件服务器上编辑Postfix主配置文件。 sudo nano /etc/postfix/master.cf 在该文件末尾添加以下行。将10.10.10.101替换为邮件服务器的专用IP地址,该地址由VPN服务器分配。请在-o之前至少允许一个空格(制表符或空格键)。在后缀配置中,前面的空格字符表示此行是前一行的延续。但是,不应在等号(=)之前或之后添加空格。 10.10.10.101:10587 inet n - y - - smtpd -o syslog_name=postfix/10587 -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 -o smtpd_upstream_proxy_protocol=haproxy 10.10.10.101:10465 inet n - y - - smtpd -o syslog_name=postfix/10465 -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_upstream_proxy_protocol=haproxy 在上面的配置中,我们启用了两个在端口10587和10465上侦听的提交服务,它们支持haproxy协议,因此能够接受来自haproxy的连接。保存并关闭文件。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 第6步:设置IMAP代理 我们还希望用户能够通过VPS登录IMAP服务器,因此我们需要设置IMAP代理。 在VPS上编辑HAProxy主配置文件。 sudo nano /etc/haproxy/haproxy.cfg 在文件末尾添加以下行。将12.34.56.78替换为VPS的公共IP地址。将10.10.10.101替换为邮件服务器的专用IP地址,该地址由VPN服务器分配。 frontend ft_imap bind 12.34.56.78:143 mode tcp default_backend bk_imap backend bk_imap mode tcp balance leastconn stick store-request src stick-table type ip size 200k expire 30m server imap1 10.10.10.101:10143 send-proxy-v2 frontend ft_imaps bind 12.34.56.78:993 mode tcp default_backend bk_imaps backend bk_imaps mode tcp balance leastconn stick store-request src stick-table type ip size 200k expire 30m server imaps1 10.10.10.101:10993 send-proxy-v2 IMAP服务有两个端口:143和993。端口143可以使用STARTTLS,端口993使用隐式TLS,因此在上述配置中,我们在端口143和993的HAproxy监听中添加了两个前端。它们将分别连接到邮件服务器的端口10143和10993。保存并关闭文件。重新启动HAProxy。 sudo systemctl restart haproxy 在邮件服务器上编辑Dovecot配置文件。 sudo nano /etc/dovecot/conf.d/10-master.conf 添加对IMAP和IMAP的HAProxy支持,如下所示。 service imap-login { inet_listener imap { port = 143 } inet_listener imaps { port = 993 ssl = yes } inet_listener imap_haproxy { port = 10143 haproxy = yes } inet_listener imaps_haproxy { port = 10993 ssl = yes haproxy = yes } } 在上述配置中,我们启用了两个IMAP服务:IMAP_haproxy和imaps_haproxy,分别监听端口10143和10993。它们支持haproxy协议,因此能够接受来自haproxy的连接。保存并关闭文件。 然后我们需要在Dovecot中添加受信任的代理主机。编辑Dovecot主配置文件。 sudo nano /etc/dovecot/dovecot.conf 在该文件末尾添加以下两行。将10.10.10.1替换为VPN服务器的专用IP地址。 haproxy_trusted_networks = 10.10.10.1 haproxy_timeout = 3s 保存并关闭文件。重新启动Dovecot以使更改生效。 sudo systemctl restart dovecot 现在,您应该能够登录IMAP服务器,并通过VPS提交发送的电子邮件。 第7步:设置HTTPS代理 如果希望通过VPS访问Roundcube等网络邮件,请在VPS上编辑HAProxy主配置文件。 sudo nano /etc/haproxy/haproxy.cfg 在文件末尾添加以下行。将12.34.56.78替换为VPS的公共IP地址。将10.10.10.101替换为邮件服务器的专用IP地址,该地址由VPN服务器分配。替换邮件。你的地盘。com与您的网络邮件使用的域名。 frontend https bind 12.34.56.78:443 mode tcp tcp-request inspect-delay 5s tcp-request content accept if { req_ssl_hello_type 1 } use_backend webmail if { req_ssl_sni -i mail.yourdomain.com } default_backend webmail backend webmail mode tcp option ssl-hello-chk server webmail 10.10.10.101:443 check 保存并关闭文件。然后重启HAProxy。 sudo systemctl restart haproxy 请注意,如果在certbot中使用默认的http-01质询,HTTPS代理可能会干扰Let's Encrypt TLS证书续订。建议在使用certbot续订Let's Encrypt TLS证书时使用dns-01 challenge。 最后的想法 请注意,我们通过添加更多侦听端口(252510587104651014310993),启用了对Postfix和Dovecot的代理支持。我们没有为现有端口(25、587、465、143和993)启用代理支持,因为如果启用,Postfix和Dovecot将只接受来自HAProxy的连接,并拒绝来自其他IP地址(包括本地主机)的连接。这可以防止邮件服务器上运行的webmail或web应用程序使用127.0.0.1:25发送电子邮件,并防止webmail客户端从Dovecot获取电子邮件。发生这种情况时,您可能会看到以下错误。 host mail.example.com refused to talk to me: 421 4.3.2 No system resources 您的Postfix SMTP服务器将在邮件日志中记录以下消息。 postfix/postscreen[1479]: warning: haproxy read: time limit exceeded 配置HAProxy自动重启 我找到了haproxy。CentOS/RHEL上的服务在启动时可能无法启动。错误如下。 Starting frontend ft_smtp: cannot bind socket [23.254.225.226:25] 如果我手动启动服务,它就会工作,这让我很困惑。为了解决这个问题,我们可以编辑haproxy。服务,使其在出现故障时自动重新启动。为了覆盖默认的systemd服务配置,我们创建了一个单独的目录。 sudo mkdir -p /etc/systemd/system/haproxy.service.d/ 然后创建一个文件。 sudo nano /etc/systemd/system/haproxy.service.d/restart.conf 在文件中添加以下行。 [Service] Restart=always RestartSec=5s 保存并关闭文件。然后重新加载系统D。 sudo systemctl daemon-reload Postfix/Dovecot自动重启 还建议在邮件服务器上配置Postfix和Dovecot,以便在出现故障时自动重启。 后缀 创建一个单独的目录。 sudo mkdir -p /etc/systemd/system/postfix.service.d/ 然后创建一个文件。 sudo nano /etc/systemd/system/postfix.service.d/restart.conf 在文件中添加以下行。请注意,在Debian/Ubuntu上,后缀是。服务是一个一次性服务,不允许重启=始终。 [Service] Restart=on-failure RestartSec=5s 保存并关闭文件。然后重新加载系统D。 sudo systemctl daemon-reload 多佛科特 创建一个单独的目录。 sudo mkdir -p /etc/systemd/system/dovecot.service.d/ 然后创建一个文件。 sudo nano /etc/systemd/system/dovecot.service.d/restart.conf 在文件中添加以下行。 [Service] Restart=always RestartSec=5s 保存并关闭文件。然后重新加载系统D。 sudo systemctl daemon-reload 删除IP黑名单 如果你的VPS的IP地址被某个特定的电子邮件服务提供商列入黑名单怎么办?您可以阅读下面的文章,了解如何将您的IP地址从黑名单中删除。 邮件服务器IP黑名单删除提示,以提高电子邮件的可交付性 故障排除提示 如果您向邮件服务器发送电子邮件,但收到以下错误, lost connection with mail.yourdomain.com[xx.xx.xx.xx] while receiving the initial server greeting 这可能是因为VPN连接中断,请验证是否可以从VPN服务器ping到VPN客户端(邮件服务器)。 ping 10.10.10.101 也可能是您没有将邮件服务器防火墙配置为允许从VPN连接(10.10.10.0/24)。在VPN服务器上运行以下命令,查看端口是否打开。Nmap可以通过sudo apt install Nmap安装在VPN服务器上。 sudo nmap 10.10.10.101 验证是否可以远程登录到端口2525上的邮件服务器。 telnet 10.10.10.101 2525 有时,您的HAProxy配置可能会出错。例如,我曾经在HAProxy中有两个默认的_后端指令,如下所示。 frontend ft_smtp bind 12.34.56.78:25 mode tcp timeout client 1m log global option tcplog default_backend bk_smtp default_backend ocserv 这是错误的。如果在前端部分中定义了默认的_后端,则无法在全局部分中定义另一个默认的_后端。相反,您应该像本文中那样,将每个默认的_后端指令放在相应的前端部分。 另一个配置错误是,您可能会意外地在https前端插入其他指令。 frontend https bind 12.34.56.78:443 mode tcp tcp-request inspect-delay 5s tcp-request content accept if { req_ssl_hello_type 1 } some_other_directives use_backend webmail if { req_ssl_sni -i mail.yourdomain.com } default_backend webmail 替代方法 如果您无法找出服务器环境中的问题,还可以在VPN服务器上使用UFW防火墙设置端口转发。流量将由UFW转发,因此HAProxy根本不会被使用。(无需移除HAProxy。) 如何在UFW中设置端口转发 应将以下端口从VPN服务器转发到邮件服务器。 TCP 25 TCP 587 TCP 465 TCP 143 TCP 993 TCP 80 TCP 443 TCP 110 TCP 995 结论 我希望本教程能帮助您设置SMTP和IMAP代理。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:66
  • 如何使用Modoboa在Ubuntu18.04上快速设置邮件服务器

    本教程将向您展示如何使用Modoboa在Ubuntu18.04上快速设置自己的电子邮件服务器,这是一个免费的开源邮件托管和管理平台,旨在与Postfix SMTP服务器和Dovecot IMAP/POP3服务器配合使用。 Modoboa是用Python编写的,根据ISC许可条款发布。最新版本是v1。14.0,于2019年7月5日发布。Modoboa的主要特点如下: 默认情况下,Modoboa使用Nginx web服务器为webmail客户端和基于web的管理面板提供服务。 与Postfix和Dovecot兼容。 支持MySQL/MariaDB或PostgreSQL数据库。 在基于web的管理面板中轻松创建无限邮箱和无限邮件域。 在基于web的管理面板中轻松创建电子邮件别名。 webmail客户端提供了一个易于使用的邮件过滤器,帮助您将邮件组织到不同的文件夹。 它可以通过监控电子邮件黑名单和生成DMARC报告来帮助你保护你的域名声誉,这样你的电子邮件就有更好的机会进入收件箱而不是垃圾邮件文件夹。 包括amavis前端,用于阻止垃圾邮件和检测电子邮件中的病毒。 日历和通讯录。 与Let’s Encrypt集成。 包括AutoMX,允许最终用户在桌面或移动邮件客户端中轻松配置邮件帐户。 第一步:选择合适的主机提供商并购买域名 要使用Modoboa设置一个完整的电子邮件服务器,您需要一个至少有3GB内存的服务器,因为安装后,您的服务器将使用超过2GB的内存。 强烈建议您在Ubuntu 18.04服务器的干净安装上安装Modoboa。 本教程是在每月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管理器中,为域名创建MX记录。在名称字段中输入@代表主域名,然后输入mail。你的领域。com在值字段中。 注意:MX记录的主机名不能是其他名称的别名。此外,强烈建议您使用主机名,而不是MX记录的裸IP地址。 DNS管理员可能会要求您输入首选项值(也称为优先级值)。它可以是0到65356之间的任何数字。小数字的优先级高于大数字。您可以为电子邮件服务器输入0,或接受默认值。 创建MX记录后,还需要为邮件创建一个记录。你的领域。com,以便将其解析为IP地址。如果您的服务器使用IPv6地址,请确保添加AAAA记录。 如果使用Cloudflare DNS服务,则在为邮件服务器创建记录时不应启用CDN功能。 第3步:使用Modoboa安装程序在Ubuntu18.04上设置邮件服务器 通过SSH登录服务器,然后运行以下命令来更新软件包。 sudo apt update sudo apt upgrade -y 我强烈建议创建一个sudo用户来管理服务器,而不是使用默认的root用户来提高服务器安全性。运行以下命令创建用户。将用户名替换为首选用户名。 adduser username 然后将用户添加到sudo组。 adduser username sudo 切换到新用户。 su - username 从Github下载modoboa安装程序。 git clone https://github.com/modoboa/modoboa-installer Modoboa是用Python编写的。运行以下命令安装必要的Python软件。 sudo apt-get install python3-virtualenv python3-pip 然后导航到modoboa安装程序目录并创建一个配置文件。替换示例。使用你自己的域名。 cd modoboa-installer sudo ./run.py --stop-after-configfile-check example.com 编辑配置文件安装程序。使用命令行文本编辑器,如nano。 sudo nano installer.cfg 要从Let's Encrypt为邮件服务器获取有效的TLS证书,请在[certificate]部分,将type的值从self signed更改为letsencrypt。 type = letsencrypt 并将电子邮件地址从[email&#160;protected]更改为您的真实电子邮件地址,用于帐户恢复和重要通知。如果使用默认电子邮件地址,您将无法获取并安装Let's Encrypt certificate。 默认情况下,Modoboa安装程序将安装PostgreSQL数据库服务器,如配置文件中的以下行所示。 [database] engine = postgres host = 127.0.0.1 install = true 如果您想使用MariaDB数据库服务器,那么将引擎从postgres更改为mysql。(Modoboa将安装MariaDB而不是MySQL。) 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。) 接下来,应该使用完全限定的域名(FQDN)作为邮件服务器(如mail)的主机名。实例通用域名格式。运行以下命令设置主机名。 sudo hostnamectl set-hostname mail.example.com 现在我们需要验证DNS记录是否已传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://dnsmap.io,输入邮件服务器的主机名(mail.example.com)以检查DNS传播。 如果DNS记录已传播,请运行以下命令开始安装。(请用主域名(如linuxbabe.com)替换example.com。不要在此命令中使用mail.example.com这样的子域)。 sudo ./run.py --interactive example.com 安装过程可能需要一段时间。在我的服务器上花了10分钟。如果在安装过程中看到错误,可以使用--debug选项查看更详细的输出。 sudo ./run.py --interactive --debug example.com 在Modoboa完成安装后,您可以使用用户名admin和密码登录管理面板。 登录后,您应该转到管理员-&gt;设置-&gt;配置文件以更改密码。 第4步:在Modoboa管理面板中添加邮箱 转到“域”选项卡,然后单击“添加”按钮添加新域。 然后在“名称”字段中输入主域名。强烈建议您启用DKIM签名,这有助于提高您的域声誉。在键选择器字段中,您可以输入一个随机单词,如modoboa。选择2048作为密钥长度。 在下一个屏幕中,您可以选择为您的域创建管理员帐户。SMTP协议要求邮件服务器应该有一个[email&#160;protected]地址。 点击提交按钮,你的域名将被添加到Modoboa中。 要添加电子邮件地址,请转到“域”选项卡,然后单击您的域名。 然后单击邮箱。 单击添加按钮并选择帐户。 然后选择简单用户作为角色。在用户名字段中输入电子邮件地址,然后输入密码。 在下一个屏幕中,您可以选择为此电子邮件地址创建别名。 单击提交按钮后,将创建电子邮件地址。 第5步:发送测试电子邮件 要登录到网络邮件,您需要先注销管理员帐户,然后输入用户凭据。 登录Modoboa webmail后,您可以将测试电子邮件从您的私人电子邮件服务器发送到其他电子邮件地址,反之亦然。 入站邮件将延迟几分钟,因为默认情况下,Modoboa会启用greylisting,这会告诉其他发送SMTP的服务器在几分钟后重试。这对阻止垃圾邮件很有用。下面的消息位于/var/log/mail中。日志表明已启用灰色列表。 postfix/postscreen[20995]: NOQUEUE: reject: RCPT from [34.209.113.130]:36980: 450 4.3.2 Service currently unavailable; 然而,灰色列表可能相当烦人。您可以通过编辑后缀主配置文件来禁用它。 sudo nano /etc/postfix/main.cf 在文件末尾找到以下几行并注释掉。(在每行开头添加#字符。) postscreen_pipelining_enable = yes postscreen_pipelining_action = enforce postscreen_non_smtp_command_enable = yes postscreen_non_smtp_command_action = enforce postscreen_bare_newline_enable = yes postscreen_bare_newline_action = enforce 保存并关闭文件。然后重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在你应该可以不用等几分钟就能收到电子邮件了。 添加交换空间 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 步骤6:检查端口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记录,这将在步骤8中讨论。 第7步:在计算机或移动设备上使用邮件客户端 启动你的桌面电子邮件客户端,比如Mozilla Thunderbird,并添加一个邮件帐户。 在“传入服务器”部分,选择IMAP协议,输入mail。你的领域。com作为服务器名,选择端口143和STARTTLS。选择普通密码作为身份验证方法。 在“发送”部分,选择SMTP协议,输入mail。你的领域。com作为服务器名,选择端口587和STARTTLS。选择普通密码作为身份验证方法。 您还可以在端口993上使用带有SSL/TLS加密的IMAP。 第8步:提高电子邮件交付能力 为了防止您的电子邮件被标记为垃圾邮件,您应该设置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记录中发布的公钥验证签名。 当我们之前在Moboba管理面板中添加域名时,我们启用了DKIM签名,所以签名部分得到了处理。唯一要做的就是在DNS管理器中创建DKIM记录。首先进入Modoboa管理面板,选择你的域名。在DNS部分,单击显示密钥按钮。 公开密钥将被公开。有两种格式。我们只需要绑定/命名格式。 转到DNS管理器,创建一个TXT记录,输入modoboa_名称字段中的domainkey。(回想一下,在管理面板中添加域名时,我们使用了modoboa作为选择器。)复制括号中的所有内容并粘贴到值字段中。删除所有双引号。DNS管理器可能会要求您删除其他无效字符,例如回车符。 请注意,您的DKIM记录可能需要一些时间才能传播到Internet。根据您使用的域注册器,您的DNS记录可能会立即传播,或者传播可能需要24小时。你可以去https://www.dmarcanalyzer.com/dkim/dkim-check/,输入modoboa作为选择器,并输入您的域名以检查DKIM记录传播。 对于感兴趣的人,Modoboa使用OpenDKIM为您的域密钥生成私钥,并验证入站电子邮件的签名。 DMARC记录 DMARC代表基于域的消息身份验证、报告和一致性。DMARC可以帮助接收电子邮件服务器识别合法电子邮件,并防止电子邮件欺骗使用您的域名。 要创建DMARC记录,请转到DNS管理器并添加TXT记录。在名称字段中,输入_dmarc。在“值”字段中,输入以下内容: v=DMARC1; p=none; pct=100; rua=mailto:[email protected] 上述DMARC记录是一个安全的起点。要查看DMARC的完整解释,请查看以下文章。 创建DMARC记录以保护您的域名免受电子邮件欺骗 第7步:测试电子邮件分数和位置 创建PTR、SPF、DKIM记录后,转到https://www.mail-tester.com.你会看到一个独特的电子邮件地址。从你的域名发送电子邮件到此地址,然后检查你的分数。如你所见,我得了满分。 邮件测试员。com只能显示发件人分数。还有另一个名为GlockApps的服务,可以让你检查你的电子邮件是否放在收件人的收件箱或垃圾邮件文件夹中,或者直接被拒绝。它支持许多流行的电子邮件提供商,如Gmail、Outlook、Hotmail、YahooMail、iCloud mail等 如果你的电子邮件仍被标记为垃圾邮件呢? 在这篇文章中,我有更多提示:如何阻止你的电子邮件被标记为垃圾邮件。虽然这需要一些时间和精力,但在应用这些技巧后,你的电子邮件最终会被放入收件箱。 如果您的电子邮件被Microsoft邮箱拒绝怎么办? 微软似乎正在使用一个内部黑名单来屏蔽许多合法的IP地址。如果您的电子邮件被Outlook或Hotmail拒绝,您需要提交发件人信息表。之后,Outlook/Hotmail将接受您的电子邮件。 自动续订让我们加密TLS证书 Modoboa将最新版本的Let's Encrypt client(certbot)安装为/opt/certbot auto。通过执行以下命令,可以找到certbot二进制文件的位置。 sudo find / -name "*certbot*" 让我们加密TLS证书的有效期为90天。要自动续订证书,请编辑root用户的crontab文件。 sudo crontab -e 在该文件末尾添加以下行。 @daily /opt/certbot-auto renew -q && systemctl reload nginx postfix dovecot 保存并关闭文件。这会告诉Cron每天运行certbot续订命令。如果证书还有30天,certbot将续订证书。有必要重新加载Nginx web服务器、Postfix SMTP服务器和Dovecot IMAP服务器,以便他们能够获取新证书。 启用SMTPS端口465 如果要使用Microsoft Outlook客户端,则需要在Postfix SMTP服务器中启用SMTPS端口465。 故障排除 首先,请使用至少有2GB内存的VPS。在1GB RAM VPS上运行Modoboa会导致数据库、SpamAssassin或ClamAV因内存不足而被终止。如果你真的想使用1GB内存的VPS,你会丢失收到的电子邮件,并有其他不良后果。 如果无法访问Modoboa 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 systemctl status uwsgi systemctl status supervisor 如果启用了防火墙,则应在防火墙中打开以下端口。 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防火墙入门。 自动关机 我发现clamav守护进程服务有一种趋势,即使有足够的RAM,也会在没有明确原因的情况下停止。这将使电子邮件延迟1分钟。我们可以通过systemd服务单元将其配置为在停止时自动重启。将原始服务单元文件复制到/etc/systemd/system/目录。 sudo cp /lib/systemd/system/clamav-daemon.service /etc/systemd/system/clamav-daemon.service 然后编辑服务单元文件。 sudo nano /etc/systemd/system/clamav-daemon.service 在[service]部分添加以下两行。 Restart=always RestartSec=3 这样地: [Service] ExecStart=/usr/sbin/clamd --foreground=true # Reload the database ExecReload=/bin/kill -USR2 $MAINPID StandardOutput=syslog Restart=always RestartSec=3 保存并关闭文件。然后重新加载systemd并重新启动clamav守护进程。服务 sudo systemctl daemon-reload sudo systemctl restart clamav-daemon 抱歉,发生内部错误 如果在尝试登录Modoboa管理面板时看到内部错误消息,请编辑设置。py文件。 sudo nano /srv/modoboa/instance/instance/settings.py 打开调试模式。 DEBUG = True 重新启动uwsgi以使更改生效。 sudo systemctl restart uwsgi 接下来,再次尝试登录Modoboa管理面板。这一次,您将看到确切的内部错误。例如,在我的邮件服务器上 database connection isn't set to UTC

    2022.03.23 浏览:55
  • 在Ubuntu上构建自己的电子邮件服务器:基本Postfix设置

    为什么要运行自己的电子邮件服务器?也许你有一个需要向用户发送电子邮件的网站,或者你想将电子邮件存储在自己的服务器上以保护隐私。然而,构建自己的电子邮件服务器可能会让人头疼,因为有太多软件组件需要正确安装和配置。为了让你的旅程更轻松,我正在创建一个关于如何在Ubuntu上构建自己的电子邮件服务器的教程系列。 我有信心地说,这是关于在互联网上从头开始构建电子邮件服务器的最好、最全面的教程系列。你不仅会有一个工作的电子邮件服务器,而且你会更好地了解电子邮件的工作原理。本系列教程分为13个部分。 设置基本的Postfix SMTP服务器 设置Dovecot IMAP服务器和TLS加密 使用PostfixAdmin创建虚拟邮箱(Ubuntu 18.04、Ubuntu 20.04) 创建SPF和DKIM记录以通过垃圾邮件过滤器 设置DMARC以保护您的域声誉 7个有效的建议,防止你的电子邮件被标记为垃圾邮件 在Ubuntu上安装Roundcube Webmail(Ubuntu 18.04、Ubuntu 20.04) 如何在PostfixAdmin中托管多个邮件域 用后缀阻止垃圾邮件 用SpamAssassin阻止垃圾邮件 在Ubuntu邮件服务器上设置Amavis和ClamAV 如何使用自托管VPN服务器保护电子邮件服务器免受黑客攻击 (可选)在Postfix中启用并配置Postscreen以阻止垃圾邮件 我知道这似乎是一项非常艰巨的任务。然而,基于你想要实现的目标,你可能不需要遵循所有这些目标。我的文章很容易阅读,所以如果你花些时间来阅读,你就会有一个工作的电子邮件服务器。 提示:如果你不想从头开始构建一个电子邮件服务器,这是一个漫长而乏味的过程,那么你可以使用iRedMail快速轻松地建立一个功能齐全的邮件服务器。 本文是本系列教程的第1部分。在本文中,我将向您展示如何设置一个非常基本的Postfix SMTP服务器,也称为MTA(邮件传输代理)。完成本文后,您应该能够在自己的电子邮件服务器上使用自己的电子邮件域发送和接收电子邮件。本教程在Ubuntu20.04和Ubuntu18.04服务器上进行测试。 关于后缀 Postfix是最先进的邮件传输代理(MTA),又名SMTP服务器,它有两个用途。 它负责将电子邮件从邮件客户端/邮件用户代理(MUA)传输到远程SMTP服务器。 它还用于接收来自其他SMTP服务器的电子邮件。 Postfix由Unix和安全专家Wietse Venema构建。它易于使用,设计时考虑了安全性和模块化,每个模块都以完成任务所需的最低权限级别运行。Postfix与Unix/Linux紧密集成,不提供Unix/Linux已经提供的功能。它在简单和压力条件下都是可靠的。 Postfix最初是作为Sendmail的替代品设计的,Sendmail是Unix上的传统SMTP服务器。相比之下,Postfix更安全,更容易配置。它与Sendmail兼容,因此如果卸载Sendmail并用Postfix替换它,现有脚本和程序将继续无缝工作。 在本教程中,您将学习如何为单个域配置后缀。 选择合适的主机提供商 要找到一个适合电子邮件托管的VPS(虚拟专用服务器)提供商并非易事。许多托管公司,如DigitalOcean blocks port 25。DigitalOcean不会解锁端口25,因此您需要设置SMTP中继以绕过阻止,这可能会增加您的费用。如果您使用Vultr VPS,则默认情况下端口25被阻止。如果您打开支持票证,他们可以解除阻止,但如果他们决定不允许您的电子邮件发送活动,他们可能会在任何时候再次阻止。如果你使用他们的服务器发送时事通讯,Vultr实际上可能会重新阻止它。 另一个问题是,像DigitalOcean或Vultr这样的大型知名主机提供商被垃圾邮件发送者滥用。通常,服务器IP地址在几个黑名单上。Vultr有一些完整的IP范围被列入黑名单。 Kamatera VPS是运行邮件服务器的一个非常好的选择,因为 他们不封锁25号端口。 IP地址不在任何电子邮件黑名单上。(至少对我来说是这样。我选择了达拉斯数据中心。)你肯定不想被列入可怕的微软Outlook IP黑名单或SpamRats黑名单。有些黑名单会屏蔽整个IP范围,你无法从此类黑名单中删除你的IP地址。 您可以编辑PTR记录以提高电子邮件的可交付性。 它们允许你向你的电子邮件订阅者发送时事通讯,而不受每小时或每天的限制。请注意,您不允许发送垃圾邮件,也称为未经请求的批量电子邮件。如果收件人没有明确允许你发送电子邮件,而你向他们发送电子邮件,那就是未经请求的电子邮件。 您可以为一台服务器订购多个IP地址。这对需要发送大量电子邮件的人非常有用。您可以在多个IP地址上传播电子邮件流量,以实现更好的电子邮件交付。 我建议遵循下面链接的教程,在Kamatera上正确设置Linux VPS服务器。 如何在Kamatera上创建Linux VPS服务器 你还需要一个域名。我从NameCheap注册了我的域名,因为价格很低,他们给你一辈子免费的隐私保护。 安装Postfix之前要做的事情 为了让Postfix更好地运行并充分利用Postfix,你需要正确设置你的Ubuntu服务器。 为Ubuntu服务器设置正确的主机名 默认情况下,Postfix在与其他MTA通信时使用服务器的主机名来标识自身。主机名可以有两种形式:单个单词和FQDN。 单字形式主要用于个人电脑。您的Linux家用计算机可能被命名为Linux、debian、ubuntu等。FQDN(完全限定域名)通常用于面向Internet的服务器,我们应该在邮件服务器上使用FQDN。它由两部分组成:节点名和域名。例如: mail.linuxbabe.com 是一个FQDN。邮件是最重要的,linuxbabe。com是域名。FQDN将出现在smtpd横幅中。如果您的Postfix未在smtpd横幅中提供FQDN,则某些MTA会拒绝邮件。一些MTA甚至会查询DNS,查看smtpd横幅中的FQDN是否解析为邮件服务器的IP。 输入以下命令以查看主机名的FQDN格式。 hostname -f 如果你的Ubuntu服务器还没有FQDN,你可以使用hostnamectl设置一个。 sudo hostnamectl set-hostname your-fqdn 邮件服务器的常见FQDN是mail。你的地盘。通用域名格式。您需要注销并重新登录,才能在命令提示下看到此更改。 为邮件服务器设置DNS记录 你需要去你的DNS托管服务(通常是你的域名注册商,比如NameCheap)设置DNS记录 邮件交换记录 MX记录告诉其他MTA您的邮件服务器正在发送邮件。你的地盘。com负责为您的域名发送电子邮件。 MX record @ mail.linuxbabe.com MX主机的通用名称是mail。你的地盘。通用域名格式。您可以指定多个MX记录,并为邮件服务器设置优先级。数字越小,优先级越高。这里我们只使用一条MX记录,并将0设置为优先级值。(0 – 65535) 请注意,当您创建MX记录时,您应该在名称字段中输入@或您的apex域名,如下所示。apex域名是没有任何子域的域名。 记录 A记录将FQDN映射到IP地址。 mail.linuxbabe.com <IP-address> AAAA记录 如果您的服务器使用IPv6地址,那么最好为邮件添加AAAA记录。你的地盘。通用域名格式。 mail.linuxbabe.com <IPv6-address> 提示:如果使用Cloudflare DNS服务,则在为邮件创建和AAAA记录时不应启用CDN(代理)功能。你的领域。通用域名格式。Cloudflare不支持SMTP或IMAP代理。 PTR记录 指针记录或PTR记录将IP地址映射到FQDN。它是A记录的对应项,用于反向DNS(RDN)查找。 使用PTR记录反向解析IP地址有助于阻止垃圾邮件发送者。许多MTA只有在服务器真正负责某个域时才接受电子邮件。你绝对应该为你的邮件服务器设置一个PTR记录,这样你的邮件就有更好的机会进入收件人的收件箱而不是垃圾邮件文件夹。 要检查PTR记录中的IP地址,可以使用以下命令。 dig -x <IP> +short 或 host <IP> PTR记录不由您的域注册器管理。它由提供IP地址的组织管理。你的IP地址是从你的主机提供商那里获得的,而不是从你的域名注册商那里获得的,所以你必须在主机提供商的控制面板中为你的IP地址设置PTR记录。它的值应该是邮件服务器的主机名:mail。你的领域。通用域名格式。如果您的服务器使用IPv6地址,那么也为您的IPv6地址添加一个PTR记录。 要编辑Kamatera VP的反向DNS记录,请登录Kamatera客户端区域,然后打开支持票证,告诉他们为服务器IP地址添加PTR记录,以将IP地址指向邮件。你的领域。通用域名格式。你可能会想,这并不方便,但这是为了让垃圾邮件发送者远离平台,因此像我们这样的合法电子邮件发送者将拥有良好的IP声誉。 注意:Gmail实际上会检查PTR记录中指定的主机名的A记录。如果主机名解析为相同的IP地址,Gmail将接受您的电子邮件。否则,它将拒绝您的电子邮件。 完成以上所有操作后,让我们玩Postfix。 安装后缀 在ubuntu服务器上,运行以下两个命令。 sudo apt-get update sudo apt-get install postfix -y 系统将要求您为邮件配置选择一种类型。通常,您需要选择第二种类型:Internet站点。 无配置意味着安装过程不会配置任何参数。 互联网站点意味着使用Postfix向其他MTA发送电子邮件,并从其他MTA接收电子邮件。 使用智能主机上网意味着使用postfix接收来自其他MTA的电子邮件,但使用另一个智能主机将电子邮件转发给收件人。 卫星系统意味着使用智能主机发送和接收电子邮件。 仅本地意味着电子邮件仅在本地用户帐户之间传输。 接下来,输入系统邮件名称的域名,即@symbol后面的域名。例如,我的电子邮件地址是[email&#160;protected],所以我输入了linuxbabe。com的系统邮件名称。此域名将附加到未指定域名的地址。请注意,如果您输入一个子域,如mail。你的领域。com,您将能够接收发送给@mail的电子邮件。你的领域。com地址,但无法接收发往@your domain的电子邮件。com地址。 安装后,Postfix将自动启动,并显示/etc/Postfix/main。将生成cf文件。现在我们可以使用以下命令检查后缀版本: postconf mail_version 在Ubuntu18.04上,后缀版本是3.3.0,Ubuntu20.04附带3.4.10版本。 mail_version = 3.4.10 ss(Socket Statistics)实用程序告诉我们Postfix主进程正在侦听TCP端口25。 sudo ss -lnpt | grep master Postfix在/usr/sbin/目录下附带许多二进制文件,如下命令所示。 dpkg -L postfix | grep /usr/sbin/ 输出: /usr/sbin/postalias /usr/sbin/postcat /usr/sbin/postconf /usr/sbin/postdrop /usr/sbin/postfix /usr/sbin/postfix-add-filter /usr/sbin/postfix-add-policy /usr/sbin/postkick /usr/sbin/postlock /usr/sbin/postlog /usr/sbin/postmap /usr/sbin/postmulti /usr/sbin/postqueue /usr/sbin/postsuper /usr/sbin/posttls-finger /usr/sbin/qmqp-sink /usr/sbin/qmqp-source /usr/sbin/qshape /usr/sbin/rmail /usr/sbin/sendmail /usr/sbin/smtp-sink /usr/sbin/smtp-source 在防火墙中打开TCP端口25(入站) 入站TCP端口25需要打开,以便Postfix可以接收来自其他SMTP服务器的电子邮件。Ubuntu默认情况下不启用防火墙。如果已启用UFW防火墙,则需要使用以下命令打开端口25(入站)。 sudo ufw allow 25/tcp 然后我们可以用在线端口扫描仪扫描邮件服务器上打开的端口。输入邮件服务器的公共IP地址,然后选择扫描所有公共端口。 从上面的屏幕截图可以看到,TCP端口25在我的邮件服务器上是打开的。 检查TCP端口25(出站)是否被阻止 出站TCP端口25需要打开,以便Postfix可以向其他SMTP服务器发送电子邮件。出站TCP端口25由主机提供商控制,我们可以安装telnet实用程序来检查它是否打开或被阻止。 sudo apt install telnet 在邮件服务器上运行以下命令。 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/主机提供商为您打开出站端口25。如果他们拒绝您的请求,您需要设置SMTP中继以绕过端口25阻塞,或者使用像Kamatera这样不阻塞端口25的VPS。 有些人可能会问,“我能把端口25换成另一个端口来绕过阻塞吗?”?答案是否定的。只有在同时控制服务器端和客户端时,更改端口才有效。当Postfix发送电子邮件时,它充当SMTP客户端。收件人的邮件服务器充当SMTP服务器。您无法控制接收SMTP服务器。SMTP服务器正在监听端口25以接收电子邮件。他们预计SMTP客户端将到达端口25。没有其他接收电子邮件的端口。如果您的后缀未连接到接收SMTP服务器的端口25,您将无法发送电子邮件。 发送测试电子邮件 事实上,我们现在可以通过命令行发送和接收电子邮件。如果你的Ubuntu服务器有一个名为user1的用户帐户,那么这个用户的电子邮件地址是[email&#160;protected]。您可以向root用户发送电子邮件[email&#160;protected]。你也可以向Gmail、yahoo mail或任何其他电子邮件服务发送电子邮件。 安装Postfix时,sendmail二进制文件被放置在/usr/sbin/sendmail,它与传统的sendmail SMTP服务器兼容。您可以使用Postfix的sendmail二进制文件向您的Gmail帐户发送测试电子邮件,如下所示: echo "test email" | sendmail [email protected] 在这个简单的命令中,sendmail从标准输入读取一条消息,并将“test email”作为消息正文,然后将此消息发送到您的Gmail帐户。你应该能够在你的Gmail收件箱(或垃圾邮件文件夹)中收到这封测试邮件。您可以看到,虽然我们没有指定发件人地址,但Postfix会自动为发件人地址附加一个域名。这是因为我们在安装Postfix时在系统邮件名中添加了我们的域名。 注意:From:域名由Postfix中的myorigin参数决定,而不是myhostname参数。 你可以试着回复这封测试邮件,看看Postfix是否能收到邮件。从您的域发送的电子邮件很可能被标记为垃圾邮件。现在别担心。我们将在本系列教程的后面部分解决这个问题。 每个用户的收件箱位于/var/spool/mail/&lt;用户名&gt;或/var/mail/&lt;用户名&gt;文件如果不确定在哪里查找收件箱,请使用此命令。 postconf mail_spool_directory 后缀邮件日志存储在/var/log/mail中。日志 还是不能发邮件? 如果端口25(出站)未被阻止,但您仍然无法从自己的邮件服务器向Gmail等其他电子邮件地址发送电子邮件,那么您应该使用命令行文本编辑器(如Nano)打开邮件日志(/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记录。(PTR记录由提供IP地址的组织管理。) 要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。 使用邮件程序发送和阅读电子邮件 现在,让我们安装一个命令行MUA(邮件用户代理)。 sudo apt-get install mailutils 要发送电子邮件,请键入 mail -a FROM:your-account@yourdomain.com [email protected] [email protected]:~$ mail -a FROM:[email protected] [email protected] Cc: Subject: 2nd test email I'm sending this email using the mail program. 输入主题行和正文。要告诉mail您已经写完,请按Ctrl+D,mail将为您发送此电子邮件。 要阅读收到的电子邮件,只需键入mail。 mail 下面是如何使用邮件程序来管理邮箱。 要阅读第一封电子邮件,请键入1。如果只显示消息的一部分,请按Enter键以显示消息的其余部分。 要显示从消息1开始的消息标题,请键入h。 要显示最后一屏消息,请键入h$或z。 要阅读下一封电子邮件,请键入n。 要删除邮件1,请键入d 1。 要删除消息1、2和3,请键入d 1 2 3。 要删除从1到10的邮件,请键入d 1-10。 要重播消息1,请键入reply 1。 要退出邮件,请键入q。 已打开的邮件将从/var/mail/&lt;用户名&gt;to/home/&lt;用户名&gt/mbox文件。这意味着其他邮件客户端无法读取这些邮件。为了防止这种情况发生,请键入x而不是q退出邮件。 如何增加附件大小限制 默认情况下,附件的大小不能超过10MB,这由message_size_limit参数指示。 postconf | grep message_size_limit 输出: message_size_limit = 10240000 此参数定义了来自您自己的邮件服务器的电子邮件和到达您的邮件服务器的电子邮件的大小限制。 要允许连接50MB大小,请运行以下命令。 sudo postconf -e message_size_limit=52428800 当使用-e(编辑)选项调用postconf命令时,它将尝试在Postfix主配置文件(/etc/Postfix/main.cf)中查找参数(message_size_limit)并更改值。如果找不到该参数,则会在文件末尾添加该参数。 请注意,邮件大小限制不应大于邮箱大小限制,否则Postfix可能无法接收电子邮件。在上游后缀包中,邮箱大小限制的默认值为51200000字节(约48MB)。在Ubuntu上,默认值设置为0,这一点可以从 postconf | grep mailbox_size_limit 输出: mailbox_size_limit = 0 这意味着邮箱没有大小限制,这很好。 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 从邮件服务器发送带有大附件的电子邮件时,还应注意接收服务器的附件大小限制。例如,您不能向Gmail地址发送大于25MB的附件。 设置后缀主机名 默认情况下,Postfix SMTP服务器使用操作系统的主机名。但是,操作系统的主机名可能会发生变化,因此直接在Postfix配置文件中设置主机名是一种好的做法。使用命令行文本编辑器(如Nano)打开Postfix主配置文件。 sudo nano /etc/postfix/main.cf 找到myhostname参数并设置邮件。你的地盘。com作为价值。不建议使用apex域yourdomain。com作为我的主机名。从技术上讲,您可以使用apex域,但在本教程系列的后续部分中,它会产生问题。 myhostname = mail.yourdomain.com 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。)重新启动Postfix以使更改生效。 sudo systemctl restart postfix 创建电子邮件别名 在生产环境中操作邮件服务器时,需要配置某些别名。您可以在/etc/alias文件中添加电子邮件别名,该文件是一个特殊的后缀查找表文件,使用Sendmail兼容的格式。 sudo nano /etc/aliases 默认情况下,该文件中只有两行。 # See man 5 aliases for format postmaster: root 第一行是评论。第二行是该文件中别名的唯一定义。左边是别名。右侧是电子邮件的最终目的地。因此,[email&#160;protected]的电子邮件将被发送到[email&#160;protected]。RFC 2142要求提供邮政局长的电子邮件地址。 通常我们不使用根电子邮件地址。相反,邮政局长可以使用普通的登录名来访问电子邮件。因此,您可以添加以下行。用真实用户名替换用户名。 root: username 这样,[email&#160;protected]的电子邮件将被发送到[email&#160;protected]。现在您可以保存并关闭该文件。然后使用newalias命令重建别名数据库 sudo newaliases 仅使用IPv4 默认情况下,Postfix同时使用IPv4和IPv6协议,如下所示: postconf inet_protocols 输出: inet_protocols = all 如果邮件服务器没有公共IPv6地址,最好在Postfix中禁用IPv6,以防止不必要的IPv6连接。只需运行以下命令即可在Postfix中禁用IPv6。 sudo postconf -e "inet_protocols = ipv4" 然后重新启动Postfix。 sudo systemctl restart postfix 升级后缀 如果运行sudo-apt-update,然后运行sudo-apt-upgrade,系统将升级Postfix,可能会提示您再次选择Postfix的配置类型。这一次,您应该选择“无配置”以保持当前配置文件不变。 下一步 恭喜!现在你有了一个基本的Postfix电子邮件服务器并开始运行。您可以使用命令行发送纯文本电子邮件和阅读收到的电子邮件。在本系列教程的下一部分中,我们将学习如何安装Dovecot IMAP服务器并启用TLS加密,这将允许我们使用Mozilla Thunderbird等桌面邮件客户端发送和接收电子邮件。 第2部分:在Ubuntu上安装Dovecot IMAP服务器;启用TLS加密 和往常一样,如果你觉得这篇文章有用,订阅我们的时事通讯,获取更多提示和窍门。当心?

    2022.03.23 浏览:64