第七讲:使用云服务器搭建自己的邮件服务

第七讲:使用云服务器搭建自己的邮件服务,第1张

  随着移动互联网的普及,邮件服务使用的场景越来越少。但是注册帐号的时候,还是需要邮箱地址。市面上免费的邮箱很多,不过一般需要绑定手机号,如果想在同一个邮箱服务商那注册多个邮箱帐号,需要准备多个手机号,这非常的烦人。接下来我们自己动手搭建邮件服务器吧。

  邮件服务器之间采用SMTP协议进行通信,如果我们的云服务器想要接受邮件,需要打开25这个端口,并允许访问25端口。

  邮件服务使用的特殊的DNS,需要进行配置。这里涉及到了两次映射,为了方便叙述,假设我的邮箱名字是: abc@example.com 。第一次映射通过添加MX记录类型,将邮箱@后面的主机映射到域名上,如下图所示,添加一个MX的记录类型。

第二次映射将上面的域名映射到我们云主机上的IP上,看过之前文章的朋友应该知道如何配置。

  我们将使用postfix作为邮件服务器,因为它的特殊设定,需要先检查云主机的hostname,将hostname设置为邮件服务器的主机名。

  安装postfix,执行下面的命令,弹窗会让你选择configuration和你的mail name

  安装完成之后,检查一下服务是否启动,如果没有启动,可以执行postfix start。

  邮件服务器搭建完毕,学习过计算机网络的同学应该知道,smtp只是邮件服务器之间的传输协议,读取邮件还需要pop3或者imap协议。所以如果还要读取邮件,还需要安装其他软件。需要说明的是:如果你的Ubuntu有user1的用户,那么邮件服务器就有 user1@example.com 的账户。

  接下来我们用qq邮箱给刚搭好的邮件服务器发送测试邮件,当在云服务器上执行mail的

时候,提示收到了新邮件,选择1就显示邮件的内容。

  细心的小伙伴可能已经发现了,邮件的内容是base64编码后的,并不能直接读取,这个时候执行以下decode,选择消息,就能进行解码啦

  postfix还能发送邮件,但是前提是云服务器25端口出的流量是开启的,可以在云服务器上自己进行测试,看端口25是不是通的。对于postfix发送邮件感兴趣的可以自行搜索资料哦~

  有了自建的邮件服务器,再也不用担心要多个手机号啦

《Linux设置定时任务》 一文中,我们学习了使用crontab设置定时任务的方法,并用它来获取ganglia的运行状态。这样还不够,我们想要在ganglia的运行状态出现问题时通知我们,这样,我们就不用每天自己查看日志了。

本文主要参考 Ubuntu mail命令发送邮件 和 如何通过Shell脚本实现发送邮件通知功能? 。

1、安装mailutils

sudo apt-get install mailutils

2、General type of mail configuration选择Internet Site。

3、System mail name输入mail.voidking.com。

命令格式:

mail [OPTION...] [address...]

常用到的选项,一个是s,代表主题;一个是A,代表附件。其他的需要时查看help。

目标:给邮箱 voidking@qq.com 发送邮件,主题为“Hello VoidKing”,内容为“Welcome to mail world!”

mail -s 'Hello VoidKing' voidking@qq.com

提示Cc,这里不需要抄送,就直接回车。然后输入邮件内容“Welcome to mail world!”,回车,ctrl+D,发送邮件。

但是,等待了几分钟,并没有收到邮件,垃圾箱也没有。

mail ,查看email的发送状态为Undelivered Mail Returned,原来没有投递出去。

查看邮件系统日志: tail -n 50 /var/spool/mail/test ,提示host mx3.qq.com[183.57.48.35] said: 550 Mail content denied。看来qq邮箱的垃圾邮件防御机制做的不错,那就换个163邮箱,没想到依然失败。

那就换一台服务器!发送给 voidking@qq.com ,成功!很尴尬。。。

除了上面的方式发送邮件,我们还可以使用:

mail -s 'Hello VoidKing' voidking@qq.com <<<'Welcome to mail world!'

或者使用:

echo 'Welcome to mail world!' | mail -s "Hello VoidKing" voidking@qq.com

1、从文本读入内容发送邮件

mail -s 'Error report' voidking@qq.com </tmp/log/ganglia/error-20180524.log

2、发送附件

mail -s 'Error report' voidking@qq.com -A /tmp/log/ganglia/ganglia-20180524.log </tmp/log/ganglia/error-20180524.log

3、指定发件人

echo 'Welcome to mail world!' | mail -s "Hello VoidKing" voidking@qq.com -aFrom:haojin@qq.com

失败了,收不到邮件,不知道什么原因,留个坑吧。

目标:每天获取一次ganglia的状态日志,然后通过checkganglia.sh脚本进行审阅。审阅完毕,发送审阅结果到管理员的邮箱。

修改checkganglia.sh脚本为:

至此,大功告成! 《Linux设置定时任务》 配合 《Linux设置邮件提醒》 ,简直完美!两篇文章完成了一个小系统:定时生成ganglia日志,定时审阅ganglia日志,并且把审阅结果通过邮件发送给管理员。

Linux命令大全——LMNOPQ

如何在Ubuntu环境下搭建邮件服务器(一)

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) //stmp banned(用于telnet操作修改)

biff = no

append_dot_mydomain = no

#delay_warning_time = 4h

readme_directory = no

mail_spool_directory = /var/mail

home_mailbox = .Mail///本机每登录linux用户邮件文件夹位置

virtual_alias_maps = hash:/etc/postfix/virtual

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

smtpd_use_tls=yes

smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

#两项自启用tls发邮件选项(要邮箱支持)

smtpd_tls_security_level = may

smtp_tls_security_level = may

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination

myhostname = (邮件服务器主机名需要/etc/hostname修改应服务域名再填写)

alias_maps = hash:/etc/aliases

alias_database = hash:/etc/aliases

myorigin = /etc/mailname

mydestination = (填写应服务器域名)

#mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 //允许连接主机设置

mailbox_size_limit = 0 //限制邮件附件设置

recipient_delimiter = +

inet_interfaces = all

inet_protocols = all


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/120955.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-14
下一篇2023-03-14

发表评论

登录后才能评论

评论列表(0条)

    保存