你知道如何批量創(chuàng)建郵箱嗎?

?前言:哈嘍,我是樹醬。文章的源頭,是因?yàn)樵谝淮谓徽勚校笥烟岬揭粋€(gè)需求。需要一批郵箱去做一些"事情",具體是干啥事,留點(diǎn)懸念。如果手動(dòng)去注冊(cè)郵箱,只需要解決接收郵件問題。不僅費(fèi)力而且現(xiàn)在包括像@163等郵箱都還需要手機(jī)驗(yàn)證。手動(dòng)不行,那我們就自己"造"郵箱。一開始覺得挺復(fù)雜,畢竟作為一名前端工程師,這個(gè)“需求”已經(jīng)超綱了。問題不大莫慌,看完這篇你就可以打造自己的域名郵箱了
?
1.前期準(zhǔn)備
搭建郵件服務(wù)器需要一些“基礎(chǔ)建設(shè)”,包括如下
一臺(tái)服務(wù)器 推薦centos 一個(gè)域名
1.1 配置細(xì)節(jié)
郵件服務(wù)器是通過SMTP協(xié)議進(jìn)行通信,為了讓服務(wù)器能夠成功接收郵件,我們需要打開25這個(gè)端口,并允許訪問25端口。同時(shí)如果你需要使用像類似foxmail這種客戶端接發(fā)收郵件,還需要支持POP3協(xié)議,需要打開110端口。換句話說為了保證郵件服務(wù)的正常使用,需要開啟25和110這兩個(gè)端口
?關(guān)于 POP3協(xié)議(「Post Office Protocol 3」):協(xié)議主要用于支持使用客戶端遠(yuǎn)程管理在服務(wù)器上的電子郵件,將電子郵件存儲(chǔ)到本地主機(jī)
?
下圖是阿里云服務(wù)器配置安全策略組的規(guī)則,在其中加入一條訪問規(guī)則

接下來是域名,需要配置域名解析,配置主機(jī)記錄
如下圖是域名的解析配置,主要包括幾個(gè)記錄數(shù)值
MX類:增加 MX 記錄,類型選擇 MX記錄,值可以填寫主機(jī)名,也可以填寫你的公網(wǎng)ip地址也可以是mail.example.com。如果配置的是域名,還需要新增一條A類型的記錄,主機(jī)記錄定義為:mail,具體看下圖
A類:該配置主要用來支持客戶端接收郵件(比如:foxmail)分別添加smtp、imap、pop等配置,記錄值為 ip
配置完如下圖所示,可以在列表中看到配置好的,

2 服務(wù)器安裝
2.1 Postfix
?關(guān)于 postfix:Postfix 是實(shí)現(xiàn) SMTP 協(xié)議的軟件,也叫做郵件發(fā)送服務(wù)器,負(fù)責(zé)對(duì)郵件進(jìn)行轉(zhuǎn)發(fā),具體的轉(zhuǎn)發(fā)規(guī)則,就需要我們對(duì)postfix的配置進(jìn)行修改
?
我使用的是阿里云的服務(wù)器,首先我們安裝郵件服務(wù)`postfix'
安裝
yum install postfix // 服務(wù)器安裝
配置
安裝成功之后,修改配置,通過vi /etc/postfix/main.cf 命令行修改以下配置
myhostname = email.example.com // 設(shè)置系統(tǒng)的主機(jī)名
mydomain = example.com // 設(shè)置域名(我們將讓此處設(shè)置將成為E-mail地址“@”后面的部分)
myorigin = $mydomain // 將發(fā)信地址“@”后面的部分設(shè)置為域名(非系統(tǒng)主機(jī)名)
inet_interfaces = all // 接受來自所有網(wǎng)絡(luò)的請(qǐng)求
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain // 指定發(fā)給本地郵件的域名
home_mailbox = Maildir/ // 指定用戶郵箱目錄
# 規(guī)定郵件最大尺寸為10M
message_size_limit = 10485760
# 規(guī)定收件箱最大容量為1G
mailbox_size_limit = 1073741824
# SMTP認(rèn)證
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中主要的參數(shù)
啟動(dòng)
配置完postfix的,啟動(dòng)服務(wù)
postfix check // 檢查配置文件是否正確
systemctl start postfix //開啟postfix服務(wù)
systemctl enable postfix //設(shè)置postfix服務(wù)開機(jī)啟動(dòng)
完成postfix的配置,接下來我們還需要安裝dovecot
2.2 Dovecot
?關(guān)于 Dovecot:是一款能夠?yàn)長(zhǎng)inux系統(tǒng)提供IMAP和POP3電子郵件服務(wù)的開源服務(wù)程序,安全性極高,配置簡(jiǎn)單,執(zhí)行速度快,而且占用的服務(wù)器硬件資源也較少。上文提到POP3/IMAP是從郵件服務(wù)器中讀取郵件時(shí)使用的協(xié)議
?
安裝
yum install dovecot // 服務(wù)器安裝
配置 安裝成功之后,修改配置,通過 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
啟動(dòng)
systemctl start dovecot //開啟dovecot服務(wù)
systemctl enable dovecot // 配置dovecot服務(wù)開機(jī)啟動(dòng)
完成以上兩個(gè)服務(wù)的配置,你離成功就近一步了!
?啊樂同學(xué):postfix與dovecot這兩個(gè)其實(shí)有什么區(qū)別?
?
答:postfix主要做發(fā)送郵件使用,而dovecot主要做接收使用,兩者結(jié)合才能完成一個(gè)完整的郵件服務(wù)
3 新建用戶
搭建完郵件服務(wù)器之后,我們需要?jiǎng)?chuàng)建用戶來完成 郵件的接收和發(fā)送
如何創(chuàng)建用戶
useradd tree/ 新增用戶
passwd tree // 設(shè)置用戶密碼
?啊樂同學(xué):如果這樣我創(chuàng)建100個(gè)郵箱用戶,豈不是很浪費(fèi)時(shí)間?
?
莫慌,我們寫個(gè)shell腳本,批量創(chuàng)建就可以解決你這個(gè)問題
創(chuàng)建一個(gè)文件,createUser.sh內(nèi)容如下
/bash
#user.txt 為需要?jiǎng)?chuàng)建的用戶的文件passwd.txt為隨機(jī)生成密碼
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 #創(chuàng)建用戶
if [ $? -eq 0 ]
then
echo "$user create sucessful"
PASSWD=$(echo $RANDOM |md5sum |cut -c 1-8) #隨機(jī)生成數(shù)字
echo $PASSWD |passwd --stdin $user &>/dev/null #修改用戶密碼
echo -e "$user\'$PASSWD'\'$(date +%Y%m%d)'" >> $pass_FILE #將用戶,密碼,日期輸入到文件中
fi
fi
done
前提需要建立一個(gè)user.txt 來維護(hù)我們要?jiǎng)?chuàng)建的用戶,比如
tree
shujiang
腳本會(huì)根據(jù)我們列出的用戶名去批量生成用戶
4.測(cè)試郵箱
搭建好服務(wù)以及完成用戶的創(chuàng)建,接下來就是測(cè)試郵件是否正常接收環(huán)節(jié)了
我使用的是foxmail來做驗(yàn)證

這個(gè)用戶名就是我們上一節(jié)創(chuàng)建的用戶名稱,完成創(chuàng)建之后,我們通過發(fā)送郵件來測(cè)試是否能夠成功接收

還有一種方式就是借助telnet去做測(cè)試,這里不做大篇幅介紹。最原始的方式
?阿樂同學(xué):如果我每個(gè)新建的郵箱用戶,我都得去配置一個(gè)客戶端去接收郵寄,豈不是很費(fèi)勁,有沒有其他方式?
?
有的,換個(gè)角度思考,你可以通過配置郵件轉(zhuǎn)發(fā),將所有郵件接收都轉(zhuǎn)發(fā)到某一個(gè)用戶的郵箱中去,你就可以只在該郵箱查閱郵件(我開始懷疑你的動(dòng)機(jī),是不是搞什么批量注冊(cè)!)
具體如下,需要配置下第二節(jié)中提到的postfix配置文件,在文件最后添加
virtual_alias_domains = ensbook.com mail.ensbook.com
virtual_alias_maps = hash:/etc/postfix/virtual
完成配置之后,我查閱網(wǎng)上一些資料,需要配置/etc/postfix/virtual文件,該文件主要用來管理電子郵件轉(zhuǎn)發(fā)規(guī)則的
于是我嘗試修改/etc/postfix/virtual文件,并添加一下信息

這條規(guī)則的含義是:所有郵件發(fā)送至 @ensbook.com 轉(zhuǎn)發(fā)到 qq郵箱
發(fā)現(xiàn)竟然沒有生效,最后是創(chuàng)建一個(gè)virtual的用戶實(shí)現(xiàn)轉(zhuǎn)發(fā)接收的。如果你看得出問題,記得在評(píng)論區(qū)告訴我
?阿樂同學(xué):我接收不到郵箱,又不知道什么問題,如何排查?
?
你可以通過tail -n /var/log/maillog查看郵件日志

最后
通過上文的了解,我們不難看到,一個(gè)域名郵件服務(wù)器的創(chuàng)建其實(shí)很簡(jiǎn)單,而且技術(shù)很老。但是無論老不老,能夠解決我們的需求就好。如果你有其他方式實(shí)現(xiàn),歡迎在評(píng)論區(qū)留言。
請(qǐng)你喝杯?? 記得三連哦~
1.閱讀完記得給?? 醬點(diǎn)個(gè)贊哦,有?? 有動(dòng)力
2.關(guān)注公眾號(hào)前端那些趣事,陪你聊聊前端的趣事
3.文章收錄在Github frontendThings 感謝Star?
