# 邮箱服务

# Flag

# 域名邮箱

# Yandex配置步骤

端口

  • SMTPsmtp.yandex.com:465 SSL
  • IMAPimap.yandex.com:993 SSL
  • POP3pop.yandex.com:995 SSL

注意:如果是添加第二个域名(一个域名是一个组织),进入账户管理页面 (opens new window), 然后点击顶部的域名后弹出下拉菜单有一个New organization按钮来添加新域名,然后按照步骤(跳过1、2)操作即可

此时已经进入到管理页面,在左侧菜单Domains中点击域名(此时域名右侧是禁止符号)验证域名所有权, 验证成功后左侧菜单栏会多出几个菜单(这时域名右侧是感叹号

按照上面链接中的DNS配置(或者点击左侧菜单栏DNS management)到自己域名所在服务商添加DNS解析, 注意末尾的点不要丢了,等待几分钟刷新(域名右侧是绿色的勾

点击上面的连接(就是左侧Email菜单)进入界面后点击DKIM signatures点击Copy,然后在域名所在服务商添加一条TXT记录DNS解析, 主机记录(name)为mail._domainkey,值就是刚刚复制的DKIM signatures

  • 6、添加邮箱账户

点击 Все сотрудники(就是左侧第一个菜单),然后点击页面下方有一个带+add按钮, 再点击Add a person,在弹出的页面输入,带*的为必填,填完后就点击橙色的add按钮

  • 7、新添加的账户需要去登录并同意一个协议才能使用

点击https://mail.yandex.com (opens new window)登录新账户并点击Complete registration按钮同意协议

  • 8、pop3/imap无法使用的解决办法

点击https://mail.yandex.com/#setup/client (opens new window) 登陆邮箱按照下图中步骤操作即可,登录后重新点击链接可省略下图中的1、2、3步

  • 9、域名验证不通过解决办法

进入https://webmaster.yandex.com/sites (opens new window)点击没有通过验证域名上的X按钮进行删除, 然后点击页面顶部的+按钮重新添加域名再验证。

我的域名验证不通过发现是因为:添加不带www的域名,自动添加了www二级域名

验证码填写

  • 使用Google翻译的软键盘

# 邮件服务器

# 邮件服务器概述

  • MUAMail User Agent,邮件用户代理

接收邮件所使用的邮件客户端,使用IMAPPOP3协议与服务器通信;

如:OutlookFoxmailthunderbirdMac Mailmutt

  • MTAMail Transfer Agent,邮件传输代理代为传递

通过SMTP协议发送、转发邮件;

如:SendmailPostfix

  • MDAMail Delivery Agent,邮件投递代理

MTA接收到的邮件保存到磁盘或指定地方,通常会进行垃圾邮件及病毒扫描;

如:procmaildropmail

  • MRAMail Receive Agent,邮件接收代理

负责实现IMAPPOP3协议,与MUA进行交互;

如:dovecot

  • SMTPSimple Mail Transfer Protocol,传输发送邮件所使用的标准协议;
  • IMAPInternet Message Access Protocol,接收邮件使用的标准协议之一;
  • POP3Post Office Protocol 3,接收邮件使用的标准协议之一。

流程

邮件服务器基本都有MTAMDAMRA组成

MUA(发件人发送) --> (若干个)MTA --> MDA --> MRA <–- MUA(收件人收取)

协议:MUAMTA,以及MTAMTA之间使用SMTP协议,而收邮件时,MUAMDA之间使用POP3IMAP协议。

  • 一、用户利用MUA寄信到MTA。配置MUA时要配上SMTP服务器域名,然后发送邮件。
    • 比如使用网易账户发送邮件就要在配置smtp.163.com,这样邮件就发送到网易MTA
  • 二、 MTA检查收件人服务器如果不是自己则传递到下一跳MTA,直到传递到目的MTA
  • 三、 目的MTA收到邮件后将邮件存储到MDA中,MDA对邮件进行垃圾过滤,病毒查杀。
  • 四、 MRA把邮件从MDA收取到用户的收件箱中。
  • 五、 MUA收取邮件,此时收取邮件只是将MRA中的邮件下载到本地。

# 设置域名解析

记录类型 主机记录 解析线路(isp) 记录值 MX优先级 TTL值
A mail 默认 服务器IP地址 10 分钟
MX @ 默认 mail.域名 10 10 分钟

# 卸载sendmail

yum remove -y sendmail

# 安装Postfix和Dovecot

yum install -y postfix dovecot

# 查看版本

rpm -qa | grep "postfix\|dovecot"
# 或者
rpm -qa | grep -e postfix -e dovecot
# 或者
rpm -qa | grep -E "postfix|dovecot"
# 或者
rpm -qa | egrep "postfix|dovecot"
# 或者
rpm -qa | awk "/postfix|dovecot/"

# 修改邮件传输代理

alternatives --config mta
# 或者先查看邮件传输代理程序,再设置
/usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix

会提示找到几个可用程序,输入自己需要的那个程序的数字即可

# 查看是否修改成功

alternatives --display mta

第一行显示mta - status is manual.则表示设置成功

# 修改Postfix配置

main.cf中配置的值会自动分散到多个指定的配置文件中去

查看配置

# 输出所有postfix配置项以及默认值
postconf
# 不输出#开头和空行
grep -v '^#\|^$' /etc/postfix/main.cf

编辑配置

vi /etc/postfix/main.cf

修改以下内容

# 75行:主机名
myhostname = mail.example.com
# 83行:设置本地网络的邮件域
mydomain = example.com
# 99行:要外发邮件时发件人的邮件域名,这里取的mydomain变量值
myorigin = $mydomain
# 116行:默认是localhost,修改成all,即监听所有网络接口
inet_interfaces = all
# 119行:网络协议 ipv6、ipv4或者all
inet_protocols = all
# 164行:设置可接收邮件的主机名或域名,来自其他主机名或域名的邮件将拒绝接收
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 210行:制定接收邮件的规则,可以是hash文件,可以直接注释
local_recipient_maps =
# 264行:收发客户端的地址
mynetworks = 0.0.0.0/0
# 296行:设置可转发来自哪些域名或主机名的邮件
relay_domains = $mydestination
# 419行:邮件存储的位置
home_mailbox = Maildir/
# 572行:指定MUA通过smtp连接postfix时返回的header头信息,定义欢迎信息
smtpd_banner = $myhostname ESMTP $mail_name

在文件结尾加入

# 启用SMTP认证
smtpd_sasl_type = dovecot
# 
smtpd_sasl_path = /var/spool/postfix/private/auth
# 指定postfix使用sasl验证:就是启用smtp并要求进行账号、密码效验
smtpd_sasl_auth_enable = yes
# 指定SMTP认证的本地域名:可以使用''或注释掉,默认为空
smtpd_sasl_local_domain = $myhostname
# 支持非标准验证规定的行为,
# 指定postfix兼容MUA使用不规则的smtp协议,主要针对老版本的outlook
broken_sasl_auth_clients = yes
# 当客户端引发错误时,postfix的初始等待时间 
smtpd_error_sleep_time = 0s
# 收件人限制条件
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination,reject_unknown_sender_domain
# 客户端限制
smtpd_client_restrictions = permit_sasl_authenticated
# 取消smtp的匿名登录
smtpd_sasl_security_options = noanonymous
# 
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks
# 指定通过postfix发送邮件的体积大小,此处表示5M
message_size_limit = 5242880

smtpd_recipient_restrictions(收件人限制)有以下可用值:

permit_mynetworks允许本地的网络接收

permit_sasl_authenticated允许通过SASL验证的用户(也就是smtp链接时通过了账号、密码效验的用户)的所有用户

reject_unauth_destination拒绝无法认证的目的地

# 修改Dovecot配置

vi /etc/dovecot/dovecot.conf
auth_mechanisms = plain login
base_dir = /var/run/dovecot/
debug_log_path = /var/log/dovecot_debug.log
disable_plaintext_auth = no
first_valid_uid = 1000
info_log_path = /var/log/dovecot_info.log
login_trusted_networks = 0.0.0.0/0
mail_location = mbox:~/mail:INBOX=/var/mail/%u
mbox_write_locks = fcntl
namespace inbox {
  inbox = yes
  location = mbox:~/mail:INBOX=/var/mail/%u
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix =
}
passdb {
  args = dovecot
  driver = pam
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
  }
  unix_listener auth-userdb {
    group = noreply
    mode = 0666
    user = noreply
  }
}
service imap-login {inet_listener imap {
    port = 143
  }
}
service pop3-login {
  inet_listener pop3 {
    port = 110
  }
}
ssl = no
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
userdb {
  driver = passwd
}
  • 其实上面的配置文件并非一个,而是修改了/etc/dovecot/conf.d文件夹下的以下几个文件
    • 10-auth.conf
    • 10-ssl.conf
    • 10-mail.conf
    • 10-master.conf
    • 10-logging.conf

修改完成以后使用doveconf -n > dovecot-new.conf命令生成一个全新的综合的配置文件。

# 修改防火墙配置

firewall-cmd --zone=public --permanent --add-service=imap
firewall-cmd --zone=public --permanent --add-service=smtp
firewall-cmd --zone=public --permanent --add-service=pop3
firewall-cmd --zone=public --add-port=25/tcp --permanent
firewall-cmd --zone=public --add-port=25/udp --permanent
firewall-cmd --zone=public --add-port=110/tcp --permanent
firewall-cmd --zone=public --add-port=110/udp --permanent
firewall-cmd --zone=public --add-port=143/tcp --permanent
firewall-cmd --zone=public --add-port=143/udp --permanent
firewall-cmd --reload

# 配置用户及权限

# 添加用户
useradd 用户名
# 设置密码
echo "密码" | passwd --stdin 用户名
# 授权
sudo chmod 0775 /var/spool/mail/*

# 启动服务

# 开启postfix服务
systemctl enable postfix
# 设置postfix开机启动
chkconfig postfix on
# 开启dovecot服务
systemctl enable dovecot
# 设置dovecot开机启动
chkconfig dovecot on
# 重启postfix/dovecot
systemctl restart postfix/dovecot
# 查看postfix/dovecot状态
systemctl status postfix/dovecot

# 使用mail测试发信

未做明确配置时,mail默认将本机作为发信、收信的服务器,所以此步骤中的测试操作在邮件服务器本机完成。

echo "邮件内容" | mail -s "邮件主题" -r 发送人邮件地址 接收人邮件地址

# 使用telnet测试收信

yum install -y telnet
telnet 域名 25