淘宝客 网站 备案,深圳个性化网站建设公司,高端建站模版,万户做网站怎么样文章目录 Log 一、域名连接到泰坦#xff08;Titan#xff09;电子邮件二、NameSilo Hosting 避坑三、Ubuntu 搭建邮件服务器1. 环境准备2. 域名配置3. 配置 Postfix 和 Dovecot① 安装 Nginx② 安装 Tomcat③ 申请 SSL 证书#xff08;Lets Encrypt#xff09;④ 配置 pos… 文章目录 Log 一、域名连接到泰坦Titan电子邮件二、NameSilo Hosting 避坑三、Ubuntu 搭建邮件服务器1. 环境准备2. 域名配置3. 配置 Postfix 和 Dovecot① 安装 Nginx② 安装 Tomcat③ 申请 SSL 证书Lets Encrypt④ 配置 postfix⑤ 配置 Dovecot 4. 配置 SpamAssassin 和 OpenDKIM① 配置 SpamAssassin② 配置 OpenDKIM 参考教程总结 Log
2024.01.13啊2024年了啊稍微记录下吧。查了一圈似乎没有相关的教程那咱就自己摸索着写一篇吧2024.01.15有事鸽了一天今天继续乐了不支持SSH退款了2024.01.16来了2024.01.17继续搞教程有点老了各种版本更新、服务停止支持跟扒皮一样一层层去找下一步的解决方案过程倒是挺有趣但人也有点麻Let’s Encrypt的证书申请完了发现网站进不去了查解决方案的时候发现之前网站配置CDN的时候用的Cloudflare提供自签证书。。。2024.01.18接着搞配置完了客户端连接测试 SSL连接错误还得再测测从头查查吧2024.01.25终于有眉目了服务器厂家没开放465端口联系下然后加个 TXT 记录防止邮件滥用。问题解决了就发布叭并没有被认为是垃圾邮件发出去了收不到搞定了。 前置条件注册Namesilo账号并购买一个域名和一个服务器 如果要买 NameSilo 的服务器请先看 章节二
一、域名连接到泰坦Titan电子邮件
参考教程 Setup Titan MX and TXT records for NameSilo登录 N a m e S i l o \rm NameSilo NameSilo 账户进入域名管理页面随后点击管理此域的 DNS 选项。 如果是刚入手的域名需要删除原有的记录然后根据自己的服务器的IP添加以下两条记录
HostnameTypeTTLA3600wwwA3600
随后设置 MX 记录和 TXT 记录用于验证域名所有权并激活电子邮件服务添加以下两条记录
HostnameTypeTarget HostnameTTLDistanceMXmx2.titan.email360020
HostnameTypeTextTTLTXT/SPFvspf1 include:spf.titan.email ~all3600
MX记录邮件交换记录 Mail Exchange Record域名系统DNS中的一种资源记录类型用于指定负责处理发往收件人域名的邮件服务器。SPF记录发信者策略架构Sender Policy Framework为了防范垃圾邮件而提出来的一种DNS记录类型用于登记某个域名拥有的用来外发邮件的所有IP地址。最终结果如下 进入添加管理邮件页面需要购买 NameSilo 的 Hosting 服务第一次进入需要设置备用邮箱并连接到 T i t a n E m a i l \rm Titan\ \ Email Titan Email 等待域名解析生效后24小时以内再次验证 连接成功后就可以添加邮箱了
二、NameSilo Hosting 避坑 搞了一下午最后问客服发现在 NameSilo 上买的服务器不支持 SSH只能在 cPanel 里点点点不能用 terminal 敲命令行还玩什么呢。 单纯写博客用来记录的话倒是可以试下直接用网站模板拖拽修改排版倒是挺不错的如果涉及到比较复杂的后台逻辑想要直接部署一个项目运行的话就不推荐了 取消 Hosting 服务退款以后和 Titan 相关的邮箱都会失效退款到账时间有点小长还扣了点手续费。
三、Ubuntu 搭建邮件服务器
绕回来还是要自己搞那就找点教程实操一遍记录下过程和遇到的问题留以不时之需
1. 环境准备
版本 Ubuntu 22.04 LTS安装 MySQLsudo apt install mysql-server 命令执行完后 apt 已经默认开启服务因此不需要开启服务以及设置开机自启动 相关命令 系统视图 查看状态 service mysql status启动/停止/重启服务 sudo service mysql start/stop/restart查看密码 sudo cat /etc/mysql/debian.cnf进入 MySQL sudo mysql MySQL 视图 重置 root 密码 ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY new-password;FLUSH PRIVILEGES; 远程登录 新建 root 用户 create user root% identified by complex-reomteLogin-password;用户授权 GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION;刷新 FLUSH PRIVILEGES; 报错 停止服务 sudo systemctl stop mysql编辑文件 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 注释该配置项 bind-address 127.0.0.1 开启服务 sudo service mysql start
2. 域名配置
在已有的两条 A 类型解析记录如下的基础上进行配置
HostnameTypeTTLA3600wwwA3600
添加三个子域名 A 记录
HostnameTypeTTLmxA3600smtpA3600pop3A3600
添加一个 MX 记录
HostnameTypeTarget HostnameTTLDistanceMXmx.XXX.xxx360020
添加一个 SPF 记录
HostnameTypeTextTTLTXTvspf1 mx ~all3600
添加一个 DMARC 记录
HostnameTypeTextTTL_dmarcTXTvDMARC1; preject; fo1; ruamailto:a***XXX.xxx3600
3. 配置 Postfix 和 Dovecot
安装 apt updateapt install postfix postfix-mysql dovecot-core dovecot-pop3d dovecot-imapd dovecot-lmtpd dovecot-mysql 数据库配置 创建三个数据库表 virtual_domains、virtual_users、virtual_aliases
CREATE TABLE virtual_domains (id INT NOT NULL AUTO_INCREMENT,name VARCHAR(50) NOT NULL,PRIMARY KEY (id)
) ENGINEInnoDB DEFAULT CHARSETutf8;CREATE TABLE virtual_users (id INT NOT NULL AUTO_INCREMENT,domain_id INT NOT NULL,password VARCHAR(106) NOT NULL,email VARCHAR(120) NOT NULL,PRIMARY KEY (id),UNIQUE KEY email (email),FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINEInnoDB DEFAULT CHARSETutf8;CREATE TABLE virtual_aliases (id int(11) NOT NULL auto_increment,domain_id int(11) NOT NULL,source varchar(100) NOT NULL,destination varchar(100) NOT NULL,PRIMARY KEY (id),FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
) ENGINEInnoDB DEFAULT CHARSETutf8;插入数据 域名 insert into virtual_domains values(1,XXX.xxx)用户 insert into virtual_users values(1,域名序号,md5(密码),userXXX.xxx);别名 insert into virtual_aliases values(1,1,aliaseXXX.xxx,userXXX.xxx) aliaseXXX.xxx 需要先存在于 virtual_users 中virtual_aliases 中的转发记录才能生效
① 安装 Nginx
安装Nginx 弹出 “Daemons using outdated libraries”参考解决方案。 报错 “./configure: error: the HTTP gzip module requires the zlib library.”解决sudo apt-get install zlib1g-dev访问网址显示下图界面为安装成功 备份配置文件 cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
② 安装 Tomcat
安装Java环境 sudo apt install openjdk-17-jre-headless安装Tomcatsudo wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.1.18/bin/apache-tomcat-10.1.18.tar.gz解压Tomcatsudo tar -xzvf apache-tomcat-10.1.18.tar.gz -C /usr/local/ -C指定解压⽬录解决当前⽬录下找不到 /usr/local 报错 启动Tomcat cd /usr/local/apache-tomcat-10.1.18/bin./startup.sh 域名:8080访问进入下图界面为安装成功
③ 申请 SSL 证书Let’s Encrypt 安装 snap sudo apt updatesudo apt install snapdsnap version 通过 snap 安装 certbot sudo snap install --classic certbot 创建的软链接便于 certbot 命令的使用ln -s /snap/bin/certbot /usr/bin/certbot 获取证书Nginx 方式 certbot certonly --nginx --email 1***qq.com -d ***.top -d www.***.top 报错Error while running nginx -c /etc/nginx/nginx.conf -t解决 查看 Nginx 配置路径 sudo nginx -t自定义路径certbot --nginx --nginx-server-root/usr/local/nginx/conf设定完路径就可以根据提示一步步注册了 报错Could not automatically find a matching server block for XXX.xxx. Set the server_name directive to use the Nginx installer.解决修改 Nginx 配置文件将 server_name 改为自己的两个域名 重新安装还是报上面的路径错误用同样的命令解决随后按照提示一步步就安装成功了 更新证书: certbot renew 续订并重启 Nginxcertbot renew --renew-hook service nginx restart 如果未到期会提示证书尚未到期更新也不会重启 Nginx 自动续订证书 30 4 * * 1 certbot renew --renew-hook service nginx restart --quiet /dev/null 21 翻译每周一的凌晨4点30分使用Certbot来续订证书并在完成后重启Nginx服务。所有的输出和错误信息都会被重定向到/dev/null并且命令会在后台运行。设置系统为北京时间 sudo timedatectl set-timezone Asia/Shanghai 安装完证书访问网站报错重定向次数过多解决方法很简单只需要将 Cloudflare 中的加密模式由灵活默认模式修改为完全即可。详细原因可以参考这篇文章的 三Cloudflare。
④ 配置 postfix 官网文档Postfix文档 备份 postfix 的默认配置文件 cp /etc/postfix/main.cf /etc/postfix/main.cf.bak 编辑 main.cf vim /etc/postfix/main.cf注释掉下面这部分代码 添加自己的配置路径里的域名换成自己的 smtpd_tls_auth_only yes 注释掉表示允许 tls 的 587 端口以及不需要 ssl 验证的 25 端口用来解决使用 Foxmail 的时候每次登陆都会弹出一个 “安全证书”的问题。
# 使用自己的ssl证书
smtpd_tls_cert_file/etc/letsencrypt/live/000.top/fullchain.pem
smtpd_tls_key_file/etc/letsencrypt/live/000.top/privkey.pem
smtpd_use_tlsyes
#smtpd_tls_auth_only yessmtp_tls_cert_file/etc/letsencrypt/live/000.top/fullchain.pem
smtp_tls_key_file/etc/letsencrypt/live/000.top/privkey.pem
smtp_use_tlsyessmtpd_tls_CApath/etc/letsencrypt/live/000.top
smtpd_tls_security_levelmay
smtpd_tls_session_cache_database btree:${data_directory}/smtpd_scachesmtp_tls_CApath/etc/letsencrypt/live/000.top
smtp_tls_security_levelmay
smtp_tls_session_cache_database btree:${data_directory}/smtp_scache# 使用dovecot来做身份认证
smtpd_sasl_type dovecot
smtpd_sasl_path private/auth
smtpd_sasl_auth_enable yes
smtpd_recipient_restrictions permit_sasl_authenticated permit_mynetworks reject_unauth_destination
smtpd_relay_restrictions permit_mynetworks permit_sasl_authenticated defer_unauth_destination域名相关的基本配置其他的一般用默认的就行
myhostname 000.top
myorigin $myhostname
mydomain $myhostname其他配置
# 确保将邮件投递给 mysql 表中列出的虚拟域
virtual_transport lmtp:unix:private/dovecot-lmtp
# Postfix 配置虚拟域、用户和别名
virtual_mailbox_domains mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps mysql:/etc/postfix/mysql-virtual-alias-maps.cf创建上面配置里的三个配置文件并进行配置 mysql-virtual-mailbox-domains.cf vim /etc/postfix/mysql-virtual-mailbox-domains.cfuser root
password 123456
hosts 127.0.0.1:3306
dbname mailserver
query SELECT 1 FROM virtual_domains WHERE name%smysql-virtual-mailbox-maps.cf vim /etc/postfix/mysql-virtual-mailbox-maps.cfuser root
password 123456
hosts 127.0.0.1:3306
dbname mailserver
query SELECT 1 FROM virtual_users WHERE email%smysql-virtual-alias-maps.cf vim /etc/postfix/mysql-virtual-alias-maps.cfuser root
password 123456
hosts 127.0.0.1:3306
dbname mailserver
query SELECT destination FROM virtual_aliases WHERE source%s重启服务 systemctl restart postfix测试是否配置成功 postmap -q 000.top mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf 成功则输出 1postmap -q user000.top mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf 成功则输出 1postmap -q aliase000.top mysql:/etc/postfix/mysql-virtual-alias-maps.cf 成功则输出 user000.top 配置 master.cf vim /etc/postfix/master.cf取消下图所示的注释以开启 587 端口和 465 端口的服务
⑤ 配置 Dovecot 配置 dovecot.conf vim /etc/dovecot/dovecot.conf确保启用 !include conf.d/*.conf加入配置启用协议 protocols imap lmtp pop3 配置 10-mail.conf vim /etc/dovecot/conf.d/10-mail.conf确保存在配置该配置确保将邮件存放目录设置在 /var/mail 中 mail_location maildir:/var/mail/vhosts/%d/%nmail_privileged_group mail 创建用户来作为 /var/mail 路径的所属人 groupadd -g 5000 vmailuseradd -g vmail -u 5000 vmail -d /var/mailchown -R vmail:vmail /var/mail 配置 10-auth.conf vim /etc/dovecot/conf.d/10-auth.conf确保配置为 disable_plaintext_auth yes 表示拒绝明文密码登录如果客户端登不上可以尝试把这里改成 noauth_mechanisms plain login 禁用系统用户登陆并开启 mysql 支持第一个注释掉开启第二个 配置 auth-sql.conf.ext vim /etc/dovecot/conf.d/auth-sql.conf.ext修改为以下内容passdb {driver sqlargs /etc/dovecot/dovecot-sql.conf.ext
}
userdb {driver staticargs uidvmail gidvmail home/var/mail/vhosts/%d/%n
}配置 dovecot-sql.conf.ext vim /etc/dovecot/dovecot-sql.conf.ext确保添加如下配置 driver mysqlconnect host127.0.0.1 port3306 dbnamemailserver userroot password123456default_pass_scheme MD5password_query SELECT email as user, password FROM virtual_users WHERE email%u; 将 /etc/dovecot 的拥有者改为 vmail:dovecot chown -R vmail:dovecot /etc/dovecotchmod -R o-rwx /etc/dovecot 配置 10-master.conf vim /etc/dovecot/conf.d/10-master.conf将 imap-login 、 pop3-login 下第一个的 port 设置为 0以禁用非 ssl 加密的 imap 和 pop3 协议将 lmtp 、 auth 、 auth-worker 中的内容修改为以下对应内容service lmtp {unix_listener /var/spool/postfix/private/dovecot-lmtp {mode 0600user postfixgroup postfix}# Create inet listener only if you cant use the above UNIX socket#inet_listener lmtp {# Avoid making LMTP visible for the entire internet#address #port #}
}service auth {unix_listener /var/spool/postfix/private/auth {mode 0666user postfixgroup postfix}unix_listener auth-userdb {mode 0600user vmail#group }user dovecot
}service auth-worker {# Auth worker process is run as root by default, so that it can access# /etc/shadow. If this isnt necessary, the user should be changed to# $default_internal_user.user vmail
}配置 10-ssl.conf 以开启 ssl 认证 vim /etc/dovecot/conf.d/10-ssl.conf找到并修改为ssl required required 必须要有 sslyes 开启 ssl 也允许非 ssl 设置 ssl 证书路径 ssl_cert /etc/letsencrypt/live/000.top/fullchain.pemssl_key /etc/letsencrypt/live/000.top/privkey.pem 查看当前 Dovecot 配置 dovecot -n 配置完成重启后可以使用 Foxmail 连接了 service postfix restartservice dovecot restart 登录失败到 /var/log 查看日志 终于找到问题了记得看看自己的主机厂商有没有开启 465 等端口。
4. 配置 SpamAssassin 和 OpenDKIM
登录上以后发送邮件收不到试了下这个网站每天免费测试三次Newsletters spam test by mail-tester.com 难绷还得再搞搞按照这里面的一条条改吧
① 配置 SpamAssassin
安装 sudo apt-get install spamassassin spamc添加用户 sudo adduser spamd --disabled-login 查看用户详细信息 cat /etc/passwd查看用户仅用户名 cat /etc/passwd | cut -d: -f1 配置 spamassassin vim /etc/default/spamassassin确保配置ENABLED1
SAHOME/var/log/spamassassin/
OPTIONS--create-prefs --max-children 5 --username spamd --helper-home-dir /home/spamd/ -s /home/spamd/spamd.log
PIDFILE/var/run/spamd.pid
CRON1配置 local.cf用于添加规则 vim /etc/spamassassin/local.cf确保开启配置rewrite_header Subject ***** SPAM _SCORE_ *****
required_score 5.0
use_bayes 1
bayes_auto_learn 1配置 master.cf vim /etc/postfix/master.cf添加如下配置至如图所示 -o content_filterspamassassin
spamassassin unix - n n - - pipe
userspamd argv/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}确保 smtp / smtps / submission 下均添加如下参数 -o content_filterspamassassin 重新启动 Postfix 和 SpamAssassin sudo service postfix restartsudo service spamassassin restart
② 配置 OpenDKIM
安装 sudo apt install opendkim opendkim-tools配置 opendkim.conf vim /etc/opendkim.conf添加以下配置域名改成自己的Domain 000.top
KeyFile /etc/dkimkeys/dkim.key
Selector dkim
SOCKET inet:8891localhost配置 opendkim vim /etc/default/opendkim添加配置 SOCKETinet:8891localhost 生成 DKIM 密钥对DKIM 域名密钥识别邮件标准DomainKeys Identified Mail电子邮件验证标准 执行命令域名换成自己的生成的 dkim.private 和 dkim.txt 在根目录下 sudo opendkim-genkey -t -s dkim -d 000.top 移动 dkim.private sudo mv dkim.private /etc/dkimkeys/ 切换路径并更改所有者 cd /etc/dkimkeys/sudo chown opendkim:opendkim dkim.private 修改文件名不然重启时会报错 mv dkim.private dkim.key 配置 main.cf Postfix vim /etc/postfix/main.cf添加如下配置#DKIM
smtpd_milters inet:localhost:8891
non_smtpd_milters inet:localhost:8891
milter_protocol 2
milter_default_action accept重启服务 sudo service opendkim restartsudo service postfix restart 将根目录之前生成的 dkim.txt 中括号中的内容去除双引号和换行作为 TXT 记录添加到域名中
HostnameTypeTextdkim._domainkeyTXTvDKIM1; hsha256; krsa; ty;p…
都弄完以后又测了一遍看起来效果还不是很好 (T——T)不过往QQ发的邮件已经可以被收到了
参考教程
ubuntu20 安装和配置mysql8.0.23Ubuntu用PostfixDovecot搭建优秀的邮件服务器申请免费ssl证书Ubuntu免费ssl证书Let’s Encrypt配置Ubuntu Nginx 安装与基本配置在ubuntu上使用git克隆github上的项目如何处理ubuntu22.04LTS安装过程中出现“Daemons using outdated libraries”提示【Tomcat】ubuntu系统安装Tomcat全民https时代Let’s Encrypt免费SSL证书的申请及使用Tomcat版certbot-auto不再支持所有的操作系统,新的ssl证书方法Let’s Encrypt:Your system is not supported by certbot-auto anymore解决方法证书更新Ubuntu中snap包的安装删除更新使用入门教程https免费证书(certbot)访问后台出现重定向次数过多该怎么办-建站需知关于iredmail邮箱系统不使用ssl校验的配置Ubuntu下为postfix配置DKIMHow to Setup SpamAssassin With Postfix On Ubuntu 16.04
官网以及官方文档
Postfix主页德语Postfix文档Postfix TLS 支持Postfix基本配置 总结 本文记录了如何在一台 Ubuntu 服务器上搭建邮件服务器主要是安装和配置 Postfix 和 Dovecot以及 SpamAssassin 和 OpenDKIM 的安装和配置。同时也介绍了如何申请 SSL 证书以及其他服务的相关配置。