你知道如何批量创建一批邮箱吗?

简介: 前言:哈喽,我是树酱。文章的源头,是因为在一次交谈中,朋友提到一个需求。需要一批邮箱去做一些"事情",具体是干啥事,留点悬念。如果手动去注册邮箱,只需要解决接收邮件问题。不仅费力而且现在包括像@163等邮箱都还需要手机验证。手动不行,那我们就自己"造"邮箱。一开始觉得挺复杂,毕竟作为一名前端工程师,这个“需求”已经超纲了。问题不大莫慌,看完这篇你就可以打造自己的域名邮箱了

微信截图_20220514230156.png


前言:哈喽,我是树酱。文章的源头,是因为在一次交谈中,朋友提到一个需求。需要一批邮箱去做一些"事情",具体是干啥事,留点悬念。如果手动去注册邮箱,只需要解决接收邮件问题。不仅费力而且现在包括像@163等邮箱都还需要手机验证。手动不行,那我们就自己"造"邮箱。一开始觉得挺复杂,毕竟作为一名前端工程师,这个“需求”已经超纲了。问题不大莫慌,看完这篇你就可以打造自己的域名邮箱了


1.前期准备


搭建邮件服务器需要一些“基础建设”,包括如下


  • 一台服务器 推荐centos
  • 一个域名


1.1 配置细节


邮件服务器是通过SMTP协议进行通信,为了让服务器能够成功接收邮件,我们需要打开25这个端口,并允许访问25端口。同时如果你需要使用像类似foxmail这种客户端接发收邮件,还需要支持POP3协议,需要打开110端口。换句话说为了保证邮件服务的正常使用,需要开启25和110这两个端口


关于 POP3协议(Post Office Protocol 3):协议主要用于支持使用客户端远程管理在服务器上的电子邮件,将电子邮件存储到本地主机


下图是阿里云服务器配置安全策略组的规则,在其中加入一条访问规则


微信截图_20220514230203.png


接下来是域名,需要配置域名解析,配置主机记录


如下图是域名的解析配置,主要包括几个记录数值


  • MX类:增加 MX 记录,类型选择 MX记录,值可以填写主机名,也可以填写你的公网ip地址也可以是mail.example.com。如果配置的是域名,还需要新增一条A类型的记录,主机记录定义为:mail,具体看下图
  • A类:该配置主要用来支持客户端接收邮件(比如:foxmail)分别添加smtp、imap、pop等配置,记录值为 ip


配置完如下图所示,可以在列表中看到配置好的,


微信截图_20220514230211.png


2 服务器安装


2.1 Postfix


关于 postfix:Postfix 是实现 SMTP 协议的软件,也叫做邮件发送服务器,负责对邮件进行转发,具体的转发规则,就需要我们对postfix的配置进行修改


我使用的是阿里云的服务器,首先我们安装邮件服务`postfix'


  • 安装


yum install postfix // 服务器安装 


  • 配置


安装成功之后,修改配置,通过vi /etc/postfix/main.cf 命令行修改以下配置


myhostname =  email.example.com //  设置系统的主机名
mydomain = example.com  //  设置域名(我们将让此处设置将成为E-mail地址“@”后面的部分)
myorigin = $mydomain  //  将发信地址“@”后面的部分设置为域名(非系统主机名)
inet_interfaces = all  //  接受来自所有网络的请求
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain  //  指定发给本地邮件的域名
home_mailbox = Maildir/  // 指定用户邮箱目录
# 规定邮件最大尺寸为10M
message_size_limit = 10485760
# 规定收件箱最大容量为1G
mailbox_size_limit = 1073741824
# SMTP认证
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject


下图是postfix中主要的参数


微信截图_20220514230223.png


  • 启动


配置完postfix的,启动服务


postfix check   // 检查配置文件是否正确
systemctl start postfix  //开启postfix服务
systemctl enable postfix //设置postfix服务开机启动


完成postfix的配置,接下来我们还需要安装dovecot


2.2 Dovecot


关于 Dovecot:是一款能够为Linux系统提供IMAP和POP3电子邮件服务的开源服务程序,安全性极高,配置简单,执行速度快,而且占用的服务器硬件资源也较少。上文提到POP3/IMAP是从邮件服务器中读取邮件时使用的协议


  • 安装


yum install dovecot // 服务器安装 


  • 配置


安装成功之后,修改配置,通过vi /etc/dovecot/dovecot.conf 命令行修改以下配置


protocols = imap pop3 lmtp listen = *, 
#新添加以下配置 #
!include conf.d/10-auth.conf 
ssl = no 
disable_plaintext_auth = no 
mail_location = maildir:~/Maildir


  • 启动


systemctl start dovecot   //开启dovecot服务
systemctl enable dovecot   //置dovecot服务开机启动


完成以上两个服务的配置,你离成功就近一步了!


啊乐同学:postfix与dovecot这两个其实有什么区别?


答:postfix主要做发送邮件使用,而dovecot主要做接收使用,两者结合才能完成一个完整的邮件服务


3 新建用户


搭建完邮件服务器之后,我们需要创建用户来完成 邮件的接收和发送


  • 如何创建用户


useradd tree/ 新增用户
passwd tree   // 设置用户密码


啊乐同学:如果这样我创建100个邮箱用户,岂不是很浪费时间?


莫慌,我们写个shell脚本,批量创建就可以解决你这个问题


创建一个文件,createUser.sh 内容如下


/bash
#user.txt 为需要创建的用户的文件passwd.txt为随机生成密码
USER_FILE=user.txt
pass_FILE=passwd.txt
for user in `cat user.txt`
do
id $user &> /dev/null  #查看用户是否存在
if [ $? -eq 0 ]
then
echo "The $user already exist"
else
useradd $user    #创建用户
if [ $? -eq 0 ]
then
echo "$user create sucessful"
PASSWD=$(echo $RANDOM |md5sum |cut -c 1-8)    #随机生成数字
echo $PASSWD |passwd --stdin $user &>/dev/null   #修改用户密码
echo -e "$user\'$PASSWD'\'$(date +%Y%m%d)'" >> $pass_FILE   #将用户,密码,日期输入到文件中
fi
fi
done


前提需要建立一个user.txt 来维护我们要创建的用户,比如


tree
shujiang


脚本会根据我们列出的用户名去批量生成用户


4.测试邮箱


搭建好服务以及完成用户的创建,接下来就是测试邮件是否正常接收环节了


我使用的是foxmail来做验证


微信截图_20220514230236.png


这个用户名就是我们上一节创建的用户名称,完成创建之后,我们通过发送邮件来测试是否能够成功接收


微信截图_20220514230245.png


还有一种方式就是借助telnet去做测试,这里不做大篇幅介绍。最原始的方式


阿乐同学:如果我每个新建的邮箱用户,我都得去配置一个客户端去接收邮寄,岂不是很费劲,有没有其他方式?


有的,换个角度思考,你可以通过配置邮件转发,将所有邮件接收都转发到某一个用户的邮箱中去,你就可以只在该邮箱查阅邮件(我开始怀疑你的动机,是不是搞什么批量注册!)


具体如下,需要配置下第二节中提到的postfix配置文件,在文件最后添加


virtual_alias_domains = ensbook.com  mail.ensbook.com
virtual_alias_maps = hash:/etc/postfix/virtual


完成配置之后,我查阅网上一些资料,需要配置/etc/postfix/virtual文件,该文件主要用来管理电子邮件转发规则的


于是我尝试修改/etc/postfix/virtual文件,并添加一下信息


微信截图_20220514230254.png


这条规则的含义是:所有邮件发送至 @ensbook.com 转发到 qq邮箱


发现竟然没有生效,最后是创建一个virtual的用户实现转发接收的。如果你看得出问题,记得在评论区告诉我


阿乐同学:我接收不到邮箱,又不知道什么问题,如何排查?


你可以通过tail -n /var/log/maillog查看邮件日志


微信截图_20220514230307.png

最后


通过上文的了解,我们不难看到,一个域名邮件服务器的创建其实很简单,而且技术很老。但是无论老不老,能够解决我们的需求就好。如果你有其他方式实现,欢迎在评论区留言。



相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
6月前
|
API 开发者
|
2月前
|
测试技术
使用Lim测试平台快速完成批量造数
使用Lim测试平台快速完成批量造数
31 1
|
4月前
|
数据管理
宜搭流程中,数据管理批量发起如何成功导入 年-月-日 时:分格式数据 当前数据管理批量发起,Excel文本中编辑时间格式如2023-12-07 20:00,批量导入生成后显示为20231207 00:00,请问如何让时:分正确显示。
宜搭流程中,数据管理批量发起如何成功导入 年-月-日 时:分格式数据 当前数据管理批量发起,Excel文本中编辑时间格式如2023-12-07 20:00,批量导入生成后显示为20231207 00:00,请问如何让时:分正确显示。
62 2
|
9月前
充当自媒体写手,让网文批量化
充当自媒体写手,让网文批量化
39 0
充当自媒体写手,让网文批量化
|
前端开发 JavaScript 数据库
(简易)测试数据构造平台: 20 (工具申请-工单新建)
(简易)测试数据构造平台: 20 (工具申请-工单新建)
(简易)测试数据构造平台: 20 (工具申请-工单新建)
|
存储 Android开发
方法:如何批量把excel表格联系人号码导入华为手机通讯录
看着电脑上的excel表格里上千个员工,很是头大,我是华为手机,如何批量把excel表格联系人号码导入华为手机通讯录?开始的时候信心满满的想着一个个自己手打铭字和输入一个个数字,一天存几百个,几天就搞定了,但是开始存了几十个就手指都累了而且容易出错,想想这大量重复枯燥的工作量都怀疑人生。于是上网找了很多的办法,折腾了大半天,终于发现有人介绍了一个网络上常见简单便捷操作的软件工具,金芝号码提取导入助手。在电脑上安好了软件,简单操作了三步,不到三分钟,就把excel表格里面的几千个联系人快速批量存入了手机通讯录。我下面做个教程指导。
1843 0
方法:如何批量把excel表格联系人号码导入华为手机通讯录
|
对象存储 文件存储 存储
阿里云批量计算怎么在控制台提交和管理作业?
阿里云批量计算(BatchCompute)是一种适用于大规模并行批处理作业的分布式云服务。 用户可以提交一个任意的计算机程序,让它在阿里云的多个 VM 实例上同时运行,然后把结果写入到指定的持久化存储位置(如阿里云对象存储 OSS 或者文件存储 NAS)。
1480 0
|
Shell Perl 数据安全/隐私保护