玩转系统|利用HestiaCP自建NS解析及邮局并利用MailGun进行发信

前述

HestiaCP是一个VestaCP分叉来的产物,而同样作为VestaCP分叉来的myVesta也具有类似的功能。VestaCP本身作为一个社区的产区,其仅仅有一个商业插件需要每月付费5USD进行使用,因此为了达到完全开放使用的目的,这里选择使用HestiaCP进行构建。

准备

首先要准备的当然是一台公有云服务器,这里为了方便使用选择AWS提供的EC2服务器作为实现。
然后就是系统及硬件配置方面的选择了,与原版VestaCP不同,HestiaCP仅支持Deb系操作系统,因此无法使用RHEL系的操作系统进行安装。在硬件配置方面,建议使用1C1G以上配置的服务器进行构建,避免出现可用性方面的问题(如内存过低,建议启用SWAP)。
需要注意的是,由于我们会搭建NS解析和邮局,所以相关端口必须进行开放,具体端口及协议如图所示:

在网络安全组对应进行操作后,就可以开始来进行安装操作了。

安装

由于HestiaCP在安装时会默认占用admin用户,而EC2默认的登录用户即为此用户,因此会出现冲突的情况。我们需要先开启使用root用户进行登录,否则在安装完毕后这台机器便听天由命了。
EC2限制使用root用户登录的方式是在key文件中使用了自定义配置,因此只需要首先去前往该文件删除对应的字符即可。
打开/root/.ssh/authorized_keys,删除ssh-rsa开头前面的所有内容(清楚删除ssh-rsa及后面的任何内容)。
保存后重启sshd服务systemctl restart sshd,同时注意不要关闭现存的SSH连接,避免万一配置出错导致无法连接上的情况。新建一个SSH连接,尝试使用root账户替代原先的admin账户进行连接,此时一般就可以正常连接上了。
接下来开始HestiaCP面板的安装工作,此面板同时支持安装Nginx,Httpd,PHP(MutiVersion),MariaDB,PostgreSQL等组件的安装,因此实际使用下来方便,同时它自动集成了Let's Encrypt,可以快速且自动化地配置SSL证书。
前往官方文档页面查看对应的安装说明,或前往安装配置生成界面自行生成安装命令。
需要注意的是,由于本机已经具有admin用户,因此需要使用--force执行强制安装以继续,同时HestiaCP自身需要一个二级域名(HostName)进行解析,否则无法进行正常使用。
接下来进行下载、安装和等待工作:

wget https://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh
sudo bash hst-install.sh --apache yes --phpfpm yes --multiphp yes --vsftpd yes --proftpd yes --named yes --mysql yes --postgresql yes --exim yes --dovecot yes --sieve yes --clamav yes --spamassassin yes --iptables yes --fail2ban yes --quota yes --api yes --interactive yes --with-debs yes  --port 8083 --hostname hostname.ltd --email i@54yt.net --password password --lang zh-cn  --force

在提示是否开始安装时选择Y执行安装操作,然后等待大约十分钟以至安装完成,同时按照提示执行重启操作。

邮局

面板会自动为管理页面配置好SSL证书,打开https://hostname.ltd:8083,输入用户名admin和刚刚设置的密码password,登录后台管理界面。
由于生效时间的关系,我们首先来配置邮局。
HestiaCP限制使用管理员账户进行除全局管理外的操作,因此需要先建立一个具有用户权限的账号来进行后续的配置操作。
在“用户账户”中可以对账户做详细配置,直接新建一个User权限的账户即可,此处过程略去。
使用该账户登录管理后台,如果需要同时创建Web,NS和邮箱,可以直接在“Web服务中直接完成”,否则需要单独前往“邮箱服务”页面进行单独的配置操作。
在配置邮箱时,勾选“DKIM支持”,同时不要勾选“SMTP中继”。
 


待添加完成后,再进入编辑页面,完成SSL的配置操作,需要注意的是,在第一次保存完成后,还需要再次进入保存一次,SSL证书才会生效,具体原因不明。
然后点击"DNS配置"按钮,按照图示的对应值前往目前域名所使用的NS提供商处进行对应的配置操作。
在一切配置完成后,我们便可以正常进行收信操作了。但是由于AWS等公有云提供商一般都限制了发信操作,因此我们需要向他们发起申请,以便允许本地的发信操作,可以前往亚马逊申请界面进行对应操作。但是很遗憾的是亚马逊无情地拒绝了博主的申请,而正好Github学生包中提供了每月20K次的免费发信配额,因此这里使用MailGun配置Smarthost的方式进行配置。当然理论上你用SendGrid和Amazon SES之类的服务也同样可以。
打开Github Student Benefits页面,找到MailGun并且关联登录领取对应的权益,同时根据所需要用到的邮箱域名对应配置DNS信息并完成验证操作。
博主自己使用默认的postmaster用户发送信件,结果发现似乎无法使用自定义邮箱名称的方式进行发信,因此这里新增一个SMTP发信用户,名称为*
在“Domain Settings”中选择对应的域名,切换到“SMTP credentials”界面,选择右上角新建账户即可,待配置完成后及时复制生成的连接密码,以便后续使用。
前往SSH编辑exim4.conf.template文件,
begin authenticators后添加以下内容:

# Smart Host Sending
sendbysmarthosts:driver = plaintextpublic_name = LOGINhide client_send = : ${extract{user}{${lookup{$sender_address_domain}lsearch{/etc/exim4/exim_smarthosts}}}} : ${extract{pass}{${lookup{$sender_address_domain}lsearch{/etc/exim4/exim_smarthosts}}}

同时注释下面的一块public_name同样为LOGIN的内容,注意注释4-5行的代码块即可,后面的部分不用删除。
begin routers后添加以下内容:

# Smart Host Sending
sendbysmarthostsrouter:driver = manualroutedomains = ! +local_domains
# senders can be used to limit email addresses, for example: senders = user@domain1.com : *@domain2.com
# senders = user@domain1.comcondition =  "${if eq{${lookup{$sender_address_domain}partial-lsearch{/etc/exim4/exim_smarthosts}{$value}}}{}{false}{true}}"ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
# headers_add = "${perl{mailtrapheaders}}"transport = sendbysmarthoststransportroute_list = "* ${extract{smtp}{${lookup{$sender_address_domain}lsearch{/etc/exim4/exim_smarthosts}}}}::${extract{port}{${lookup{$sender_address_domain}lsearch{/etc/exim4/exim_smarthosts}}}} byname"
# host_find_failed = defer
# no_more

begin transports后添加以下内容:

# Smart Host Sending
sendbysmarthoststransport:driver = smtpport = ${extract{port}{${lookup{$sender_address_domain}lsearch{/etc/exim4/exim_smarthosts}}}}hosts_require_auth = $host_addresshosts_require_tls = $host_address

同时以Root用户创建/etc/exim4/exim_smarthost文件,写入以下内容:

# "domain" - domain name used in index of the line
# "user" - user (or ID) used in smarthost's SMTP
# "pass" - password (or API secret, or API key, etc.) used for the SMTP user in smarthost
# "smtp" - SMTP server address of smarthost
# "port" - port used in Smarthost (586,25 or another)# sending by MailJet
# $domain: domain=$domain user=$MAILJET_smtp_user pass=$MAILJET_api_password smtp=in-v3.mailjet.com port=587
#domain1.com: domain=domain1.com user=xxxxxx pass=xxxxxx smtp=in-v3.mailjet.com port=2525# sending by MailGun
# $domain: domain=$domain user=postmaster@$domain pass=$MailGun_default_password smtp=smtp.eu.mailgun.org port=587
leter.dev: domain=leter.dev user=*@leter.dev pass=xxxxxx smtp=smtp.mailgun.org port=587
#domain2.com: domain=domain2.com user=postmaster@domain2.com pass=xxxxxx smtp=smtp.eu.mailgun.org port=587# sending by SendPulse
# $domain: domain=$domain user=$SENDPULSE_smtp_user pass=$SENDPULSE_api_password smtp=smtp-pulse.com port=587# sending by SendGrid
# $domain: domain=$domain user=$SENDGRID_smtp_user pass=$SENDGRID_api_password smtp=smtp.sendgrid.net port=587

对应的域名和用户名密码对应做修改即可,然后重启EXIM服务:

systemctl restart exim4

待重启完成后,便可以正常使用搭建好的邮局来进行收发信操作,同时也可以避免自建发信带来的黑名单问题。

NS

如果在配置Web时同时勾选了域名解析,那么不需要进行配置操作,否则需要在“DNS服务”中进行对应的配置操作,此处略去。
首先将刚刚在域名所使用的NS提供商处的所有解析添加入此处,然后添加对应的ns1和ns2记录A解析到目前服务器所对应的IP地址。
为了提高可靠性,建议使用多台服务器作为NS承载,同时需要记得先行进行配置。
待配置完成后,前往域名注册商处,添加“Glue record”或“胶水记录”,不同域名注册商名称使用可能有所不同。
添加ns1和ns2胶水解析到服务器对应的域名,同时在NS配置处将原先的记录修改为我们自己的NS,例如:

ns1.leter.dev
ns2.leter.dev

等待NS记录生效(大约2-12h)后,便可以正常使用。如果出现等待过长时间依然无法解析,请检查服务器使用对ns域名进行了A解析和NS解析,或解析服务是否正常工作。
特别注意,注意采用了2048位DKIM可能造成NS无法正常工作! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小电流MOSFET 选型分析数据,可应用于电子烟,电动工具,智能穿戴等产品上

小电流双N,D-N通道MOSFET,电压60V-100V左右 电流300mA-500MA,采用封装形式多样。具有低导通电阻,可快速切换速度,易于设计的驱动电路也易于并联,ESD保护,低电压驱动使该器件非常适合便携式设备…

通俗易懂的案例+代码解释AOP 切面编程

目录 1. 理解AOP2 Before2.1 controller层2.2 service层2.3 自定义注解2.4 切面 advice 3 After4 Around spring的三大核心:IOC控制反转、DI依赖注入、AOP面向切面编程 刚开始接触springboot项目,前两个使用的多,亲自使用AOP的机会并不多&…

【学习笔记】python仅拷贝list的值,引出浅拷贝与深拷贝

一、python 仅拷贝list的值(来源于gpt) 在 Python 中,可以使用切片或 copy() 方法来仅拷贝列表的值。 1、使用切片 a [1, 2, 3, 4, 5] b a[:] # 通过切片来拷贝 a 的值 在上面的代码中,我们使用切片来拷贝列表 a 的值&#xff…

长城之上的无人机:文化遗产的守护者

长城之上的无人机:文化遗产的守护者 在八达岭长城景区,两架无人机分别部署在了长城的南、北楼两点。根据当前的保护焦点和需求,制定了5条无人机综合巡查航线,以确保长城景区的所有开放区域都能得到有效监管。每天,无人…

【LeetCode】2703. 返回传递的参数的长度

返回传递的参数的长度 题目题解 题目 请你编写一个函数 argumentsLength,返回传递给该函数的参数数量。 示例 1: 输入:args [5] 输出:1 解释: argumentsLength(5); // 1只传递了一个值给函数,因此它应返…

zabbix、netdata和glances,做最简单的系统资源监控

软件需要显示服务器的资源信息(CPU、内存、网络、硬盘等),但是软件是在Docker容器中运行。 目前方案 通过ssh在主机上远程运行ps、free等指令,获取相应的信息。这种方案需要代码配置主机的IP,以及用户名和密码&#…

干爆ChatGPT,谷歌发布新大模型:Gemini

我是卢松松,点点上面的头像,欢迎关注我哦! 谷歌昨天又发布了一个新的大模型,叫Gemini(双子座时代)。打开Google AI 就能看到。 据说非常强,然后是一大堆夸奖,大概是本月中旬的时候正式推出。标题明晃晃写…

Java UDP 多人聊天室简易版

服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []args){try{…

Rask AI引领革新,推出多扬声器口型同步技术,打造本地化内容新纪元

“ Rask AI是一个先进的AI驱动视频和音频本地化工具&#xff0c;旨在帮助内容创作者和公司快速、高效地将他们的视频转换成60多种语言。通过不断创新和改进产品功能&#xff0c;Rask AI正塑造着未来媒体产业的发展趋势。 ” 在多语种内容创作的新时代&#xff0c;Rask AI不断突…

Day53力扣打卡

打卡记录 重新规划路线&#xff08;dfs&#xff09; 链接 class Solution:def dfs(self, x: int, parent: int, e: List[List[List[int]]]) -> int:res 0for edge in e[x]:if edge[0] parent:continueres edge[1] self.dfs(edge[0], x, e)return resdef minReorder(se…

基于AWS Serverless的Glue服务进行ETL(提取、转换和加载)数据分析(三)——serverless数据分析

3 serverless数据分析 大纲 3 serverless数据分析3.1 创建Lambda3.2 创建API Gateway3.3 结果3.4 总结 3.1 创建Lambda 在Lambda中&#xff0c;我们将使用python3作为代码语言。 步骤图例1、入口2、创建&#xff08;我们选择使用python3.7&#xff09;3、IAM权限&#xff08;…

第二十一章——网络通信总结

网络程序设计基础 局域网与互联网 为了实现两台计算机的通信&#xff0c;必须用一个网络线路连接两台计算机。如下图所示 网络协议 1.IP协议 IP是Internet Protocol的简称&#xff0c;是一种网络协议。Internet 网络采用的协议是TCP/IP协议&#xff0c;其全称是Transmission…

展望2024年供应链安全

2023年是开展供应链安全&#xff0c;尤其是开源治理如火如荼的一年&#xff0c;开源治理是供应链安全最重要的一个方面&#xff0c;所以我们从开源治理谈起。我们先回顾一下2023的开源治理情况。我们从信通院《2023年中国企业开源治理全景观察》发布的信息。信通院调研了来自七…

渐进式web全栈blazor web

渐进式 vue是渐进式web前端框架&#xff0c;所谓的渐进式就是你不用一开始就整个项目全部使用vue&#xff0c;因为开始你可能并不熟悉vue&#xff0c;而是开始只使用vue的些简单功能&#xff0c;慢慢用它更复杂更好的功能&#xff0c;最终项目可能完全使用vue。 渐进式blazor…

1+x网络系统建设与运维(中级)-练习题4

一.设备命名 LSW1 <Huawei>sys [Huawei]sysn LSW1 [LSW1]un in en 同理可得&#xff0c;给所有设备如以上命令一样配置 二.VLAN LSW1 [LSW1]vlan ba 1 10 20 100 [LSW1]int g0/0/1 [LSW1-GigabitEthernet0/0/1]port link-type trunk [LSW1-GigabitEthernet0/0/1]port tru…

K线图详解

K线图是一种常用于股票、外汇和数字货币等金融市场的图表形式&#xff0c;它提供了价格走势的可视化展示。每根K线代表了一个特定时间周期内的价格变动情况。 每根K线由四个关键价格构成&#xff1a;开盘价&#xff08;Open&#xff09;、收盘价&#xff08;Close&#xff09;…

Redis 环境搭建

文章目录 第1关&#xff1a;Redis 环境搭建 第1关&#xff1a;Redis 环境搭建 编程要求 根据上述相关知识&#xff0c;在右侧命令行中完成 Redis 集群的部署与安装。 安装完成后&#xff0c;使用 echo “cluster nodes”|redis-cli -p 7001 -c >/root/test.txt 将结果保存。…

@德人合科技 | 数据透明加密防泄密系统\文件文档加密\设计图纸加密|源代码加密防泄密软件系统,——防止内部办公终端核心文件数据/资料外泄!

一款专业的数据防泄密管理系统&#xff0c;它采用了多种加密模式&#xff0c;包括透明加密、半透明加密和落地加密等&#xff0c;可以有效地保护企业的核心数据安全。 PC端访问地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee …

el-table操作栏按钮过多 增加展开/收起功能

是的 如图所示有那么一条数据 列表操作栏的按钮七八个 小屏笔记本啥数据项也别看了 就剩下个固定列大刺刺的占着整个页面 解决方法&#xff1a; <el-table-column :width"tableToggle ? 600 : 300" label"操作栏" align"center" header-ali…

idea安装包下载

idea安装教程 IDEA安装包链接&#xff1a;https://pan.baidu.com/s/15dEPF2hV3WPiFWMwGOsKWQ 提取码&#xff1a;kxl7 有激活部署的文档说明&#xff0c;下载自己看吧&#xff0c; 链接&#xff1a;https://pan.baidu.com/s/11yh8cz0R86Ngl7EJN8_5FA 提取码&#xff1a;mdg6