• 如何在Ubuntu18.04、Ubuntu20.04上安装Nginx最新版本

    之前我们讨论了如何在Ubuntu18.04 LTS上安装LEMP stack,这是一个用于托管动态网站的常用软件堆栈。然而,Ubuntu LTS(长期支持)版本中的软件往往已经过时。在本教程中,我们将学习如何在Ubuntu18.04和Ubuntu20.04上安装Nginx最新版本。在撰写本文时,Nginx的最新版本是1.17.0,于2019年5月21日发布。你可以在这里看到更改日志。 从官方Nginx存储库在Ubuntu 18.04、20.04上安装Nginx最新版本 Nginx。org为Ubuntu维护一个存储库。我们可以使用此存储库安装最新版本的Nginx。首先,使用以下命令为Nginx创建一个存储库源文件。Nano是一个命令行文本编辑器。 sudo nano/etc/apt/sources。列表d/nginx。列表 在文件中添加以下两行。 deb[arch=amd64]http://nginx.org/packages/mainline/ubuntu/仿生nginx deb srchttp://nginx.org/packages/mainline/ubuntu/仿生nginx 如果你使用的是Ubuntu20.04,那么把bionic改为focal。 deb[arch=amd64]http://nginx.org/packages/mainline/ubuntu/迪斯科nginx deb src酒店http://nginx.org/packages/mainline/ubuntu/迪斯科nginx 要在Nano文本编辑器中保存文件,请按CTRL+O,然后按Enter确认。按CTRL+X退出。为了验证从这个存储库下载的包的完整性,我们需要使用下面的命令导入Nginx公钥。 wgethttp://nginx.org/keys/nginx_signing.keysudo apt key add nginx_签名。钥匙 将存储库添加到Ubuntu18.04系统后,运行以下命令更新存储库信息。 sudo apt更新 如果您已从默认的Ubuntu软件存储库安装了Nginx,则需要将其删除。 sudo-apt移除nginx-nginx-common-nginx-full-nginx-core 此外,您可能还需要备份主Nginx配置文件/etc/Nginx/Nginx。因为它将被一个新的nginx取代。当我们稍后安装最新版本的Nginx时。 sudo cp/etc/nginx/nginx。conf/etc/nginx/nginx。形态巴克 现有的服务器块文件(也称为虚拟主机文件)将保持完整。现在运行以下命令从Nginx安装Nginx。组织存储库。 sudo apt安装nginx 如果apt软件包管理器询问您是否要安装新版本的/etc/nginx/nginx。conf文件,您可以回答否。 安装Nginx后,测试Nginx配置。 sudo nginx-t 如果测试成功,启动Nginx。 sudo systemctl start nginx 在启动时启用autostart。 sudo systemctl enable nginx 要检查Nginx的状态,请运行 systemctl状态nginx 输出: ● nginx。服务-nginx-高性能web服务器已加载:已加载(/lib/systemd/system/nginx.service;已启用;供应商预设:已启用)活动:自2019年5月26日21:01:10 CST起活动(正在运行);3年前的文档:http://nginx.org/en/docs/进程:16159 ExecStart=/usr/sbin/nginx-c/etc/nginx/nginx。conf(code=exited,status=0/SUCCESS)主PID:16160(nginx)任务:2(limit:4915)CGroup:/system。切片/nginx。服务├─16160 nginx:master process/usr/sbin/nginx-c/etc/nginx/nginx。形态└─16161 nginx:worker process May 26 21:01:10仿生。地方的domain systemd[1]:正在启动nginx-高性能web服务器。。。5月26日21:01:10仿生。地方的domain systemd[1]:启动了nginx-高性能web服务器。 要检查Nginx版本,请使用以下命令: nginx-v 输出: nginx版本:nginx/1.17.0 您还可以通过以下方式查看更多详细信息: nginx-V 输出: 设置Nginx进程用户 来自Nginx的Nginx包。org repository将nginx设置为nginx进程用户,该用户可以从/etc/nginx/nginx的第一行推断出来。conf文件。(如果选择安装新版本的/etc/nginx/nginx.conf文件。) 用户nginx; 然而,PHP-FPM进程的默认用户和组是www数据,如/etc/PHP/7.2/FPM/pool所示。d/www.conf文件。 用户=www数据组=www数据 所以我们需要在/etc/Nginx/Nginx中将www数据设置为Nginx进程用户。conf文件。 sudo nano/etc/nginx/nginx。形态 改变 用户nginx; 到 用户www数据; 保存并关闭文件。然后重新加载Nginx。 sudo systemctl重新加载nginx 包括服务器块文件 默认情况下,只包括/etc/nginx/conf.d/目录下的文件。如果您还想在sites enabled目录中使用服务器块文件,请确保在nginx的http部分中添加以下行。conf文件。 include/etc/nginx/conf.d/*。形态;包括/etc/nginx/sites enabled/*; 安装Certbot Nginx插件 如果您以前从Ubuntu存储库安装过Nginx,那么当您从Nginx安装Nginx时,python3 certbot Nginx包可能已被删除。组织存储库。我们需要重新安装它,以便您的TLS证书可以像往常一样自动续订。 sudo apt安装python3 certbot nginx 如何自动重启Nginx 有时Nginx会因各种原因崩溃。如果您希望让Nginx在崩溃后自动重启,那么我们需要编辑Nginx服务单元。首先,将原始Nginx服务单元复制到/etc/systemd/system/目录。 sudo cp/lib/systemd/system/nginx。服务/etc/systemd/system/nginx。服务 然后编辑服务单元。 sudo nano/etc/systemd/system/nginx。服务 在[service]部分添加以下行。 重启=始终重启秒=2 就像这样: [Service]Type=forking-PIDFile=/var/run/nginx。pid ExecStart=/usr/sbin/nginx-c/etc/nginx/nginx。conf ExecReload=/bin/kill-s HUP$MAINPID ExecStop=/bin/kill-s TERM$MAINPID Restart=always RestartSec=2 这将使Nginx在崩溃后每2秒尝试重新启动一次。保存并关闭文件。然后重启Nginx。 sudo systemctl重启nginx 下一步 我希望本教程能帮助你在Ubuntu18.04和Ubuntu20.04上安装Nginx的最新版本。您可能还想在Ubuntu 18.04和20.04上安装最新版本的MariaDB数据库服务器。 如何在Ubuntu18.04和Ubuntu20.04上安装MariaDB 10.5 如果你关心安全,你可以设置ModSecurity web应用防火墙来保护你的WordPress网站免受黑客攻击。 如何在Debian/Ubuntu上使用Nginx设置ModSecurity 一如既往,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯,获取新的提示和窍门?

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

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

    2022.03.24 浏览:60
  • 在Ubuntu 20.04、18.04、16.04上为多个域设置Postfix仅发送SMTP服务器

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

    2022.03.24 浏览:67
  • 使用Postfix交通地图,Relayhost地图可灵活发送电子邮件

    在之前的教程中,我们讨论了如何使用iRedMail或Modoboa快速设置功能齐全的邮件服务器,还学习了如何使用Postfix SMTP服务器设置SMTP中继,以绕过端口25阻塞或IP黑名单。但是,您可能不想将整个电子邮件服务器设置为使用中继主机。我们可以配置Postfix传输映射和中继映射,以便通过中继主机发送一些电子邮件,其他电子邮件直接发送给收件人。 有许多SMTP中继服务。在本教程中,我使用Sendinblue,它允许您每月免费发送9000封电子邮件。SMTP中继服务保持良好的IP声誉。它们会阻止坏的发件人,并增加好的发件人,因此使用SMTP中继服务将增加访问收件箱的机会。 如何使用Postfix运输地图 传输映射定义了从收件人地址到传输方法的映射。默认情况下,Postfix中transport_maps参数的值未设置,可以通过以下方式进行检查: postconf transport_maps 样本输出: transport_maps = iRedMail和Modoboa使用MySQL/MariaDB数据库存储交通地图。如果使用iRedMail设置邮件服务器,则输出应如下所示: transport_maps = proxy:mysql:/etc/postfix/mysql/transport_maps_user.cf proxy:mysql:/etc/postfix/mysql/transport_maps_domain.cf 如果使用Modoboa设置邮件服务器,则输出应如下所示: transport_maps = proxy:mysql:/etc/postfix/sql-transport.cf proxy:mysql:/etc/postfix/sql-spliteddomains-transport.cf transport_将参数点映射到一个或多个transport lookup表。您可以编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 并通过在文件末尾添加以下行来设置值。/etc/postfix/transport文件将包含查找表。 transport_maps = hash:/etc/postfix/transport 如果使用iRedMail,可以找到transport_maps参数并将该值设置为 transport_maps = hash:/etc/postfix/transport proxy:mysql:/etc/postfix/mysql/transport_maps_user.cf proxy:mysql:/etc/postfix/mysql/transport_maps_domain.cf 如果使用Modoboa,可以找到tranport_maps参数,并将该值设置为: transport_maps = hash:/etc/postfix/transport proxy:mysql:/etc/postfix/sql-transport.cf proxy:mysql:/etc/postfix/sql-spliteddomains-transport.cf 查找表可以是文件,也可以是MySQL/MariaDB数据库表的形式。将按指定顺序搜索查找表,直到找到匹配项。 保存并关闭后缀主配置文件。接下来,我们需要创建查找表文件。 sudo nano /etc/postfix/transport 在这个文件中,我们可以定义从收件人地址到传输方法的映射。例如,我发现很多。pl(波兰)域正在使用一个特定的黑名单来阻止我的邮件服务器的IP地址。我可以在此文件中添加以下行,以便将电子邮件发送到。pl域将通过Sendinblue中继。 .pl relay:[smtp-relay.sendinblue.com]:587 有些人发现很难进入微软邮箱(hotmail.com、outlook.com等)的收件箱。你的电子邮件很可能会被放入垃圾邮件文件夹。嗯,你可以尝试使用Sendinblue向Microsoft邮箱用户发送电子邮件。Sendinblue甚至允许您查看收件人是否打开或单击了您电子邮件中的链接。所以我在文件中放了以下几行。 /.*@hotmail.*/i relay:[smtp-relay.sendinblue.com]:587 /.*@outlook.*/i relay:[smtp-relay.sendinblue.com]:587 /.*@live.*/i relay:[smtp-relay.sendinblue.com]:587 /.*@msn.*/i relay:[smtp-relay.sendinblue.com]:587 如果您想使用中继主机向特定收件人发送电子邮件,但直接向同一域中的所有其他收件人发送电子邮件,则可以添加如下行。 [email protected] relay:[smtp-relay.sendinblue.com]:587 如果某个SMTP服务器不使用默认的SMTP端口25,而是使用其他端口(如2525)来接收传入的电子邮件,则可以添加以下行 example.com        smtp:[mail.example.com]:2525 在这个文件中添加自己的域名是一个很好的做法,如下所示。 your-domain.com    local 这告诉Postfix,发送到您自己域的电子邮件应该在本地发送。这是规范域的默认行为。如果邮件服务器有多个虚拟域,则应添加所有虚拟域。 your-domain1.com         local your-domain2.com local 如果您只在文件中添加以下两行,而不添加其他行,这将使所有电子邮件(发送到您自己域的电子邮件除外)通过中继主机发送。星号(*)是代表任何电子邮件地址的通配符。 your-domain.com    local * relay:[smtp-relay.sendinblue.com]:587 我们还可以进行以下配置,这意味着发送到您自己域的电子邮件将在本地传递。发送到gmail的电子邮件。com通常通过执行MX查找来发送,所有其他电子邮件都通过中继主机发送。 your-domain.com    local gmail.com smtp * relay:[smtp-relay.sendinblue.com]:587 保存并关闭文件。然后运行以下命令来构建索引文件。 sudo postmap /etc/postfix/transport 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 发送方相关中继映射 传输映射定义了从收件人地址到传输方法的映射。如果要定义从发送方地址到中继主机的映射,请使用发送方依赖的中继映射参数。默认情况下,其值为空,如下所示: postconf sender_dependent_relayhost_maps 输出: sender_dependent_relayhost_maps = iRedMail使用MySQL/MariaDB数据库存储依赖于发件人的relayhost映射。如果使用iRedMail设置邮件服务器,则输出应如下所示: sender_dependent_relayhost_maps = proxy:mysql:/etc/postfix/mysql/sender_dependent_relayhost_maps.cf 发送方依赖关系将参数点映射到一个或多个查找表。您可以编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 并通过在文件末尾添加以下行来设置值。/etc/postfix/relay_by_sender文件将包含查找表。 sender_dependent_relayhost_maps = hash:/etc/postfix/relay_by_sender 如果使用iRedMail,可以找到sender_dependent_relayhost_maps参数,并将该值设置为 sender_dependent_relayhost_maps = hash:/etc/postfix/relay_by_sender proxy:mysql:/etc/postfix/mysql/sender_dependent_relayhost_maps.cf 查找表可以是文件,也可以是MySQL/MariaDB数据库表的形式。将按指定顺序搜索查找表,直到找到匹配项。 保存并关闭后缀主配置文件。接下来,我们需要创建查找表文件。 sudo nano /etc/postfix/relay_by_sender 添加如下规则,这将使从[email ;protected]发送的电子邮件通过右侧指定的中继主机发送。 [email protected] [smtp-relay.sendinblue.com]:587 假设你有一个Linux服务器,它有两个网站,每个网站都有自己的邮件服务器,运行在两个不同的主机上,那么你可以添加以下两行代码,让每个网站使用自己的邮件服务器。 domain1.com                     [mail.domain1.com]:587 domain2.com [mail.domain2.com]:587 保存并关闭文件。然后构建索引文件。 sudo postmap /etc/postfix/relay_by_sender 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 设置SMTP身份验证 现在我们需要设置SMTP身份验证,以便Postfix SMTP客户端可以使用中继主机。编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在该文件末尾添加以下行。/etc/postfix/sasl_密码将包含用户名和密码。 # 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 如果您已经设置了relayhost参数,那么我建议像下面这样给它一个空值,因为我们现在使用的是传输映射和依赖于发送方的relayhost映射。 relayhost = 保存并关闭文件。然后创建/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 测试 现在,您可以向“传输映射”中定义的收件人发送测试电子邮件,或从“依赖发件人的relayhost映射”中指定的地址发送电子邮件。然后检查邮件日志(/var/log/mail.log或/var/log/maillog),看看它是否工作。 请注意,如果您使用的是第三方SMTP中继服务,如Sendinblue,则可能需要验证帐户中的域名,并编辑SPF和DKIM记录。 故障排除 错误#1 如果您的电子邮件未送达,而您在邮件日志(/var/log/maillog)中发现以下消息, Relay access denied (in reply to RCPT TO command)) 然后,您可能需要编辑/etc/postfix/sasl_passwd文件,并删除主机名后面的端口号,如下所示。 smtp-relay.sendinblue.com  smtp_username:smtp_password 保存并关闭文件。然后再次构建索引文件。 sudo postmap /etc/postfix/sasl_passwd 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 现在,您可以刷新电子邮件队列(尝试发送以前的电子邮件)。 sudo postqueue -f 错误#2 请注意,发件人依赖关系主机映射不支持特殊关键字:smtp、本地等。如果在后缀日志中看到以下错误,则表示您使用了smtp关键字。 Host or domain name not found. Name service error for name=smtp type=A: Host not found 额外提示:smtp_回退_中继 可以在后缀中指定回退中继主机。这样,如果无法到达SMTP目标(没有MX记录,没有A记录)或主中继主机处于脱机状态,Postfix将使用回退中继主机。 编辑主后缀配置文件。 sudo nano /etc/postfix/main.cf 在此文件中添加以下行。更换二次泵。relayhost。com与实际的relayhost名称。此中继主机可以来自Sendinblue或任何其他SMTP中继服务。 smtp_fallback_relay = [secondary.relayhost.com]:587 保存并关闭文件。然后,您应该编辑/etc/postfix/sasl_passwd文件,并像上面那样为回退中继主机添加SMTP凭据。最后,重新启动Postfix以使更改生效。 请注意,如果SMTP目的地使用greylisting临时拒绝电子邮件,那么您的Postfix SMTP服务器也将使用回退中继主机。 具有虚拟邮箱的每用户中继规则 假设你已经在Zoho这样的第三方服务上设置了商业电子邮件。现在你有了一个使用虚拟邮箱的自托管电子邮件服务器。你想在Zoho上保留旧的电子邮件地址,但在你自己的电子邮件服务器上创建新的电子邮件地址。在这种情况下,您需要创建每个用户的中继规则,以便将发送到旧电子邮件地址的电子邮件发送到Zoho邮件服务器。 编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 找到virtual_mailbox_maps参数,并将hash:/etc/postfix/transport添加到值字段。 virtual_mailbox_maps = hash:/etc/postfix/transport proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf 保存并关闭文件。然后在/etc/postfix/transport文件中,可以为旧电子邮件地址定义中继规则,如下所示。(注意:您也可以使用中继关键字而不是smtp。在这种情况下,它们都是正确的。) [email protected] smtp:[mx.zoho.com]:25 [email protected] smtp:[mx.zoho.com]:25 [email protected] smtp:[mx.zoho.com]:25 保存并关闭文件。然后为/etc/postfix/transport文件构建哈希表。 sudo postmap /etc/postfix/transport 然后重新启动Postfix。 sudo systemctl restart postfix 收尾 我希望本教程能帮助您使用后缀传输映射和依赖发件人的relayhost映射。和往常一样,如果你觉得这篇文章有用,订阅我们的免费时事通讯,获取更多提示和技巧。当心?

    2022.03.24 浏览:47
  • 如何启用/etc/rc。本地与Systemd

    如果您正在运行一个使用Systemd的Linux发行版,那么您可能会在/etc/rc中找到您的命令。本地文件不会在系统启动时运行。本指南介绍了如何启用/etc/rc。要在系统启动时运行的本地脚本。 启用/etc/rc。系统本地 如果在终端中键入以下命令: sudo systemctl status rc-local 您可能会得到以下输出: ● rc-local.service - /etc/rc.local Compatibility Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled) Active: failed (Result: exit-code) since Thu 2015-11-26 23:54:58 CST; 59s ago Process: 1001 ExecStart=/etc/rc.local start (code=exited, status=1/FAILURE) Nov 26 23:54:57 vivid rc.local[1001]: File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 920, in require Nov 26 23:54:57 vivid rc.local[1001]: needed = self.resolve(parse_requirements(requirements)) Nov 26 23:54:57 vivid rc.local[1001]: File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 807, in resolve Nov 26 23:54:57 vivid rc.local[1001]: raise DistributionNotFound(req) Nov 26 23:54:57 vivid rc.local[1001]: pkg_resources.DistributionNotFound: shadowsocks==2.8.2 Nov 26 23:54:58 vivid sudo[1008]: pam_unix(sudo:session): session closed for user root Nov 26 23:54:58 vivid systemd[1]: rc-local.service: control process exited, code=exited status=1 Nov 26 23:54:58 vivid systemd[1]: Failed to start /etc/rc.local Compatibility. Nov 26 23:54:58 vivid systemd[1]: Unit rc-local.service entered failed state. Nov 26 23:54:58 vivid systemd[1]: rc-local.service failed. 如果您尝试启用/etc/rc。使用以下命令在系统启动时运行本地: sudo systemctl enable rc-local 你可能会得到: The unit files have no [Install] section. They are not meant to be enabled using systemctl. Possible reasons for having this kind of units are: 1) A unit may be statically enabled by being symlinked from another unit's .wants/ or .requires/ directory. 2) A unit's purpose may be to act as a helper for some other unit which has a requirement dependency on it. 3) A unit may be started when needed via activation (socket, path, timer, D-Bus, udev, scripted systemctl call, ...). 解决方案 从上面可以看到,单元文件没有[Install]部分。因此,Systemd无法启用它。首先,我们需要创建一个文件: sudo nano /etc/systemd/system/rc-local.service 然后添加以下内容。 [Unit] Description=/etc/rc.local Compatibility ConditionPathExists=/etc/rc.local [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target 保存并关闭文件。要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出文件,请按Ctrl+X。下一步,运行以下命令以确保/etc/rc。本地文件是可执行的。 sudo chmod +x /etc/rc.local 注意:从16.10开始,Ubuntu不附带/etc/rc。本地文件了。可以通过执行此命令来创建文件。 printf '%s/n' '#!/bin/bash' 'exit 0' | sudo tee -a /etc/rc.local 然后将执行权限添加到/etc/rc。本地文件。 sudo chmod +x /etc/rc.local 之后,在系统启动时启用服务: sudo systemctl enable rc-local 输出: Created symlink from /etc/systemd/system/multi-user.target.wants/rc-local.service to /etc/systemd/system/rc-local.service. 现在启动服务并检查其状态: sudo systemctl start rc-local.service sudo systemctl status rc-local.service 输出: ● rc-local.service - /etc/rc.local Compatibility Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2015-11-27 00:32:56 CST; 14min ago Process: 879 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS) Main PID: 880 (watch) CGroup: /system.slice/rc-local.service Cron@reboot 如果上述方法不适用于您,或者您只是希望在系统引导时执行一些简单的命令,那么您还可以使用cron中的@reboot功能在系统引导时自动执行命令。例如,我希望我的shadowsocks客户端自动启动,因此我打开根用户的cron文件: sudo crontab -e 然后把下面的一行放在它的末尾。 @reboot /usr/bin/sslocal -c /etc/shadowsocks.json -d start 保存并关闭文件。 在一些Linux发行版(如archlinux)中,默认情况下不启用cron守护进程。所以你必须手动启用它。要在archlinux上启用它,请在终端中输入以下命令。 sudo systemctl enable cronie Shadowsocks是一个socks5代理,可用于绕过Internet防火墙。如果您感兴趣,请单击下面的链接,了解如何设置自己的Shadowsocks服务器。 在Debian、Ubuntu和Centos上安装自己的shadowsocks服务器 如何使用Systemd 想了解更多有关systemd的信息以有效管理您的系统吗?请阅读以下教程。 如何在Linux上使用Systemd管理服务、运行级别和日志

    2022.03.24 浏览:47
  • 3种更改Linux机器主机名的方法

    本教程介绍了更改Linux机器主机名的3种方法。 检查当前主机名 您可以使用hostname命令。 hostname 或者使用hostnamectl hostnamectl 更改主机名:Method1 主机名在/etc/Hostname文件中配置。所以我们可以手动打开这个文件并在那里更改主机名。 sudo nano /etc/hostname 删除此文件中的当前名称,并为Linux框输入新的主机名。保存并关闭此文件。 使用hostname或hostnamectl命令再次检查主机名,您将看到主机名已更改。如果你打开一个新的终端窗口,你也会注意到主机名已经改变。通过此方法,新主机名将在系统重新启动时保留。 更新/etc/hosts文件 我们需要做的另一件事是更新/etc/hosts文件。 sudo nano /etc/hosts 只需将旧主机名替换为新主机名即可。请注意,Linux区分大小写。然后保存并关闭此文件。 如果不更新/etc/hosts文件,一些程序(如sudo)就不知道如何解析新的主机名。 如果更改面向Internet的Linux服务器的主机名,新主机名应解析为公共IP地址。如果更改Debian或Ubuntu家用计算机的主机名,则新主机名应解析为127.0.1.1。 Debian安装程序创建127.0.1.1&lt;主机名&gt;没有永久IP地址的系统的入口。对于具有永久IP地址的系统,127.0.1.1应替换为永久IP地址。127.0.1.1使用环回接口。实际上,127.0.0.0/8(127.0.0.0~127.255.255.255)都绑定到环回接口。 方法2:使用hostnamectl更改主机名 sudo hostnamectl set-hostname <newhostname> 此命令将从/etc/hostname中删除旧主机名,并将新主机名放在原来的位置。与第一种方法一样,我们需要更新/etc/hosts文件。 方法3:临时更改主机名 要临时更改主机名(重新启动后丢失),请使用hostname命令: sudo hostname <new-hostname> 此命令不会更改/etc/hostname文件中的静态主机名。它只会更改临时主机名,因此新主机名不会在重新启动期间保留。 静态主机名存储在/etc/hostname文件中。

    2022.03.24 浏览:56
  • 如何通过VNC在KVM VPS上手动安装Arch Linux

    本教程介绍如何通过VNC在KVM VPS上手动安装Arch Linux。当你的主机提供商不提供Arch Linux一键安装时,这很有用。Arch Linux将被用作服务器操作系统,所以我只为服务器安装基本组件,而不安装GUI。 如果你想一键安装Arch Linux,我推荐Vultr,这是一家提供低成本、高性能VPS的托管公司。使用Vultr,您不必执行以下步骤。 在执行以下步骤之前,我建议您先获取KVM VP的默认网关IP,因为在安装过程中需要在网络配置文件中输入此IP。它通常以1结尾,比如192.168.0.1。要找到确切的IP地址,您可以先通过VPS控制面板中的一键安装功能在VPS上安装Ubuntu或CentOS,然后启动并发出以下命令: ip route show “默认通过”之后的IP地址是网关的IP地址。您还可以向VPS提供商咨询网关IP。 现在开始安装。 步骤1:从Arch Linux ISO启动VP 在VPS控制面板中,找到虚拟光盘驱动器并将Arch Linux ISO插入其中。有时,您可能需要将Arch Linux的直接下载链接提供给您的主机提供商,并要求他们为您安装它。 然后建立到VPS的VNC连接。您可以从主机提供商处获取VNC登录信息。之后,单击控制面板中的启动按钮启动VPS。 通常,您必须在VNC窗口中按F12之类的键。这允许您选择VPS将从哪个设备启动。选择光盘驱动器,以便VPS将引导Arch Linux ISO映像。 KVM虚拟机的默认固件称为SeaBIOS。 现在,Arch Linux引导菜单向您致意。选择第一个选项以引导到Arch Linux live环境。 第2步:连接到互联网 进入Arch Linux live环境后,请检查是否可以访问Internet。 ping google.com 如果收到谷歌服务器的回复,请继续执行步骤3。如果没有Internet连接,请按照以下步骤操作。 在KVM环境中,主机提供商为您提供静态IP地址。KVM VPS与网关(KVM主机)建立静态以太网连接,因此可以访问外部互联网。 首先将示例以太网静态网络配置文件复制到/etc/netctl/目录。 cp /etc/netctl/examples/ethernet-static /etc/netctl 然后编辑这个文件。 nano /etc/netctl/ethernet-static 将此文件更改为以下内容。您可能需要调整红色文本。 Interface=ens3 Connection=ethernet IP=static Address=('your-VPS-public-IP-address') Netmask=('255.255.255.0') Gateway=('gateway-IP') DNS=('8.8.8.8') 保存并关闭文件。接下来,关闭ens3接口。 ip link set dev ens3 down 现在加载以太网静态网络配置文件。 netctl start ethernet-static 你现在应该可以上网了。 ping google.com 第3步:创建分区 如果希望在/dev/sda上有一个MBR分区表,请使用以下命令: parted /dev/sda mklabel msdos 本教程创建一个GPT分区表: parted /dev/sda mklabel gpt 现在在/dev/sda上创建分区 parted /dev/sda 如果在上一步中创建了GPT分区表,则需要创建1MiB的bios_grub分区,因为KVM虚拟机的默认固件是seaBIOS,这是一个免费的开源bios实现。稍后,Grub 2引导加载程序将安装在bios_Grub分区内。 确保bios_grub分区从磁盘开始至少启动31 KiB(63个扇区),因为前63个扇区是为MBR引导代码保留的。然而,如果我们调整分区,使bios_grub分区可以从磁盘开始的1MiB开始,这将给我们带来性能优势。 使用以下命令创建bios_grub分区: mkpart primary 1MiB 2MiB 将其设置为bios_grub分区 set 1 bios_grub on 然后创建第二个分区。100%意味着它将使用磁盘的以下所有空间。本教程使用单个根分区。如果需要高级设置,可以进行调整。 mkpart primary 2MiB 100% 退出分离。 q 现在将第二个分区格式化为ext4文件系统。 mkfs -t ext4 /dev/sda2 在/mnt目录中装入第二个分区。 mount /dev/sda2 /mnt 第4步:安装基本的东西 首先打开镜像列表文件,为软件安装选择一个好的镜像。 nano /etc/pacman.d/mirrorlist 要选择镜像,只需将首选镜像的地址复制到文件开头,然后保存并关闭此文件。 现在使用pacstrap将基本系统安装到安装在/mnt目录下的第二个分区上。 pacstrap -i /mnt base 之后,生成一个fstab文件。 genfstab -U -p /mnt >> /mnt/etc/fstab 进入基本系统。 arch-chroot /mnt 生成区域设置。 nano /etc/locale.gen 找到我们。UTF-8 UTF-8线路,并从该线路上移除#标志。保存这个文件。 生成/etc/locale。conf文件并设置en_US。UTF-8作为默认语言环境。 echo LANG=en_US.UTF-8 > /etc/locale.conf export LANG=en_US.UTF-8 设置服务器的时区。我把它定在纽约。 ln -s /usr/share/zoneinfo/America/New_York /etc/localtime core、extra和community存储库对于Arch Linux服务器来说已经足够好了,它们在默认情况下是启用的,所以通常不需要配置存储库。如果出于任何原因需要对其进行配置,请使用nano文本编辑器编辑/etc/pacman。conf文件。 nano /etc/pacman.conf 之后,为root用户设置密码。 passwd root 安装Grub和os prober。 pacman -S grub os-prober 将Grub引导加载程序安装到第一个磁盘。因为我们使用的是BIOS固件,所以目标应该是i386-pc。 grub-install /dev/sda --target=i386-pc 生成Grub启动菜单。 grub-mkconfig -o /boot/grub/grub.cfg 退出chroot环境。 exit 重新启动KVM VPS。 shutdown -r now 第5步:安装后 现在KVM VPS已重新启动,请通过VNC再次连接。以root用户身份登录。运行以下命令: ping google.com 您的新Arch Linux服务器可能未连接到Internet。 因此,我们必须创建到KVM主机(网关)的静态以太网连接。在这里,我们必须对以太网静态网络配置文件进行一些修改。 首先将示例以太网静态网络配置文件复制到/etc/netctl/目录。 cp /etc/netctl/examples/ethernet-static /etc/netctl 然后编辑这个文件。 nano /etc/netctl/ethernet-static 进行以下更改。 Description="A basic static ethernet connection" Interface=ens3 Connection=ethernet IP=static Address=('your-vps-public-IP-address/24') #Routes=('192.168.0.0/24 via 192.168.1.2') Gateway=('your-gateway-IP') DNS=('8.8.8.8') Arch Linux中的默认以太网接口名为ens3,您可以使用ip地址命令来查找。将/24添加到您的VPS公共IP地址。/24相当于255.255.255.0。这里必须使用CIDR符号。 保存并关闭该文件。关闭ens3接口。 ip link set dev ens3 down 加载以太网静态网络配置文件。 netctl start ethernet-static 要在下次启动时自动加载配置文件,请运行: netctl enable ethernet-static 现在,您应该可以从Arch Linux服务器访问Internet了。 ping google.com 现在创建一个用户并将其添加到wheel、storage、power组。 useradd -m -g users -G wheel,storage,power -s /bin/bash <username> 设置此用户的密码。 passwd <username> 安装sudo实用程序。 pacman -S sudo 编辑/etc/suoders文件。 EDITOR=nano visudo 找到这一行: # %wheel ALL=(ALL) ALL 删除#签名并保存文件。这意味着允许轮子组的成员使用sudo。 安装SSH服务器 pacman -S openssh 编辑sshd_配置文件。 sudo nano /etc/ssh/sshd_config 将这两行添加到此文件末尾。调整用户名。 AllowUsers <username> PermitRootLogin no 第一行意味着允许新创建的用户通过ssh连接到Arch Linux服务器。第二种方法是禁用root ssh登录。这是Linux服务器安全的基本要求。保存并关闭此文件。 启动SSH服务器 systemctl start sshd 启动Arch Linux时启用SSH服务器自动启动 systemctl enable sshd 现在在您自己的计算机上打开一个SSH客户端,并尝试SSH到您的Arch Linux服务器中。您应该能够以普通用户的身份ssh登录,而不能以root用户的身份ssh登录。 ssh连接到服务器后,更新Arch-Linux。 sudo pacman -Syu 以下是您可能需要安装的一些工具。 sudo pacman -S wget unzip parted htop 启用NTP网络时间同步。 sudo timedatectl set-ntp true 检查NTP状态 timedatectl status 恭喜!您刚刚在KVM VPS上安装了Arch Linux。最后,订阅Arch Linux最新新闻源是一个好主意,因为可能会有一些重要的更改,您需要按照这些说明更新软件包。 一如既往,如果你觉得这篇文章有用,那么请订阅我们的免费时事通讯,或者在Google+、Twitter或类似我们的Facebook页面上关注我们。谢谢光临!

    2022.03.24 浏览:90