• 使用WP-CLI从命令行管理WordPress站点

    WP-CLI是WordPress的命令行界面。在本教程中,我们将介绍如何使用WP-CLI进行基本的WordPress网站管理。 WP-CLI对您的益处 从命令行更高效地管理WordPress任务 为您节省大量点击、页面加载和时间。 做一些在图形化WordPress仪表板中做不到的事情 使用Cron自动化任务 如何在Linux服务器上安装WP-CLI SSH登录到Linux服务器并下载wp cli。使用curl或wget进行phar归档。 curl -O 或 wget https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar 然后使用以下命令验证其是否有效: php wp-cli.phar --info 如果它起作用,您将看到如下内容: PHP binary: /usr/bin/php PHP version: 7.3.8 php.ini used: /etc/php/php.ini WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli WP-CLI vendor dir: phar://wp-cli.phar/vendor WP_CLI phar path: /home/linuxbabe WP-CLI packages dir: WP-CLI global config: WP-CLI project config: WP-CLI version: 2.3.0 接下来,我们向归档文件添加可执行权限,将其移动到/usr/local/bin/并将其重命名为wp。 chmod +x wp-cli.phar sudo mv wp-cli.phar /usr/local/bin/wp 现在我们可以直接输入wp而不是php-wp-cli。法尔。 wp --info 当新版本的WP CLI发布时,可以运行以下命令进行更新。 sudo wp cli update 如何使用WP-CLI 当运行wp cli命令来更改WordPress站点的文件和目录时,您需要以web服务器用户的身份运行该命令,该用户通常被命名为www-data、apache或nginx。 当sudo没有任何选项时,它会以root用户的身份运行该命令。要以另一个用户的身份运行该命令,请使用下面的-u选项。 sudo -u www-data wp plugin update --all 上面的命令将以www数据用户的身份运行wp plugin update--all命令。wp cli命令不更改文件或目录,只获取信息,可以作为普通用户运行。 另外需要注意的是,在运行任何wp cli命令之前,需要将工作目录更改为WordPress安装目录。 cd /var/www/wp-site/ 接下来,让我们看看如何使用WP-CLI管理WordPress核心、WordPress主题和WordPress插件。 注意:如果您看到以下错误 PHP Fatal error: Uncaught Error: Call to undefined function add_filter() 然后,您可能需要在wp config中注释掉add_filter函数。供WP-CLI使用的php文件。 管理WordPress核心 检查WordPress核心版本。 wp core version 显示WordPress核心的额外信息。 wp core version --extra 将WordPress core更新至最新版本。 wp core update 将WordPress core更新至最新的次要版本,而不是主版本。 wp core update --minor 检查MD5哈希 wp core verify-checksums 管理WordPress数据库 更新WordPress数据库 wp core update-db 优化数据库。(注意:此命令将暂时使您的网站无法访问:404未找到。) wp db optimize 修复数据库 wp db repair 管理WordPress主题 列出已安装的主题 wp theme list 搜索主题 wp theme search <theme_name> 安装一个主题 wp theme install <theme_name> 从指定的URL安装主题。 wp theme install 活跃的主题 wp theme active <theme_name> 更新主题 wp theme update <theme_name> 更新所有主题 wp theme update --all 卸载主题 wp theme uninstall <theme_name> 管理WordPress插件 列出WordPress上安装的所有插件。name字段显示插件使用的slug。 wp plugin list 列出有可用更新的插件。 wp plugin list --update=available 以json或csv格式显示输出。 wp plugin list --format=json wp plugin list --format=csv 从WordPress插件目录安装插件。 wp plugin install <plugin_name> 从URL安装插件。 wp plugin install 激活插件 wp plugin activate <plugin_name> 停用插件 wp plugin deactive <plugin_name> 卸载插件 wp plugin uninstall <plugin_name> 更新插件 wp plugin update <plugin_name> 更新所有插件 wp plugin update --all 如果您的服务器安装了多个WordPress,那么您可能希望运行以下命令,以允许www数据用户写入/srv/http/目录,因为WP-CLI将把下载的文件缓存到该目录中,因此在更新下一个WordPress安装时,WP-CLI不必再次下载相同的文件。 sudo setfacl -R -m "u:www-data:rwx" /srv/http/ 备份WordPress数据库和文件 运行以下命令备份数据库。请注意,将SQL文件放在网站的根目录下是非常不安全的。相反,把它放在其他地方,比如你的主目录。 wp db export ~/backup_db.sql 为了备份这些文件,我们可以使用下面的好的旧tar归档工具。 sudo tar -cpzvf ~/wp-file-backup.tar.gz /var/www/wp-site/ 一个简单的Shell脚本,可以自动更新WordPress、主题和插件 我们可以编写一个shell脚本,使用WP-CLI自动更新WordPress核心、主题和插件。我发现这种方法比使用add_filter函数来自动更新WordPress更稳定。创建一个。根用户主目录中的sh文件。 sudo nano /root/auto-update-wp.sh 将以下行放入文件中。您可能还希望自动更新WP-CLI本身,因此将WP CLI更新添加到此文件。 #! /bin/bash cd /var/www/wp-site/ sudo -u www-data wp core update --quiet sudo -u www-data wp core update-db --quiet sudo -u www-data wp theme update --all --quiet sudo -u www-data wp plugin update --all --quiet wp cli update --quiet --yes exit 请注意,我使用sudo-u来更改用户。很多人认为sudo中的su意味着超级用户。实际上它的意思是“切换用户并做点什么”。默认情况下,它会切换到root。--quiet标志将抑制信息性消息,--yes标志将为问题提供yes答案,以确定是否有新的稳定版本的WP CLI可用。 你可能想要改变 sudo -u www-data wp core update --quiet 到 sudo -u www-data wp core update --minor --quiet 因此WordPress将自动更新到最新的次要版本,而不是最新的主版本,这可能会引入bug。我总是将我的WordPress配置为落后一个版本。例如,如果最新的主版本是5.6,我会让我的WordPress保持在5.5版本。当WordPress 5.7发布后,我可以通过以下方式将我的WordPress更新到5.6: sudo -u www-data wp core update --version=5.6 你可以查看WordPress版本页面了解当前版本。 保存脚本并添加可执行权限。 sudo chmod +x /root/auto-update-wp.sh 然后在root用户的crontab中添加一个新条目。 sudo crontab -e 以下条目将在每天凌晨4点检查并执行自动更新。 0 4 * * * bash /root/auto-update-wp.sh 设置PATH变量是一个好主意,这样cron就可以找到您想要运行的命令。在crontab文件的开头放一行。 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 如何在仪表板中禁用WordPress更新通知 如果您已经在Cron中配置了自动更新,您可能需要在WordPress dashboard中禁用更新通知。只需在函数中添加以下代码。php文件在你的主题文件夹下,你就完成了。 //disable WordPress core update notification add_action('after_setup_theme','remove_core_updates'); function remove_core_updates() { if(! current_user_can('update_core')){return;} add_action('init', create_function('$a',"remove_action( 'init', 'wp_version_check' );"),2); add_filter('pre_option_update_core','__return_null'); add_filter('pre_site_transient_update_core','__return_null'); } 搜索及;替换为WP-CLI 您可以使用WP CLI批量替换WordPress数据库中的文本模式。例如,如果您将WordPress从HTTP迁移到HTTPS,那么您可能希望通过运行以下命令将所有HTTP链接替换为HTTPS。 wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --precise --recurse-objects --all-tables 使现代化 从5.5版开始,WordPress允许您在WordPress管理界面中设置插件和主题以自动更新或不更新。 收尾 这只是一个介绍。WP-CLI非常可扩展,可以做更多的事情。你可能还想设置ModSecurity web应用防火墙来保护你的WordPress网站免受黑客攻击。如果您在Debian/Ubuntu上使用Apache web服务器,请阅读以下教程。 如何在Debian/Ubuntu上使用Apache设置ModSecurity 如果您在Debian/Ubuntu上使用Nginx web服务器,请阅读以下教程: 如何在Debian/Ubuntu上使用Nginx设置ModSecurity 和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多教程?

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

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

    2022.03.24 浏览:650
  • 如何在Ubuntu上的两个Postfix SMTP服务器之间设置SMTP中继

    之前我们讨论了使用mailjet设置Postfix SMTP中继,这在您必须使用商业SMTP中继服务时非常有用。本教程将向您展示如何在Ubuntu上的两个Postfix SMTP服务器之间设置SMTP中继。 用例 假设有两台服务器:服务器A和服务器B。 您已经在服务器a上设置了一个功能齐全的邮件服务器,并将Postfix作为SMTP服务器。您可以使用它直接向收件人发送电子邮件,因为端口25未被阻止。 稍后,您将使用服务器B建立一个网站,该网站需要向用户发送通知电子邮件。 您可以在服务器B上设置另一个邮件服务器,但这会浪费时间和硬件资源。一个更合理的解决方案是在服务器B上安装Postfix SMTP服务器,并将其配置为通过服务器A发送电子邮件,该服务器可以将来自服务器B的电子邮件转发给最终收件人。服务器A已经建立了自己的IP声誉,所以您不必为服务器B建立IP声誉。 如果您在自己的Linux服务器上运行WordPress,我建议您按照本教程设置Postfix SMTP中继。这样,你就可以摆脱WordPress中的SMTP插件。WordPress插件会降低网站的运行速度,并且容易受到攻击,例如Easy WP SMTP插件中最近发现的漏洞,该漏洞允许未经授权的用户修改WordPress选项并执行恶意代码。由于WordPress插件中存在漏洞,我的网站曾经遭到破坏。因此,当我可以在底层操作系统上实现相同的功能时,我会尽可能多地去掉插件。 不用麻烦了,我们开始吧。 在服务器B上安装Postfix SMTP服务器 首先,让我们使用以下命令在服务器B上安装Postfix SMTP服务器。如果Postfix已经在服务器B上运行,则跳过安装Postfix,但仍然需要安装libsasl2模块包。 sudo apt install postfix libsasl2-modules 当您看到以下消息时,按Enter键选择第二个选项:Internet Site。 接下来,设置系统邮件名称。例如,我输入我的域名www.linuxbabe。通用域名格式。请注意,您不应该像linuxbabe那样输入主域名。com,因为这将使服务器B成为您的主域名的目的地,这意味着从服务器B为[email&#160;protected]生成的电子邮件将被发送到服务器B本身,而不是服务器a。 在服务器B上安装Postfix SMTP服务器后,让我们配置SMTP中继。 通过端口587的后缀SMTP中继 在服务器B上编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 找到下面这行。 relayhost = 默认情况下,不会设置其值。您需要将服务器A(邮件服务器)的主机名设置为中继主机,如下所示。 relayhost = mail.linuxbabe.com:587 然后在该文件末尾添加以下行以配置SASL身份验证。我们指定/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 保存并关闭文件。接下来,您应该在邮件服务器上创建一个专用的电子邮件帐户,以便服务器B可以使用此电子邮件帐户通过端口587登录。之后,创建/etc/postfix/sasl_passwd文件。 sudo nano /etc/postfix/sasl_passwd 将SMTP中继主机和SMTP凭据添加到此文件,如下所示。将这些值替换为您自己的邮件服务器的主机名、电子邮件帐户和密码。请注意,电子邮件帐户和密码之间有一个冒号。 mail.linuxbabe.com:587  [email protected]: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 从现在起,服务器B上的网站可以使用Postfix发送电子邮件,这些邮件将通过您的邮件服务器转发。请注意,许多web应用程序提供两种电子邮件发送模式: SMTP 发送邮件 SMTP通常指的是web应用程序本身中的SMTP中继功能,sendmail指的是在底层操作系统上使用SMTP服务器。您需要选择sendmail选项才能使用Postfix SMTP中继。如果您在WordPress网站上安装了SMTP插件,请删除该SMTP插件,WordPress将使用Postfix SMTP中继。 如果服务器A上有iRedMail 如果使用iRedMail在服务器A上设置邮件服务器,则iRedApp策略守护程序可能会拒绝服务器B的电子邮件中继,因为发件人与SMTP身份验证用户名不同。为了解决这个问题,我们需要将SMTP身份验证用户名添加到允许列表中。 编辑IREDADPD配置文件。 sudo nano /opt/iredapd/settings.py 在文件末尾添加以下行。必要时替换红色文本。 ALLOWED_LOGIN_MISMATCH_SENDERS = ['[email protected]'] 保存并关闭文件。然后重新启动iRedApp,使更改生效。 sudo systemctl restart iredapd 防止服务器B上的垃圾邮件发送者 默认情况下,Postfix SMTP服务器侦听计算机上的所有活动接口。由于服务器B上的Postfix SMTP服务器只用于向用户发送事务性电子邮件,我们可以让它只在本地主机上侦听,因此坏的参与者不能向其发送垃圾邮件。 在服务器B上编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 找到下面这行。 inet_interfaces = all 将其更改为: inet_interfaces = loopback-only 保存并关闭文件。重新启动Postfix以使更改生效。 sudo systemctl restart postfix 设置发件人地址、发件人名称和返回路径 默认情况下,发件人地址和发件人名称与用于验证登录的电子邮件帐户相同,返回路径类似于[email&#160;protected]。您可以在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' ); 保存文件,就完成了。 检查电子邮件发件人分数 现在你应该去https://www.mail-tester.com并从服务器B上的网站向邮件测试员地址发送电子邮件。检查你的发件人分数,看看SPF、DKIM和DMARC是否能通过。如你所见,我得了满分。 如果服务器B上有多个网站 如果你有多个网站在服务器B上运行,那么你需要为每个域名使用不同的中继主机。在服务器B上编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在文件中添加以下行,它告诉Postfix我们希望为每个发件人域使用不同的RelayHost。 sender_dependent_relayhost_maps = hash:/etc/postfix/relay_by_sender 然后创建文件。 sudo nano /etc/postfix/relay_by_sender 添加如下参数。左边是发送方域。右边是邮件服务器的主机名和端口号。 @domain1.com mail.domain1.com:587 @domain2.com mail.domain2.com:587 保存并关闭文件。然后编辑SASL身份验证文件。 sudo nano /etc/postfix/sasl_passwd 添加登录凭据,如下所示。 mail.domain1.com         a[email protected]:password mail.domain2.com         [email protected]:password 保存并关闭文件。然后创建hash db文件。 sudo postmap /etc/postfix/relay_by_sender sudo postmap /etc/postfix/sasl_passwd 重新启动Postfix SMTP服务器以使更改生效。 sudo systemctl restart postfix 从现在开始,给domain1发邮件。信封中的com地址将通过邮件转发。域1。com和与domain2的电子邮件。信封中的com地址将通过邮件转发。域2。通用域名格式。信封From address中包含其他域名的电子邮件将通过为relayhost参数指定的主机进行中继。 邮政域1。com和mail。域2。com可以指向相同的IP地址,这意味着两个域名使用相同的邮件服务器。您可以查看以下教程之一,在单个邮件服务器上托管多个域。 如何使用Nginx在iRedMail中托管多个邮件域 如何在Modoboa邮件服务器中托管多个邮件域 你也可以在这两个域名的不同服务器上托管电子邮件。如果您在服务器B上有多个WordPress站点,您还应该更改每个功能。在WordPress主题中设置php文件,以设置每个域名的自定义发件人地址和名称。 从邮件头中删除敏感信息 默认情况下,Postfix SMTP服务器将添加一个Received:电子邮件头,记录服务器B的IP地址,这可能会泄露您网站的IP地址(如果它位于CDN后面)。你可以告诉Postfix忽略它。在服务器a上创建头检查文件。 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不会在邮件头中包含这些敏感信息。注意,有些人可能也喜欢删除MIME版本头。我不建议这样做,因为这会导致DKIM验证失败。 结论 我希望本教程能帮助您在两台Postfix SMTP服务器之间设置SMTP中继。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:625
  • 在CentOS/RHEL上的2台后缀SMTP服务器之间设置SMTP中继

    之前我们讨论了使用mailjet设置Postfix SMTP中继,这在您必须使用商业SMTP中继服务时非常有用。本教程将向您展示如何在CentOS/RHEL上的两台Postfix SMTP服务器之间设置SMTP中继。 用例 假设有两台服务器:服务器A和服务器B。 您已经在服务器a上设置了一个功能齐全的邮件服务器,并将Postfix作为SMTP服务器。您可以使用它直接向收件人发送电子邮件,因为端口25未被阻止。 稍后,您将使用服务器B建立一个网站,该网站需要向用户发送通知电子邮件。 您可以在服务器B上设置另一个邮件服务器,但这会浪费时间和硬件资源。一个更合理的解决方案是在服务器B上安装Postfix SMTP服务器,并将其配置为通过服务器A发送电子邮件,该服务器可以将来自服务器B的电子邮件转发给最终收件人。服务器A已经建立了自己的IP声誉,所以您不必为服务器B建立IP声誉。 如果您在自己的Linux服务器上运行WordPress,我建议您按照本教程设置Postfix SMTP中继。这样,你就可以摆脱WordPress中的SMTP插件。WordPress插件会降低网站的运行速度,并且可能会受到攻击,例如Easy WP SMTP插件中的漏洞,该漏洞允许未经授权的用户修改WordPress选项并执行恶意代码。由于WordPress插件中存在漏洞,我的网站曾经遭到破坏。因此,当我可以在底层操作系统上实现相同的功能时,我会尽可能多地去掉插件。 不用麻烦了,我们开始吧。 步骤1:在服务器B上安装Postfix SMTP服务器 运行以下命令,从默认的CentOS/RHEL存储库安装Postfix。Cyrus SASL库是使SASL身份验证工作正常所必需的。 sudo dnf update sudo dnf install postfix cyrus-sasl cyrus-sasl-plain -y 安装后,启动Postfix SMTP服务器。 sudo systemctl start postfix 并在启动时启用自动启动。 sudo systemctl enable postfix 第2步:在服务器B上配置后缀 设置后缀主机名 默认情况下,Postfix SMTP服务器在与其他SMTP服务器通信时使用操作系统的主机名来标识自身。但是,OS主机名可能会更改,因此使用以下命令直接在Postfix配置文件中设置主机名是一种好的做法。请注意,不建议使用主域(yourdomain.com)作为主机名。 sudo postconf -e "myhostname = www.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" 设置$mydestination参数 $mydestination参数指定服务器认为自己是最终目的地的域列表。您可以通过以下方式显示$mydestination的当前值: postconf mydestination 输出 mydestination = $myhostname, localhost.$mydomain, localhost 默认值允许Postfix SMTP服务器接收来自[email ;protected]、[email ;protected]和[email ;protected]的电子邮件。请注意,mydestination的值不应包括像linuxbabe这样的主域名。com,因为这将使服务器B成为您的主域名的目的地,这意味着从服务器B为[email ;protected]生成的电子邮件将被发送到服务器B本身,而不是服务器a。 重新启动后缀 最后,我们需要重新启动Postfix以使更改生效。 sudo systemctl restart postfix 步骤3:通过端口587进行后缀SMTP中继 在服务器B上运行以下命令以设置relayhost参数。替换邮件。利努克斯宝贝。com和邮件服务器的主机名。 sudo postconf -e "relayhost = [mail.linuxbabe.com]:587" 然后在服务器B上编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在此文件末尾添加以下行以配置SASL身份验证。我们指定/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 保存并关闭文件。接下来,您应该在邮件服务器上创建一个专用的电子邮件帐户,以便服务器B可以使用此电子邮件帐户通过端口587登录。之后,在服务器B上创建/etc/postfix/sasl_passwd文件。 sudo nano /etc/postfix/sasl_passwd 将SMTP中继主机和SMTP凭据添加到此文件,如下所示。将这些值替换为您自己的邮件服务器的主机名、电子邮件帐户和密码。请注意,电子邮件帐户和密码之间有一个冒号。 [mail.linuxbabe.com]:587 [email protected]: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 从现在起,服务器B上的网站可以使用Postfix发送电子邮件,这些邮件将通过您的邮件服务器转发。请注意,许多web应用程序提供两种电子邮件发送模式: SMTP 发送邮件 SMTP通常指的是web应用程序本身中的SMTP中继功能,sendmail指的是在底层操作系统上使用SMTP服务器。您需要选择sendmail选项才能使用Postfix SMTP中继。如果您在WordPress网站上安装了SMTP插件,请删除该SMTP插件,WordPress将使用Postfix SMTP中继。 如果服务器A上有iRedMail 如果使用iRedMail在服务器A上设置邮件服务器,则iRedApp策略守护程序可能会拒绝服务器B的电子邮件中继,因为发件人与SMTP身份验证用户名不同。为了解决这个问题,我们需要将SMTP身份验证用户名添加到允许列表中。 编辑IREDADPD配置文件。 sudo nano /opt/iredapd/settings.py 在文件末尾添加以下行。必要时替换红色文本。 ALLOWED_LOGIN_MISMATCH_SENDERS = ['[email protected]'] 保存并关闭文件。然后重新启动iRedApp,使更改生效。 sudo systemctl restart iredapd 防止服务器B上的垃圾邮件发送者 由于服务器B上的Postfix SMTP服务器只用于向用户发送事务性电子邮件,我们可以让它只在本地主机上侦听,因此坏的参与者不能向其发送垃圾邮件。在服务器B上运行以下命令,使Postfix仅在本地主机上侦听。 sudo postconf -e "inet_interfaces = loopback-only" 重新启动Postfix以使更改生效。 sudo systemctl restart postfix 设置发件人地址、发件人名称和返回路径 默认情况下,发件人地址和发件人名称与用于验证登录的电子邮件帐户相同,返回路径类似于[email ;protected]。您可以在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' ); 保存文件,就完成了。 检查电子邮件发件人分数 现在你应该去https://www.mail-tester.com并从服务器B上的网站向邮件测试员地址发送电子邮件。检查你的发件人分数,看看SPF、DKIM和DMARC是否能通过。如你所见,我得了满分。 如果服务器B上有多个网站 如果你有多个网站在服务器B上运行,那么你需要为每个域名使用不同的中继主机。在服务器B上编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 在文件中添加以下行,它告诉Postfix我们希望为每个发件人域使用不同的RelayHost。 sender_dependent_relayhost_maps = hash:/etc/postfix/relay_by_sender 然后创建文件。 sudo nano /etc/postfix/relay_by_sender 添加如下参数。左边是发送方域。右边是邮件服务器的主机名和端口号。 @domain1.com mail.domain1.com:587 @domain2.com mail.domain2.com:587 保存并关闭文件。然后编辑SASL身份验证文件。 sudo nano /etc/postfix/sasl_passwd 添加登录凭据,如下所示。 mail.domain1.com [email protected]:password mail.domain2.com [email protected]:password 保存并关闭文件。然后创建hash db文件。 sudo postmap /etc/postfix/relay_by_sender sudo postmap /etc/postfix/sasl_passwd 重新启动Postfix SMTP服务器以使更改生效。 sudo systemctl restart postfix 从现在开始,给domain1发邮件。信封中的com地址将通过邮件转发。域1。com和与domain2的电子邮件。信封中的com地址将通过邮件转发。域2。通用域名格式。信封From address中包含其他域名的电子邮件将通过为relayhost参数指定的主机进行中继。 邮政域1。com和mail。域2。com可以指向相同的IP地址,这意味着两个域名使用相同的邮件服务器。您可以查看以下教程之一,在单个邮件服务器上托管多个域。 如何使用Nginx在iRedMail中托管多个邮件域 如何在Modoboa邮件服务器中托管多个邮件域 你也可以在这两个域名的不同服务器上托管电子邮件。如果您在服务器B上有多个WordPress站点,您还应该更改每个功能。在WordPress主题中设置php文件,以设置每个域名的自定义发件人地址和名称。 从邮件头中删除敏感信息 默认情况下,Postfix SMTP服务器将添加一个Received:电子邮件头,记录服务器B的IP地址,这可能会泄露您网站的IP地址(如果它位于CDN后面)。你可以告诉Postfix忽略它。在服务器a上创建头检查文件。 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不会在邮件头中包含这些敏感信息。注意,有些人可能也喜欢删除MIME版本头。我不建议这样做,因为这会导致DKIM验证失败。 故障排除 如果服务器B上的Postfix无法发送电子邮件,并且您在邮件日志(/var/log/maillog)中发现以下错误, warning: SASL authentication failure: No worthy mechs found 您需要安装Cyrus SASL库。 sudo dnf install postfix cyrus-sasl cyrus-sasl-plain -y 然后重新启动Postfix。 sudo systemctl restart postfix 结论 我希望本教程能帮助您在两台Postfix SMTP服务器之间设置SMTP中继。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:459
  • 在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 浏览:810
  • 使用Ubuntu服务器上的外部SMTP服务器发送电子邮件

    在上一篇文章中,我向您展示了如何将自动电子邮件备份发送到您的电子邮件地址,这样您就可以使用Linux命令行轻松备份WordPress站点,而无需为此安装WordPress插件。 Hiherloom mailx是一种MTA,可以配置为使用外部电子邮件服务器(如Gmail)从Linux服务器发送电子邮件。在Debian和CentOS/RHEL服务器上,它就像一个符咒。但是,如果你使用的是Ubuntu服务器,你可能会遇到工作上的困难。本文将解释如何使用sSMTP通过外部SMTP服务器发送电子邮件。 安装和配置sSMTP sSMTP是非常简单的SMTP服务器。在Ubuntu上,您可以使用以下命令安装sSMTP: sudo apt-get install ssmtp 打开配置文件: sudo vi /etc/ssmtp/ssmtp.conf 使用您的Gmail凭据配置以下行 root=YourAccount@gmail.com mailhub=smtp.gmail.com:587 AuthUser=YourAccount@gmail.com AuthPass=YourGmailPassword UseTLS=YES UseSTARTTLS=YES 使用mail命令发送电子邮件 sSMTP与许多MUA合作,比如传家宝mailx。使用以下命令安装heirloom mailx: sudo apt-get install heirloom-mailx 现在,您可以使用mail Command通过Gmail发送电子邮件,如下所示: echo "mail body" | mail -a path-for-attachment-file -s "mail subject line"  [email protected] Cron邮件设置 默认情况下,当任务遇到问题时,cron将向拥有crontab文件的用户发送电子邮件。您可以通过在服务器上执行mail命令来发现这一点。但是,由于我们将sSMTP配置为通过Gmail转发电子邮件,如果您的机器没有安装完整的邮件服务器(如postfix),Gmail将无法向您机器上的用户发送该电子邮件。 我们可以在crontab文件中添加MAILTO变量,如下所示: [email protected] 可以将其放在crontab文件的开头。然后保存并关闭crontab文件。现在Gmail可以找到电子邮件地址了。您将收到指定给MAILTO变量的电子邮件地址中的cron报告。

    2022.03.23 浏览:496
  • 如何在Debian 8 Jessie服务器上使用Nginx启用HTTP2协议

    本教程将向您展示如何在Debian 8服务器上使用Nginx启用HTTP/2协议以加快网页加载。有两个要求。 Nginx 1.9.5或更高版本,使用OpenSSL 1.0.2构建 启用HTTPS 让我们逐一解决这些问题。 从Jessie Backports Repo安装Nginx ALPN(应用层协议协商)是一个TLS扩展,允许服务器与web浏览器协商HTTP/2协议。没有ALPN,即使web服务器和web浏览器都支持HTTP/2,也无法建立HTTP/2连接。OpenSSL库支持1.0.2版的ALPN声明。 Debian 8拥有OpenSSL 1.0.1。要检查OpenSSL版本,请运行 openssl version 请注意,无需在系统上安装OpenSSL 1.0.2。我们只需要使用OpenSSL 1.0.2构建的Nginx 1.9.5或更高版本。Nginx在1.9.5版中增加了对HTTP/2的支持。默认的Debian 8回购协议包含Nginx 1.6.2。幸运的是,Jessie backports repo提供了使用OpenSSL 1.0.2l构建的Nginx 1.10.3。 要添加此存储库,请创建源列表文件。 sudo nano /etc/apt/sources.list.d/jessie-backports.list 将以下行添加到此文件。 deb http://ftp.debian.org/debian jessie-backports main 保存并关闭文件。然后从Jessie backports存储库更新包索引并安装Nginx。 sudo apt update sudo apt -t jessie-backports install nginx 检查Nginx版本并配置参数。 sudo nginx -V 输出: nginx version: nginx/1.10.3 built with OpenSSL 1.0.2l 25 May 2017 TLS SNI support enabled Nginx。org repo包含适用于Debian 8的最新版本的Nginx。但该包是针对OpenSSL 1.0.1构建的,因此不支持ALPN。 在Debian 8上安装SSL证书 我们可以安装由Let's Encrypt颁发的免费SSL证书。首先,在Jessie Backports repo的Debian 8上安装Let's Encrypt client(Certbot)。Python certbot nginx是certbot的nginx插件。 sudo apt install -t jessie-backports certbot python-certbot-nginx 现在,如果您已经配置了Nginx虚拟主机,那么使用Nginx插件获取并安装SSL证书,如下所示 sudo certbot --nginx --agree-tos -d example.com --redirect --staple-ocsp --must-staple --email your-email-address 说明: --nginx:使用nginx插件 --同意:同意让我们加密服务条款 --重定向:为新验证的vhost自动将所有HTTP通信重定向到HTTPS。 --装订ocsp:启用ocsp装订 --必须装订:将OCSP必须装订扩展添加到证书 --电子邮件:用于注册和恢复联系人的电子邮件 启用HTTP2协议 默认情况下,Certbot不会为Nginx配置HTTP/2。要启用HTTP/2,请编辑Nginx虚拟主机文件。找到以下指令。 listen 443 ssl; 然后像下面那样添加http2。 listen 443 ssl http2; 保存并关闭文件。重新加载Nginx。 sudo systemctl reload nginx 测验 你怎么知道你的网站实际使用的是HTTP2协议? 在Firefox或Google Chrome中,加载站点页面,然后按Ctrl+Shift+I打开开发者工具,单击网络选项卡。您可以看到用于您的域的协议。 你也可以在谷歌浏览器中安装HTTP/2和SPDY指示器扩展。 在Firefox中安装HTTP/2指示符扩展。 KeyCDN提供的在线HTTP/2测试工具可以告诉您的站点是否支持HTTP/2和ALPN。 请注意,您可能需要清除浏览器的缓存,因为缓存的对象可能被错误地标记为HTTP/1.1协议。 如何启用服务器推送 HTTP/2附带了一个名为“服务器推送”的功能,该功能允许web服务器发送web浏览器没有要求但加载网页所需的资源。例如,如果web浏览器请求一个HTML文档,那么web服务器知道客户端将需要相关联的CSS文件,并将其与HTML文档一起发送,从而消除了web浏览器发送CSS请求的需要,因此减少了一次往返。 这里,我以WordPress为例。WordPress网站通常需要以下资源。 风格css:主样式表,位于主题目录的根目录中。 jquery。js:JQuery库 jquery迁移。min.js:旧的JQuery 可湿性粉剂嵌入。min.js:用于嵌入视频 要将这些资源推送到客户端,请在服务器块中添加以下指令。用你自己的WordPress主题名替换Twenty17。 http2_push /wp-content/themes/twentyseventeen/style.css; http2_push /wp-includes/js/jquery/jquery.js; http2_push /wp-includes/js/jquery/jquery-migrate.min.js; http2_push /wp-includes/js/wp-embed.min.js; 保存并关闭文件。然后重新启动Nginx,使更改生效。 sudo systemctl restart nginx 请注意,您需要在函数中添加以下代码。php文件从WordPress CSS和JavaScript文件中删除版本号。WordPress更新时,如果将版本号添加到这些文件中,服务器推送将无法工作。 // Remove WP Version From Styles add_filter( 'style_loader_src', 'sdt_remove_ver_css_js', 9999 ); // Remove WP Version From Scripts add_filter( 'script_loader_src', 'sdt_remove_ver_css_js', 9999 ); // Function to remove version numbers function sdt_remove_ver_css_js( $src ) { if ( strpos( $src, 'ver=' ) ) $src = remove_query_arg( 'ver', $src ); return $src; } 测试服务器推送 在Google Chrome浏览器中,加载页面,然后按Ctrl+Shift+I打开开发者工具,然后单击网络选项卡。按F5重新加载。从下面的屏幕截图可以看出,服务器推送正在我的一个网站上运行。如果看到“来自内存缓存”,则右键单击它,清除浏览器缓存并重新加载。 改进 Certbot Nginx插件还不成熟。在使用Nginx插件后,由于使用了弱密钥交换参数,我在SSL实验室测试中得了B。Mozilla SSL配置生成器是帮助您创建现代SSL配置的好工具。 就这样!我希望本教程能帮助您在Debian 8服务器上使用Nginx启用HTTP/2。一如既往,如果你觉得这篇文章有用,那么订阅我们的免费时事通讯。

    2022.03.23 浏览:305
  • 在Ubuntu 20.04上安装Mautic自托管电子邮件营销

    本教程将向您展示如何使用Apache或Nginx web服务器在Ubuntu20.04上设置Mautic电子邮件营销平台。Mautic是MailChimp等商业电子邮件服务提供商的免费开源替代品。 毛特特征 铅的培养和跟踪 营销活动 Dripflow程序 现代电子邮件和登录页生成器(响应式设计、拖放块、MJML模板)。 您可以组织和分类段。 通过API自动添加广告联系人 社交媒体监控 安装插件以扩展Mautic的功能。 Mautic可以轻松地与Gmail、Mandrill、Sendgrid、Amazon SES等第三方SMTP中继服务集成。你也可以使用自己的邮件服务器。 可以与许多流行的第三方应用程序集成,如Twilio、Pipedrive、Salesforce、Gmail、Facebook、Instagram、Twitter、GoToMeeting、Hubspot、SugarCRM、MailChimp、Zoho CRM、Zapier等。 通过IMAP进行自动跳转处理,因此您无需手动删除不存在的电子邮件地址。 将报告发送到您的电子邮件。 发件人:地址可以根据每封电子邮件定制。 表单的渐进式分析(队列无限字段,仅显示指定数量的字段,将字段设置为始终显示,即使值已知)。 支持多个用户帐户和角色。 还有更多 自我托管电子邮件营销平台的好处 为什么你想自行托管电子邮件营销平台,而不是使用第三方ESP(电子邮件服务提供商),比如MailChimp? 首先,自托管可以为您节省大量资金。Mautic是免费的开源软件。你只需要每月支付26美元的VPS(虚拟专用服务器),它可以运行一个功能齐全的邮件服务器和Mautic电子邮件营销平台。它可以轻松处理数百万用户。所以不管你有多少订户,你的总费用总是26美元/月。如果你在MailChimp上拥有数以百万计的订户,每月的成本将是数千美元。 另一个原因是Firefox浏览器默认情况下会阻止第三方跟踪程序(跨站点跟踪),因此网站上的MailChimp注册小部件可能无法正常工作,MailChimp弹出窗口也不会显示给访问者。通过在你自己的域名下托管电子邮件营销平台,Firefox不会阻止跟踪器,因此你的注册小部件或弹出窗口可以正常工作。如果其他网络浏览器的用户决定阻止第三方追踪器,这也是事实。 Firefox阻止第三方追踪器 此外,您还可以从数据库中操作订阅者的信息,甚至通过Cron作业将其自动化。例如,我经常看到访客在登记表上输入信息时出现拼写错误。我使用cron作业自动更正一些常见的拼写错误。 最后但并非最不重要的一点是,自我托管可以保护你的言论自由。你永远不必担心电子邮件服务提供商会像Mailchimp那样关闭你的帐户。 自我托管电子邮件营销平台面临的挑战 你面临的第一个问题是找到一个好的自我托管电子邮件营销平台。之前我们讨论了如何在Ubuntu20.04服务器上设置Mailtrain,这是MailChimp的开源替代方案。然而,Mailtrain缺少一个典型的网站所有者想要的几个功能。 Mailtrain并没有为用户提供在网站上插入注册小部件或弹出窗口的简单方法。 用户无法设置RSS活动的时间表。 没有接触评级。 毕竟,Mailtrain只是少数软件开发人员的一个项目。 另一方面,Mautic是一个开发团队的项目,多年来开发了越来越多的功能。你确实有一个简单的方法来插入注册小部件,并用Mautic在你的网站上弹出。它周围还有一个充满活力、非常活跃的社区。此外,Mautic不仅仅是一个时事通讯/电子邮件营销平台。正如他们所说,这是一个成熟的数字体验平台。随着Acquia(这是一家为Drupal开源内容管理系统提供付费服务的公司)在2019年5月收购Mautic,Mautic的未来从未如此光明。所以我觉得是时候从Mailtrain转向Mautic了。 第二个挑战是拥有在自己的服务器上建立电子邮件营销平台的技术专长。别担心,过一会儿我会教你怎么做。 第三个挑战是,你需要在邮件服务器的IP地址和域名方面拥有良好的声誉。否则,您的电子邮件将进入垃圾邮件文件夹。Gmail Postmaster工具可以显示你的域名和IP地址是否有良好的声誉。从下面的截图可以看出,我在Gmail领域一直享有很高的声誉,因为我总是遵循最佳实践向我的订阅者发送电子邮件。我的订阅者很少将我的电子邮件报告为垃圾邮件。 要发送大量电子邮件,你需要遵循以下规则或惯例。 确保收件人允许你发送电子邮件。使用double opt-in验证订阅者的电子邮件地址。 不要给成千上万从未收到过你邮件的人发冷冰冰的邮件。相反,你需要预热你的IP地址。例如,第一天发送500封电子邮件,第二天发送1000封电子邮件,第三天发送2000封电子邮件。 在邮件底部附上你的联系信息和邮寄地址。 尽可能对电子邮件进行个性化设置。例如,在电子邮件中包含收件人的姓名。 遵守CAN-SPAM法案 避免大型附件。 清理你的邮件列表。例如,删除过去30天内未打开您的电子邮件的电子邮件订户。 作为返回路径认证发件人获得批准。 用GlockApps测试你的电子邮件位置。 在发送大量电子邮件之前,强烈建议您提高IP/域声誉。现在让我们看看如何在Ubuntu20.04服务器上安装Mautic。 在Ubuntu 20.04服务器上安装Mautic的先决条件 如果你还没有自己的邮件服务器,我建议在安装Mautic之前使用免费的iRedMail程序快速设置自己的邮件服务器,这样你就不必花钱购买商业SMTP中继服务。 Mautic是用PHP编写的,依赖于MySQL/MariaDB数据库服务器。所以你需要设置一个灯堆或LEMP堆。如果您更喜欢ApacheWeb服务器,请设置LAMP堆栈。 如何在Ubuntu 20.04上安装LAMP Stack 如果您更喜欢Nginx web服务器,那么设置LEMP堆栈。 如何在Ubuntu 20.04上安装LEMP堆栈 请注意,iRedMail将自动为您设置LEMP堆栈,因此,如果您要在iRedMail服务器上安装Mautic,则无需再次设置LEMP堆栈。 你还需要一个域名。我从namescape注册了我的域名,因为价格低廉,而且他们终身免费保护whois的隐私。不用再麻烦了,让我们在Ubuntu20.04服务器上安装Mautic。 第一步:将Mautic下载到Ubuntu20.04服务器上 在服务器上执行以下命令,下载最新的稳定版本。 wget https://github.com/mautic/mautic/releases/download/3.3.3/3.3.3-update.zip 安装解压实用程序并将其解压到/var/www/mautic/directory。 sudo apt install unzip sudo mkdir -p /var/www/mautic/ sudo unzip 3.3.3-update.zip -d /var/www/mautic/ 然后使web服务器用户(www数据)成为该目录的所有者。 sudo chown -R www-data:www-data /var/www/mautic/ 第2步:为Mautic创建MariaDB数据库和用户 登录MariaDB控制台。 sudo mysql -u root 接下来,使用以下命令为Mautic创建一个新数据库。本教程将其命名为mautic,您可以对数据库使用任何您喜欢的名称。 CREATE DATABASE mautic DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; 下面的命令将创建数据库用户和密码,同时将新数据库的所有权限授予新用户,以便Mautic稍后可以写入数据库。将红色文本替换为您首选的数据库名称、用户名和密码。 GRANT ALL ON mautic.* TO 'mauticuser'@'localhost' IDENTIFIED BY 'password'; 刷新特权表并退出MariaDB控制台。 FLUSH PRIVILEGES; EXIT; 第3步:安装所需和推荐的PHP模块。 运行以下命令安装Mautic所需或推荐的PHP模块 sudo apt install php-imagick php7.4-fpm php7.4-mysql php7.4-common php7.4-gd php7.4-imap php7.4-imap php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-gmp 如果使用Apache web服务器,则需要禁用Apache的PHP模块。 sudo a2dismod php7.4 您还需要禁用Apache中的prefork MPM模块。 sudo a2dismod mpm_prefork 现在,不管服务器上是否安装了mod_PHP,都需要运行以下命令来启用三个模块,以便在Apache中使用PHP-FPM。 sudo a2enmod mpm_event proxy_fcgi setenvif 然后重启Apache。 sudo systemctl restart apache2 步骤4:为Mautic创建Apache虚拟主机或Nginx配置文件 阿帕奇 如果使用ApacheWeb服务器,请为Mautic创建一个虚拟主机。 sudo nano /etc/apache2/sites-available/mautic.conf 将以下文本放入文件中。取代莫蒂克。实例com与你的真实域名,别忘了为它设置DNS记录。 <VirtualHost *:80> ServerName mautic.example.com DocumentRoot /var/www/mautic/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory /var/www/mautic/> Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> </VirtualHost> 保存并关闭文件。然后通过以下方式启用此虚拟主机: sudo a2ensite mautic.conf 重新加载Apache以使更改生效。 sudo systemctl reload apache2 现在,您应该可以在以下位置看到Mautic基于web的安装向导:http://mautic.example.com/installer. Nginx 如果使用Nginx web服务器,请为Mautic创建一个虚拟主机。 sudo nano /etc/nginx/conf.d/mautic.conf 注意:如果在iRedMail服务器上安装Mautic,则应在/etc/nginx/sites enabled/目录下创建虚拟主机。 sudo nano /etc/nginx/sites-enabled/mautic.conf 将以下文本放入文件中。取代莫蒂克。实例com与你的真实域名,别忘了为它创建DNS记录。还请注意,如果在iRedMail服务器上安装Mautic,则应使用TCP套接字(127.0.0.1:9999)而不是Unix套接字(Unix:/run/php/php7.4-fpm.sock)。 server { listen 80; listen [::]:80; server_name mautic.example.com; root /var/www/mautic; error_log /var/log/nginx/mautic.error; access_log /var/log/nginx/mautic.access; client_max_body_size 20M; index index.php index.html index.htm index.nginx-debian.html; location / { # try to serve file directly, fallback to app.php try_files $uri /index.php$is_args$args; } location ~ /(mtc.js|1.js|mtracking.gif|.*/.gif|mtc) { # default_type "application/javascript"; try_files $uri /index.php$is_args$args; } # redirect some entire folders rewrite ^/(vendor|translations|build)/.* /index.php break; location ~ /.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; #Note: If you install Mautic on iRedMail server, you should use the TCP socket instead. #fastcgi_pass 127.0.0.1:9999; } location ~* ^/index.php { # try_files $uri =404; fastcgi_split_path_info ^(.+/.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; #Note: If you install Mautic on iRedMail server, you should use the TCP socket instead. #fastcgi_pass 127.0.0.1:9999; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 16k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } # Deny everything else in /app folder except Assets folder in bundles location ~ /app/bundles/.*/Assets/ { allow all; access_log off; } location ~ /app/ { deny all; } # Deny everything else in /addons or /plugins folder except Assets folder in bundles location ~ /(addons|plugins)/.*/Assets/ { allow all; access_log off; } # location ~ /(addons|plugins)/ { deny all; } # Deny all php files in themes folder location ~* ^/themes/(.*)/.php { deny all; } # Don't log favicon location = /favicon.ico { log_not_found off; access_log off; } # Don't log robots location = /robots.txt { access_log off; log_not_found off; } # Deny yml, twig, markdown, init file access location ~* /(.*)/.(?:markdown|md|twig|yaml|yml|ht|htaccess|ini)$ { deny all; access_log off; log_not_found off; } # Allow access to certbot directory in order to obtain TLS certificate location ~ /.well-known/acme-challenge { allow all; } # Deny all attempts to access hidden files/folders such as .htaccess, .htpasswd, .DS_Store (Mac), etc... location ~ //. { deny all; access_log off; log_not_found off; } # Deny all grunt, composer files location ~* (Gruntfile|package|composer)/.(js|json)$ { deny all; access_log off; log_not_found off; } # Deny access to any files with a .php extension in the uploads directory location ~* /(?:uploads|files)/.*/.php$ { deny all; } # A long browser cache lifetime can speed up repeat visits to your page location ~* /.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; } } 保存并关闭文件。然后测试Nginx配置。 sudo nginx -t 如果测试成功,请重新加载Nginx以使更改生效。 sudo systemctl reload nginx 现在,您应该可以在以下位置看到Mautic基于web的安装向导:http://mautic.example.com/installer. 第5步:启用HTTPS 为了加密HTTP流量,我们可以通过安装Let's encrypt颁发的免费TLS证书来启用HTTPS。运行以下命令在Ubuntu20.04服务器上安装Let's Encrypt client(certbot)。 sudo apt install certbot 确保安全。存在著名的/acme challenge/目录,并且www数据是所有者。 sudo mkdir -p /var/www/mautic/.well-known/acme-challenge sudo chown www-data:www-data /var/www/mautic/.well-known/acme-challenge 如果您使用Nginx,那么您还需要安装Certbot Nginx插件。 sudo apt install python3-certbot-nginx 接下来,运行以下命令获取并安装TLS证书。 sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d mautic.example.com 如果使用Apache,请安装Certbot Apache插件。 sudo apt install python3-certbot-apache 并运行此命令以获取并安装TLS证书。 sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d mautic.example.com 哪里 --nginx:使用nginx插件。 --apache:使用apache插件。 --同意:同意服务条款。 --重定向:通过301重定向强制HTTPS。 --hsts:为每个HTTP响应添加严格的传输安全头。强制浏览器始终对域使用TLS。防止SSL/TLS剥离。 --装订ocsp:启用ocsp装订。有效的OCSP响应被绑定到服务器在TLS期间提供的证书上。 现在应获得证书并自动安装。 如果遇到以下错误,则可以尝试使用webroot插件获取TLS证书。 IMPORTANT NOTES: - The following errors were reported by the server: Domain: mautic.your-domain.com Type: unauthorized Detail: Invalid response from http://mautic.your-domain.com/.well-known/acme-challenge/oPobDrRkFbimsOD5Jbcx2VQfbMh9Hv3VueNhKdyhbcg [xx.xx.xx.xx]: "<html>/r/n<head><title>404 Not Found</title></head>/r/n<body>/r/n<center><h1>404 Not Found</h1></center>/r/n<hr><center>nginx</center>/r/n" To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA record(s) for that domain contain(s) the right IP address. 带有webroot插件的Nginx web服务器 sudo certbot --webroot -w /var/www/mautic -i nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d mautic.example.com 带有webroot插件的Apache web服务器 sudo certbot --webroot -w /var/www/mautic -i -apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d mautic.example.com 第6步:在Web浏览器中完成Mautic安装 现在,在浏览器地址栏中,输入您的域名,以便Mautic访问web安装向导。 https://mautic.your-domain.com/installer 或 https://mautic.your-domain.com/index.php/installer 单击下一步。如果您看到以下警告, The memory_limit setting in your PHP configuration is lower than the suggested minimum limit of 512M. Mautic can have performance issues with large datasets without sufficient memory. 然后编辑php。ini文件。 sudo nano /etc/php/7.4/fpm/php.ini 找到下面这行 memory_limit = 128M 将其值更改为512M。 memory_limit = 512M 保存并关闭文件。然后重新加载PHP7。4-FPM,警告应该消失。 sudo systemctl reload php7.4-fpm 在步骤1中,输入MariaDB/MySQL数据库详细信息。 在第2步中,为Mautic web界面创建一个管理员帐户。 在步骤3中,配置电子邮件设置。在邮件传输方面,你有很多选择。您可以使用PHP Mail、sendmail或Gmail,或将Mautic与第三方电子邮件服务(如Mandrill、Sendgrid、Amazon SES等)集成。在Mautic配置页面中安装后,这些设置始终可以更改。如果Mautic安装在您的邮件服务器上,那么您需要选择Sendmail作为邮件传输,这样Mautic将使用您自己的邮件服务器发送电子邮件。电子邮件处理应设置为立即发送,因此事务性电子邮件将立即发送,营销电子邮件将排队。 如果Mautic和您的邮件服务器在不同的主机上运行,并且您希望Mautic通过您的邮件服务器发送电子邮件,那么您需要选择其他SMTP服务器作为邮件传输。然后 输入邮件服务器的主机名 选择端口587 选择TLS加密。 选择“普通”作为身份验证模式。 在邮件服务器上输入电子邮件地址的登录凭据。 完成第3步后,您可以登录Mautic dashboard。 如果您看到500内部服务器错误,请检查Mautic日志,可以在/var/www/Mautic/app/logs/目录中找到。如果忘记了Mautic数据库密码,可以在/var/www/Mautic/app/config/local中找到。php文件。 步骤7:启用HTTP2以提高性能 可以启用HTTP2协议来提高Mautic的页面加载性能。 阿帕奇 首先,需要启用HTTP2模块。 sudo a2enmod http2 然后打开SSL虚拟主机文件。 sudo nano /etc/apache2/sites-enabled/mautic-le-ssl.conf 在打开后放置以下指令&lt;VirtualHost*:443&gt;标签 Protocols h2 http/1.1 保存并关闭文件。然后重启Apache,使更改生效。 sudo systemctl restart apache2 Nginx 要在Nginx虚拟主机中启用HTTP2协议,请查找以下行。 listen 443 ssl; # managed by Certbot 只需在ssl之后添加http2即可。 listen 443 ssl http2; # managed by Certbot 保存并关闭文件。然后重新加载Nginx。 sudo systemctl reload nginx 第8步:安装RSS到电子邮件插件 对于许多网站所有者来说,必须具备从RSS提要自动获取内容并将其发送给订阅者的能力。Mautic本机不支持此功能,但您可以安装插件来实现此功能。该插件售价9.95美元。这是一次性付款。你将获得终身免费更新。去https://mauticapps.com/购买。 付款后,你可以下载插件。 然后将这个插件上传到/var/www/mautic/plugins/目录。 接下来,转到Mautic插件目录。 cd /var/www/mautic/plugins/ 解压档案。 sudo unzip MauticRssToEmailBundle.zip 清除毛特人的藏匿处。 sudo -u www-data php7.4 /var/www/mautic/bin/console cache:clear 在Mautic仪表板中,单击右上角的齿轮图标并选择插件。单击安装/升级插件按钮,Mautic RSS to Email插件将显示在插件列表中。 步骤9:添加Cron作业 Mautic依靠Cron jobs来更新邮件列表片段、电子邮件营销活动、活动事件和处理电子邮件队列。编辑www数据用户的crontab文件。(不应在root用户的crontab文件中添加Mautic命令。) sudo -u www-data crontab -e 并添加如下的毛特克朗工作。 ###### Mautic Cron Jobs ####### # update segments every 15 minutes * * * * * php7.4 /var/www/mautic/bin/console mautic:segments:update > /dev/null # update campaigns every 15 minutes starting with an offset of 5 minutes at the beginning of each hour 5-59/15 * * * * php7.4 /var/www/mautic/bin/console mautic:campaigns:update > /dev/null # execute campaigns events every 15 minutes with an offset of 10 minutes 10-59/15 * * * * php7.4 /var/www/mautic/bin/console mautic:campaigns:trigger > /dev/null # process email queue 2-59/15 * * * * php7.4 /var/www/mautic/bin/console mautic:emails:send > /dev/null # import list in the background * * * * * php7.4 /var/www/mautic/bin/console mautic:import > /dev/null # Fetch bounce messages @hourly php7.4 /var/www/mautic/bin/console mautic:email:fetch # update MaxMind GeoLite2 IP Database once a week @weekly php7.4 /var/www/mautic/bin/console mautic:iplookup:download > /dev/null 保存并关闭文件。请注意,Mautic cron作业可能会使用相当多的CPU和RAM资源。如果Mautic和iRedMail安装在具有2GB RAM的服务器上,则不应在服务器上部署其他程序,或者可以选择升级服务器规格。 第10步:下载IP查找数据库 为了了解订户的地理位置,您需要下载MaxMind的免费Geolite2IP查找数据库。 首先,你需要在MaxMind创建一个帐户。Maxmind会给你发一封电子邮件。单击电子邮件中的链接设置密码,然后登录到您的MaxMind帐户。接下来,选择左侧栏上的“我的许可证密钥”。 单击“生成新许可证密钥”按钮。 给你的许可证密钥起个名字。然后选择否,因为我们不需要使用geoipupdate程序。然后点击确认按钮。 创建许可证密钥后,复制许可证密钥。转到Mautic dashboard,单击右上角的cog图标并选择configuration。在系统设置选项卡中,向下滚动至杂项设置。 为IP查找服务选择Maxmind GeoLite2 City Download 将许可证密钥粘贴到IP查找服务身份验证字段中。 接下来,单击获取IP查找数据存储按钮。最后,单击右上角的Apply按钮。 步骤11:安装跟踪JavaScript 在“跟踪设置”选项卡中,可以找到一段代码片段,可以将其添加到网站中以跟踪访问者。如果使用WordPress,请复制此代码段并将其粘贴到页脚中。WordPress主题文件夹下的php文件。 请注意,您需要转到“系统设置”选项卡,并在CORS设置中添加您的网站地址,以便跟踪JavaScript正常工作。 当你这样做的时候,你也应该在这个页面上设置默认时区。 单击应用按钮。注意:我发现需要等待时区设置生效。您可以使用以下命令清除Mautic缓存,以便时区设置立即生效。 sudo rm /var/www/mautic/app/cache/* -rf 将联系人导入Mautic 查看Mautic联系人导入页面。从CSV文件导入联系人时,可以选择联系人所有者、联系人段和标记。您还可以将CSV文件列与现有的Mautic联系人字段相匹配。 请注意,当向Mautic导入大列表(超过1000个联系人)时,您应该选择在后台导入,而不是在浏览器中导入。这是因为默认的PHP最大执行时间是30秒,但是导入一个大列表可能需要几分钟,因此如果您选择在浏览器中导入,它将被PHP限制停止。 如果导入过程似乎没有取得任何进展,则可以尝试从命令行导入。它可能会给你一些线索,为什么它没有取得进展。 sudo -u www-data php7.4 /var/www/mautic/bin/console mautic:import CSV文件中的一列不应包含太多字符(我认为不超过170个字符),否则导入可能会失败,命令行中将显示错误“存在数据库错误:EntityManager已关闭”。 如何在Mautic中发送电子邮件 在Mautic中,您可以使用三种类型的电子邮件活动: 自动营销活动:用于营销自动化 手动活动:向整个部分广播电子邮件 RSS活动:如果你安装了RSS到电子邮件插件 在莫特语中,没有电子邮件列表这样的概念。你需要导入联系人并将其分组。 如何创建自动化活动(营销自动化) 转到“联系人”选项卡,将联系人导入Mautic。 转到“分段”选项卡创建分段 将联系人添加到段中。 转到频道-&gt;发送电子邮件并创建要发送给订阅者的模板电子邮件。 转到“活动”选项卡创建活动。活动生成器允许您创建自动活动。为活动分配一个片段。 发布活动,你就完成了。等待电子邮件发送。 如何创建手动活动(广播电子邮件) 转到频道-&gt;电子邮件,单击“新建”按钮创建新的电子邮件段。 分段电子邮件可以手动发送(广播) 模板电子邮件不能手动发送。它们与自动化活动一起使用。 创建段电子邮件后,您可以单击“发送”按钮向订阅者广播电子邮件。 如何与Twilio短信营销整合 Twilio允许您使用其web服务API以编程方式拨打和接听电话,发送和接收文本消息。去Twilio。com创建一个帐户(您将获得15.50美元的试用积分)。然后进入Mautic设置-&gt;插件。单击安装/升级插件按钮。Twilio插件将出现。点击它。然后 将“已发布”状态从“否”更改为“是”。 输入您的Twilio帐户SID 输入您的Twilio认证令牌 转到你的Twilio帐户获取试用电话号码,复制该号码并将其粘贴到Mautic中的发送电话号码字段。 单击保存&amp;关闭按钮。现在,如果在活动生成器中创建活动,则可以选择发送短信。 在“频道”选项卡下有一个名为“文本消息”的新项。 请注意,存储在Mautic中的电话号码应带有+符号,带有联系人的国家代码,如+44。如果没有+符号,Mautic将自动添加美国国家代码(+1)。 如何处理短信订阅 如果你的用户不想收到你的短信,你需要允许用户取消订阅你的短信活动。这可以通过Mautic短信阅读器插件实现。要安装此插件,请运行 cd /var/www/mautic/plugins/ sudo git clone https://github.com/nebev/mautic-sms-reader.git sudo mv mautic-sms-reader SmsreaderBundle 清除Mautic应用程序缓存。 sudo -u www-data php7.4 /var/www/mautic/bin/console cache:clear 然后进入Mautic设置-&gt;插件。单击安装/升级插件按钮。Smsreader插件将出现。接下来,注销并重新登录。您将在设置中看到Twilio SMS Reader菜单项。输入您的Twilio帐户SID和“取消订阅/重新订阅”关键字。 无法发送短信? 如果Mautic无法发送SMS,您会在Cron作业中看到以下错误消息。 PHP Warning: Use of undefined constant CURLOPT_URL - assumed 'CURLOPT_URL' 这是因为您的服务器缺少PHP CURL扩展。可以使用以下命令修复此错误。 sudo apt install php7.4-curl 自动弹跳处理 您可以使用Mautic中的受监控收件箱功能自动从Mautic中删除电子邮件地址。转到Mautic配置-&gt;电子邮件设置-&gt;监控收件箱。输入邮箱登录凭据,然后测试连接并获取文件夹。 连接成功后,可以选择要监视跳转消息的文件夹。请注意,您需要将文件夹创建为邮箱中主收件箱文件夹的子文件夹,否则在选择要检查的文件夹时,您可能会看到“值无效”错误。如果使用Roundcube网络邮件,可以转到Roundcube设置-&gt;创建子文件夹的文件夹(Inbox.bounces)。 然后Mautic会允许你选择收件箱。作为要检查的文件夹反弹。单击“保存并关闭”按钮。在Roundcube中,您可以创建一个过滤器,自动将跳转邮件放入收件箱。弹跳文件夹。过滤规则如下所示: 主题包含“退回给发件人的未送达邮件” 包含“[email&#160;protected]” 接下来,您可以在服务器上运行以下命令,以便Mautic可以从邮箱中获取反弹消息。 sudo -u www-data php7.4 /var/www/mautic/bin/console mautic:email:fetch 这个命令已经存在于Cron作业中,因此您不必每天手动运行它。 默认情况下,退回的电子邮件地址不会自动从Mautic中删除,但会标记为“请勿联系”,因此Mautic不会向这些地址发送电子邮件。如果你想删除它们,你可以使用Bounce-Email equals Yes过滤器创建一个名为Bounched emails的段。 段将由Cron jobs更新。 接下来,您可以在Mautic中创建一个活动,自动删除被退回的电子邮件段中的联系人。 Mautic PHP控制台命令 Mautic Cron作业是几个PHP控制台命令。还有其他一些命令可能会很有用。列出以下可用命令: sudo -u www-data php7.4 /var/www/mautic/bin/console 例如,可以从命令行更新Mautic。 sudo -u www-data php7.4 /var/www/mautic/bin/console mautic:update:find sudo -u www-data php7.4 /var/www/mautic/bin/console mautic:update:apply PHP web应用程序中的控制台通常是bin/console、app/console或console。php。并非每个PHP web应用程序都提供控制台命令。对于不同的web应用程序,可用的命令不同。例如,有些允许您创建用户和重置密码,而另一些可能不允许您这样做。 收尾 我希望本教程能帮助你在Ubuntu 20.04上安装Mautic。你也可以查看《毛蒂人入门指南》,了解如何使用它。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.23 浏览:539
  • 如何在Ubuntu18.04上使用Apache(LAMP)安装phpMyAdmin

    本教程将向您展示如何使用Apache、MariaDB和PHP7安装phpMyAdmin。Ubuntu18.04 LTS上的2(灯组)。phpMyAdmin是一个免费的、开源的基于web的数据库管理工具,用PHP编写。它为用户提供了一个图形化的web界面来管理MySQL或MariaDB数据库。我们还将学习如何在phpMyAdmin上启用双因素身份验证。 phpMyAdmin允许管理员: 浏览数据库和表格; 创建、复制、重命名、更改和删除数据库; 创建、复制、重命名、更改和删除表格; 执行工作台维护; 添加、编辑和删除字段; 执行任何SQL语句,甚至多个查询; 创建、更改和删除索引; 将文本文件加载到表格中; 创建和读取表或数据库的转储; 将数据导出为SQL、CSV、XML、Word、Excel、PDF和LaTeX格式; 管理多台服务器; 管理MySQL用户和权限; 使用配置提示检查服务器设置和运行时信息; 检查MyISAM表中的引用完整性; 使用示例查询(QBE)自动创建复杂查询 连接所需的表; 创建数据库布局的PDF图形; 在数据库或其子集中进行全局搜索; 使用一组预定义的功能将存储的数据转换为任何格式,例如将BLOB数据显示为图像或下载链接; 管理InnoDB表和外键; 先决条件 要学习本教程,您需要在本地计算机或远程服务器上运行Ubuntu 18.04操作系统。 如果您正在寻找VPS(虚拟专用服务器),那么您可以通过我的推荐链接在Vultr上创建一个帐户,以获得50美元的免费积分(仅限新用户)。如果你需要用域名设置phpMyAdmin,我建议你从name便宜的网站购买域名,因为价格低廉,而且可以免费保护whois的隐私。 假设您已经在Ubuntu 18.04上安装了LAMP stack。如果没有,请查看以下教程。 如何在Ubuntu18.04 LTS上安装LAMP stack(Apache、MariaDB、PHP7.2) 现在,让我们开始安装phpMyAdmin。 第一步:在Ubuntu18.04上下载并安装phpMyAdmin phpMyAdmin包含在Ubuntu 18.04软件存储库中。因此,我们可以使用下面的命令轻松安装它。 sudo apt update sudo apt install phpmyadmin 上述命令将安装所有必要的依赖项,包括PHP7扩展。在安装过程中,它会提示您选择要配置的web服务器。点击空格键选择apache2。(星号*表示该项目已被选中)。然后按Tab键并输入以确认您的选择。 在下一个屏幕中,选择“是”以使用dbconfig common为phpMyAdmin配置数据库。 然后在MariaDB/MySQL中为phpmyadmin用户设置密码。 完成此步骤后,将创建一个名为phpmyadmin的新数据库,数据库用户phpmyadmin具有管理此数据库所需的权限。如果你和我一样好奇,你可以登录MariaDB并检查phpmyadmin用户被授予了什么特权。 您可以使用以下命令登录到MariaDB服务器。 sudo mysql -u root 然后检查phpmyadmin用户的权限。 show grants for [email protected]; 输出: 如您所见,用户phpmyadmin拥有数据库phpmyadmin的所有权限。现在,您可以通过执行以下命令退出: exit; 现在运行以下命令检查/etc/apache2/conf是否启用了/phpmyadmin。conf文件存在。 file /etc/apache2/conf-enabled/phpmyadmin.conf 如果安装过程中没有错误,您应该看到以下命令输出。 /etc/apache2/conf-enabled/phpmyadmin.conf: symbolic link to ../conf-available/phpmyadmin.conf 如果服务器上不存在此文件,则可能是您没有在phpMyAdmin安装向导中选择Apache web服务器。您可以使用以下命令修复它。 sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf sudo a2enconf phpmyadmin sudo systemctl reload apache2 第2步:从子目录访问phpMyAdmin 安装phpMyAdmin时,配置文件位于/etc/apache2/conf enabled/phpMyAdmin。conf,它允许我们通过子目录访问phpMyAdmin。如果你在同一台Ubuntu18.04服务器上安装了WordPress等其他web应用程序,只需在浏览器地址栏中的域名后添加/phpmyadmin即可。 your-domain.com/phpmyadmin 如果phpMyAdmin安装在本地Ubuntu计算机上,则可以通过在浏览器地址栏中键入以下文本来访问phpMyAdmin web界面。 localhost/phpmyadmin 如果连接被拒绝或未能完成,可能会有防火墙阻止HTTP请求。如果您使用的是iptables防火墙,则需要运行以下命令来打开TCP端口80和443。 sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT 如果您使用的是UFW防火墙,则运行此命令以打开TCP端口80和443。 sudo ufw allow http sudo ufw allow https 现在,您可以使用MariaDB/MySQL用户名和密码登录到phpMyAdmin 步骤3:从子域访问phpMyAdmin 如果你的Ubuntu18.04服务器没有其他Apache虚拟主机,那么你可能想使用子域访问phpMyAdmin web界面。通过这种方式,您可以启用HTTPS来加密流量。 首先,我们需要为phpMyAdmin创建一个Apache虚拟主机。现有的phpMyAdmin配置片段可以用作模板。让我们把它复制到一个新文件中。 sudo cp /etc/apache2/conf-enabled/phpmyadmin.conf /etc/apache2/sites-available/phpmyadmin.conf 然后使用命令行文本编辑器(如Nano)编辑新文件。 sudo nano /etc/apache2/sites-available/phpmyadmin.conf 在该文件开头添加以下行。更换pma。实例com与您首选的phpMyAdmin子域。别忘了为这个子域创建DNS记录。 <VirtualHost *:80> ServerName pma.example.com DocumentRoot /usr/share/phpmyadmin ErrorLog ${APACHE_LOG_DIR}/pma.error.log CustomLog ${APACHE_LOG_DIR}/pma.access.log combined 在该文件末尾添加以下行。 </VirtualHost> 保存并关闭文件。(要在Nano文本编辑器中保存文件,请按Ctrl+O,然后按Enter确认。要退出,请按Ctrl+X。)然后启用此虚拟主机。 sudo a2ensite phpmyadmin.conf 重新加载Apache web服务器以使此更改生效。 sudo systemctl reload apache2 现在你应该可以通过 pma.example.com 在登录表单中输入用户凭据之前,让我们启用HTTPS。 步骤4:使用Apache在phpMyAdmin上启用HTTPS 为了保护phpMyadmin web界面的安全,我们可以安装免费的Let's Encrypt TLS证书。运行以下命令从Ubuntu 18.04软件库安装Let's Encrypt client(certbot)。 sudo apt install certbot python3-certbot-apache Python3 certbot apache是certbot的apache插件。现在运行以下命令以获取并安装TLS证书。 sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email [email protected] 说明: –apache:使用apache验证器和安装程序 –同意:同意让我们加密服务条款 –重定向:添加301重定向。 –hsts:在每个HTTP响应中添加严格的传输安全头。 –装订ocsp:启用ocsp装订。 –必须装订:将OCSP必须装订扩展添加到证书中。 -d标志后面是域名列表,以逗号分隔。你最多可以添加100个域名。 –电子邮件:用于注册和恢复联系的电子邮件。 你会被问到是否想收到来自EFF(电子前沿基金会)的电子邮件。选择Y或N后,将自动获取并为您配置TLS证书,如下消息所示。 步骤5:phpMyAdmin登录错误故障排除 如果您尝试使用MariaDB根帐户登录phpMyAdmin,您可能会看到以下错误。 #1698 - Access denied for user 'root '@'localhost' 和 mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost' 如果使用用户phpmyadmin登录,则不会看到上述错误。但是,用户phpmyadmin只能用于管理phpmyadmin数据库。错误的原因是,默认情况下,MariDB root用户通过unix_套接字插件进行身份验证,而不是使用mysql_native_密码插件。为了解决这个问题,我们可以创建另一个管理员用户,并将所有权限授予新的管理员用户。 从命令行登录MariaDB服务器。 sudo mysql -u root 创建具有密码身份验证的管理员用户。 create user [email protected] identified by 'your-preferred-password'; 授予所有数据库的所有权限。 grant all privileges on *.* to [email protected] with grant option; 冲水特权和退出; flush privileges; exit; 现在,您可以使用管理员帐户登录phpMyAmin并管理所有数据库。

    2022.03.23 浏览:337
  • 7个有效的建议来阻止你的邮件被标记为垃圾邮件

    在之前的文章中,我们讨论了如何使用iRedMail或Modoboa轻松设置自己的电子邮件服务器,或者从头开始设置电子邮件服务器。然而,许多人无法将他们的电子邮件放入Gmail、Hotmail或Yahoo mail的收件箱,尽管他们在mail tester上的分数是10/10。通用域名格式。在这篇文章中,我将向你展示我的所有技巧,可以让你的电子邮件从收件人的垃圾邮件文件夹。 注意:本文不适用于垃圾邮件发送者。如果你发送垃圾邮件,不管你怎么努力,你的电子邮件最终都会被放入垃圾邮件文件夹。 6种类型的电子邮件 首先,你需要了解你发送的是哪种类型的电子邮件。在本文中,我将电子邮件分为6类: 个人电子邮件 事务性电子邮件 营销电子邮件/时事通讯 小组讨论邮件 冷冰冰的电子邮件 垃圾邮件 个人电子邮件通常由一个人发送给他的朋友、家人、同事等等。通常只有一个收件人。 事务性电子邮件从网站或web应用程序发送给用户。例如,访问者在网站上创建帐户后收到电子邮件,或请求重置密码。每封邮件只有一个收件人。 网站所有者向其订阅者发送营销电子邮件/时事通讯,以通知新的博客帖子、网络研讨会或推广产品和服务。每封邮件有许多收件人。订阅者只能回复列表所有者,但不能向其他订阅者发送电子邮件。 小组讨论邮件在开源软件开发中很常见。例如,Linux内核邮件列表允许订阅者讨论Linux内核开发。订阅者可以向邮件列表中的所有其他订阅者发送电子邮件。 冷邮件和垃圾邮件都是未经请求的电子邮件。不同之处在于,冷冰冰的电子邮件通常针对特定的人群来销售服务,如果收件人回复,发件人将提供真正的服务。垃圾邮件被发送给随机的人,通常是骗局。 四大邮箱提供商 邮箱提供商也称为收件箱服务提供商。有时人们称他们为ISP(互联网服务提供商)。实际上,宽带提供商和主机提供商也可以被称为ISP。最常用的邮箱提供程序有: Gmail 雅虎邮件 Microsoft Mail(Hotmail、Outlook、Live) 美国在线邮件 3电子邮件可交付性因素 当邮箱提供商决定你的邮件是否是垃圾邮件时,他们会考虑三个主要因素。 电子邮件标准遵从性 IP地址信誉 域名声誉 我将根据以下三个因素为您提供摆脱垃圾邮件文件夹的提示。请注意,改善您的IP声誉和域声誉需要时间,所以请耐心等待。 提示#1:设置电子邮件身份验证并获得10/10分 这与电子邮件标准合规性有关。你可能已经这样做了,但为了彻底讨论这个问题,我还需要谈谈。垃圾邮件发送者通常不符合电子邮件标准。为您的电子邮件服务器设置电子邮件身份验证(正确的PTR、SPF、DKIM、DMARC记录),并在mail tester上获得10/10的分数。com将增加你的电子邮件进入收件箱的机会。 提示2:使用SMTP中继服务 如果你的邮件服务器以前从未发送过电子邮件,那么你的IP地址就没有信誉(好的或坏的),主要邮箱提供商更可能将你的电子邮件放入垃圾邮件文件夹。不在黑名单上并不意味着你的IP地址具有良好的声誉,如果一个IP地址块上有非常糟糕的垃圾邮件发送者,它可能会影响该IP地址块附近的其他人。 SMTP中继服务保持良好的IP声誉。它们会阻止坏的发件人,并增加好的发件人,因此使用SMTP中继服务将增加进入收件箱的机会。 如何使用Sendinblue在Ubuntu上设置SMTP中继 如何使用Sendinblue在Debian上设置SMTP中继 如何使用Sendinblue在CentOS/Rocky Linux上设置SMTP中继 提示#3:使用托管VPS托管 如果你想使用自己的服务器而不是SMTP中继服务来发送电子邮件,那么拥有干净的IP地址来发送合法的批量电子邮件是非常重要的。不幸的是,像DigitalOcean和Vultr这样的大型知名VPS提供商被垃圾邮件发送者滥用,他们会滥用他们能找到的所有VPS提供商。请注意,VP有两种类型: 自我管理VPS:托管公司只确保您的VPS在线,不提供额外的技术帮助。您负责软件安装、设置、优化、更新、备份、正常运行时间监控和恶意软件扫描。 托管VPS:托管公司确保您的VPS在线,并为您管理服务器。你不需要担心软件安装、设置、优化、更新、备份、正常运行时间监控和恶意软件扫描。 与其使用自我管理的VPS,不如使用受管理的VPS来运行邮件服务器。这是因为托管VPS是由托管公司的技术支持人员配置的,如果客户发送垃圾邮件,它会很快被阻止,因此托管VPS的IP地址不会被列入黑名单。 托管VPS比自行管理的VPS稍微贵一些,但与SMTP中继服务相比,它仍然非常便宜,而且如果你关心发送合法的批量电子邮件,它确实是值得的。 我在ScalaHost上运行邮件服务器。从下面的截图可以看出,我的邮件服务器的IP地址(130.51.180.110)不在任何黑名单上。 Gmail认为我的IP声誉很高。 提示#4:将您的IP添加到白名单 dnswl。org是最著名的公共电子邮件白名单。您可以转到自助服务页面,在网站上注册帐户,然后添加邮件服务器信息。如果幸运的话,邮件服务器的IP地址可能会被添加到白名单中。 在DNSWL上创建帐户后,您应该单击DNSWL ID选项卡来创建ID。输入您的域名并验证域所有权。然后将邮件服务器IP地址添加到DNSWL ID中。 您的IP地址不会立即添加到您的DNSWL ID。您的更改请求必须得到DNSWL管理员的批准。一旦获得批准,您的IP地址将出现在您的DNSWL ID中,这意味着您的邮件服务器IP地址将添加到白名单中。 注意:您应该遵循电子邮件发送最佳实践,绝不发送垃圾邮件,否则您的IP地址将从dnswl中删除。组织白名单。 dnswl。org对一个IP地址有5分/可信度。分数越高越好。 0/无:仅避免直接阻塞(-0.1) 1/低:降低误报率(-1.0) 2/中等–确保避免误报,但允许覆盖明确的情况(-10.0) 3/高–避免超控(-100.0)。 括号中的分数是SpamAssassin分数,将应用于您的电子邮件。在Spamasassin中,分数越低越好。 默认情况下,您的IP地址的可信度为0分/无。如果您使用ScalaHost并严格遵循本文所述的电子邮件发送最佳实践,随着时间的推移,您的IP地址将在dnswl获得更高的分数/可信度。组织。 您可以使用以下命令检查当前分数,其中78.56.34.12是IP地址的反向符号。 host 78.56.34.12.list.dnswl.org 例如,我的邮件服务器的IP地址是130.51.180.110,所以我运行以下命令来检查当前的分数。 host 110.180.51.130.list.dnswl.org 返回地址的最后一位是dnswl分数。正如你所见,我的dnswl分数是1。 在dnswl获得2到3分并不容易。组织。你需要多年的业绩记录才能实现这一目标。 小贴士#5:建立一个网站,创造积极的参与信号 域名声誉是影响邮箱提供商决策的最终因素。如果你的域名在邮箱提供商中享有很高的声誉,那么即使你没有严格遵守电子邮件标准或你的IP地址声誉不佳,你的电子邮件也会进入收件人的收件箱。 注意:我不是建议你忽略其他提示。 Gmail postmaster工具显示我的域名拥有很高的域名声誉。 如果你有一个新域名,或者你从未用你的域名发送过电子邮件,那么大邮箱提供商就不知道你。你的域名没有任何声誉(好或坏)。那么,你如何着手改善你的域名声誉呢? 主要有两件事与你的域名声誉有关:网站质量和电子邮件收件人参与度。 网站质量 首先,你的网站会影响你的域名声誉。以下内容会降低你的声誉分数。 没有与你的域名相关的网站。 你的网站只有一个空白页面。 你的网站被用来传播病毒。 以下项目将提高你的声誉分数。 有一个网站与你的域名相关。 你的网站使用HTTPS。 你的网站有独特的、高质量的内容。 如果你还没有网站,你可以按照下面的教程之一建立WordPress博客。 使用Apache、MariaDB和PHP7在Ubuntu20.04上安装WordPress。4(灯) 使用Nginx、MariaDB和PHP7在Ubuntu20.04上安装WordPress。4(LEMP) 使用Nginx、MariaDB和PHP7在Ubuntu18.04上安装WordPress。2(LEMP) 电子邮件收件人约定 另一个可能影响你的域名声誉的更重要的事情是收件人对你的电子邮件的参与度。积极参与越多,你的域名声誉就会越高。积极参与包括: 打开你的电子邮件。 点击电子邮件中的链接。 回复你的邮件。 将您的电子邮件地址添加到联系人列表(非常积极的订婚信号) 将您的电子邮件从垃圾邮件文件夹移动到收件箱(非常积极的参与信号) 消极参与包括: 删除你的电子邮件而不打开它。 单击电子邮件中的“取消订阅”链接。 将您的电子邮件报告为垃圾邮件(非常负面的订婚信号) 但你可能会问:如果我的电子邮件一开始就无法进入收件箱,我该如何创造积极的参与?嗯,对于不同的电子邮件发送者有不同的方式。我将电子邮件发送者分为两组。 那些发送交易性电子邮件的人 那些不发送交易性电子邮件的人 如果您发送事务性电子邮件 如果你发送事务性电子邮件,很容易与收件人积极互动,因为收件人希望你向他/她发送电子邮件。在你的网站上,你可以告诉收件人检查垃圾邮件文件夹,并将你的电子邮件标记为非垃圾邮件。他们更有可能打开你的电子邮件并点击电子邮件中的链接。随着时间的推移,你的电子邮件会自动进入收件箱。 请注意,邮件列表注册确认电子邮件是事务性电子邮件,因此,如果您的网站上有新闻稿注册表单,您还可以告诉收件人检查垃圾邮件文件夹,并将您的电子邮件地址添加到联系人列表中。收件人很可能会单击电子邮件中的确认链接。 如果您不发送事务性电子邮件 如果你运行一个只供个人使用的自托管邮件服务器,你就更难创建最初的积极参与,但你可以: 使用您的原始电子邮件地址向您的联系人列表发送电子邮件,告诉他们您将使用新的电子邮件地址,并要求他们将其添加到他们的联系人列表中。 在您的原始电子邮件地址创建一条自动回复消息,告诉发件人将您的新电子邮件地址添加到联系人列表中,并向新电子邮件地址发送电子邮件。 向你的家人、朋友、同事寻求帮助。向他们发送虚构的电子邮件,并要求他们将您的电子邮件从垃圾邮件文件夹移动到收件箱。你可能需要给每个人发几封虚构的电子邮件。 如果你发送冷冰冰的电子邮件,你需要格外小心如何接近收件人。他们没有索要你的电子邮件,如果你一次又一次地给他们发送电子邮件,他们很可能会将你的电子邮件报告为垃圾邮件。别急。如果收件人在收到两三封电子邮件后没有回复,请停止向他们发送电子邮件。 提示#6:不要更改邮件服务器的主机名或From:域名。 如果你在子域中只更改一封信,邮箱提供商的电子邮件过滤器将以不同的方式对待你,你将失去你建立的域声誉。子域继承了apex域(一个不包含子域的域)的部分声誉,但不是全部声誉。每个子域都有自己的声誉。请注意,来自同一域名的每个电子邮件地址也有自己的个人声誉。 小贴士7:永远不要发送垃圾邮件 最后但并非最不重要的一点是,你不应该发送垃圾邮件。如果你发送垃圾邮件,不管你怎么努力,你的电子邮件最终都会被放入垃圾邮件文件夹,甚至会被彻底拒绝。你的服务器IP地址将被列入黑名单。你的域名声誉也将受到损害。有些人不知道他们在发送垃圾邮件,而实际上他们知道。 垃圾邮件也称为未经请求的批量电子邮件。这是垃圾邮件的两个条件。 未经请求的电子邮件:如果一个人没有明确授予你发送电子邮件的权限,而你向此人发送了一封电子邮件,那就是未经请求的电子邮件。 批量电子邮件:如果你只向一个人发送未经请求的电子邮件,那就不是垃圾邮件。当你主动向很多人发送电子邮件时,它就变成了垃圾邮件。 合法批量电子邮件的一个例子是,您在网站上使用双重选择加入表单创建电子邮件列表。访客必须点击确认链接才能订阅您的电子邮件列表。 时事通讯/营销电子邮件发件人提示 除了上述一般提示外,以下是一些针对时事通讯/营销电子邮件发件人的具体提示。 确保收件人允许你发送电子邮件。使用double opt-in验证订阅者的电子邮件地址。如果你不这样做,你很有可能会有电子邮件发送问题。你不应该从第三方购买电子邮件列表。 高跳出率(&gt;5%)可能会损害发件人的声誉。您可以使用Truemail或Abstract API等批量电子邮件地址验证工具从列表中删除无法发送的电子邮件地址。 如果更改邮件服务器IP地址,或使用新子域,则需要预热IP地址/子域。例如,第一天发送100封电子邮件,第二天发送500封电子邮件,第三天发送1000封电子邮件。不要立即向成千上万的人发送电子邮件。 发送收件人真正想要的电子邮件。 在邮件底部附上你的联系信息和邮寄地址。 尽可能对电子邮件进行个性化设置。例如,在邮件正文中包含收件人的名字,并根据订户的性别、年龄、兴趣、国家等对列表进行分段。 遵守CAN-SPAM法案 避免大型附件。 清理你的邮件列表。例如,删除过去60天内未打开您的电子邮件的电子邮件订户。这通常被称为电子邮件日落策略。未授权的订阅者不会为你赚钱,他们会损害你的域名声誉。 在发送电子邮件之前,请使用GlockApps测试您的电子邮件位置。 发送频率要一致。如果你在第一个月向你的订阅者发送电子邮件,但在接下来的6个月内停止发送电子邮件,那么你的订阅者不记得你了,邮箱提供商可能会将你的电子邮件放入垃圾邮件文件夹。 保持你的开放率高于20%,垃圾邮件率低于1%。你可以通过Gmail Postmaster工具查看垃圾邮件率。 如果你发送时事通讯/营销邮件,那么你的邮件很可能会出现在Gmail的促销标签中。进入主选项卡的一种方法是在电子邮件中只使用纯文本。 不要从电子邮件中删除“取消订阅列表”标题。如果您发送新闻稿,则需要“列表取消订阅”标题。它使用户可以轻松地从您的邮件列表中取消订阅。当一个人想要退订时,你不应该阻止他/她退订。 有时邮箱提供商会暂时停止接受您的新闻稿电子邮件。不要惊慌。他们只是想通过查看用户对你已经发送的电子邮件的行为来了解你是否在发送垃圾邮件。如果他们认定你不是垃圾邮件发送者,你的其他电子邮件将被接受。这种延迟可能长达24小时。 您的电子邮件不会放在所有收件人的收件箱中。其中一些可能会被放在垃圾邮件文件夹中。这取决于特定收件人如何与您以前的电子邮件互动。因此,与邮件列表中的每一位订户保持良好的关系非常重要。 小心使用电子邮件诅咒词,如减肥、赚钱等。一般来说,你不应该在电子邮件中使用它们,除非你已经建立了良好的域名声誉,并且之前与收件人有良好的互动关系。 不要在电子邮件中过度使用大写字母、粗体字母和突出显示。这些是垃圾邮件发送者用来吸引收件人注意的常用技巧。 不要发送大量电子邮件太快。一次发送1万封电子邮件会在各地引发警报。在我看来,默认的Postfix SMTP服务器交付速度太快,如果你发送电子邮件给10K订户。在Postfix配置文件中添加默认u destinationu rateu delay=2s和默认u destinationu recipientu limit=50,以稍微降低速度。当你有超过10K的电子邮件用户时,也可以考虑部署多个SMTP服务器,这样批量邮件活动可以在SMTP服务器上传播。 修复受损的域声誉可能很耗时,但要改善从未发送过电子邮件的新域或子域的声誉很容易。如果你在主域名上有很高的声誉,你不需要使用子域。如果你的域名声誉受损,你可以尝试使用一个新的子域作为发件人:地址来发送电子邮件。 SMTP速率限制 我们可以使用名为policyd rate limit的后缀策略守护进程。 sudo apt install policyd-rate-limit 编辑配置文件。 sudo nano /etc/policyd-rate-limit.yaml 找到下面几行。 limits: - [10, 60] # limit to 10 mails by minutes - [150, 86400] # limits to 150 mails by days 默认限制太过严格。我使用以下设置,因此我的Postfix SMTP服务器每小时最多可以发送20000封电子邮件。 limits: - [333, 60] # limit to 333 mails per minute 还可以找到下面两行。 limit_by_sender: False limit_by_ip: False 并将值更改为True。 limit_by_sender: True limit_by_ip: True 保存并关闭文件。然后编辑后缀主配置文件。 sudo nano /etc/postfix/main.cf 告诉Postfix使用以下设置的限速服务。check_policy_服务应该是第一个限制。 smtpd_recipient_restrictions = check_policy_service { unix:ratelimit/policy, default_action=DUNNO }, ... ... 保存并关闭文件。 sudo systemctl restart postfix policyd-rate-limit 收尾 我希望这些建议能帮助你摆脱垃圾邮件文件夹。和往常一样,如果你觉得这篇文章很有用,那么订阅我们的免费时事通讯以获得更多提示和窍门。当心?

    2022.03.24 浏览:979