搭建邮件收发服务器 搭建发邮件服务器 安装postfix
修改postfix配置文件 vim /etc/postfix/main.cf
1 2 3 4 5 6 7 8 mydomain = example.com inet_interfaces = all mydestination = $myhostname , localhost.$mydomain , localhost, $mydomain ,mail.$mydomain
重启postfix 1 2 systemctl enable postfix systemctl restart postfix
本地测试修改域名解析 修改DNS服务器,因为我们发送邮件需要域名服务,如何配置DNS服务器请查看本人博客,DNS服务器中记录example.com一定要指向本机,否则邮件服务器不能发送邮件到指定域
我们测试使用修改hosts文件,打开/etc/hosts文件添加下面两行
1 2 127.0.0.1 mail.example.com127.0.0.1 example.com
安装mail命令 1 apt-get install mailutils
添加测试账户 1 2 3 4 useradd -m -s /bin/bash mailuser1 passwd mailuser1 useradd -m -s /bin/bash mailuser2 passwd mailuser2
发送邮件 1 echo 'Here is the message body.' | mail -s "Test email from ubuntu server!" -r mailuser1@example.com mailuser2@example.com
切换用户查看邮件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 su - mailuser2 mailuser2@ubuntu:~$ mail"/var/mail/mailuser2" : 1 message 1 new >N 1 root Tue Dec 22 17:30 13/465 Test email from ubuntu server! ? Return-Path: <mailuser1@example.com> X-Original-To: mailuser2@example.com Delivered-To: mailuser2@example.com Received: by ubuntu (Postfix, from userid 0) id 52C4B7FDE2; Tue, 22 Dec 2020 17:30:55 +0800 (HKT) Subject: Test email from ubuntu server! To: <mailuser2@example.com> X-Mailer: mail (GNU Mailutils 3.4) Message-Id: <20201222093055.52C4B7FDE2@ubuntu> Date: Tue, 22 Dec 2020 17:30:55 +0800 (HKT) From: root <mailuser1@example.com> Here is the message body.
postfix不支持远程读取邮件功能,所以邮件只能在服务器端打开,dovecot可以远程接收服务器中的邮件, 下面介绍如何安装和使用dovecot
搭建收邮件服务器 安装 dovecot 1 2 3 4 apt-get install dovecot-common dovecot-imapd dovecot-pop3d
配置dovecot 测试不使用SSL,我们把配置文件中的关于安全的都关掉
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 login_trusted_networks = 0.0.0.0/0 ssl = no mail_location = mbox:~/mail:INBOX=/var/mail/%u mbox_write_locks = fcntl su - $user mkdir -p mail/.imap/INBOX
重启dovecot服务 1 2 systemctl enable dovecot systemctl restart dovecot
测试 发送邮件 1 echo 'Here is the message body.' | mail -s "Test email from ubuntu server!" -r mailuser1@example.com mailuser2@example.com
登录到其他机器,使用telnet收邮件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ssh root@172.16.3.225 telnet 172.16.3.226 110 Trying 172.16.3.226... Connected to 172.16.3.226. Escape character is '^]' . +OK [XCLIENT] Dovecot (Ubuntu) ready. user mailuser2 +OK pass 123456 +OK Logged in . list +OK 1 messages: 1 478 . retr 1 +OK 478 octets Return-Path: <mailuser1@example.com> X-Original-To: mailuser2@example.com Delivered-To: mailuser2@example.com Received: by ubuntu (Postfix, from userid 0) id 52C4B7FDE2; Tue, 22 Dec 2020 17:30:55 +0800 (HKT) Subject: Test email from ubuntu server! To: <mailuser2@example.com> X-Mailer: mail (GNU Mailutils 3.4) Message-Id: <20201222093055.52C4B7FDE2@ubuntu> Date: Tue, 22 Dec 2020 17:30:55 +0800 (HKT) From: root <mailuser1@example.com> Here is the message body. . quit +OK Logging out. Connection closed by foreign host.
telnet发送邮件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 通过 SMTP 协议发送邮件的整体过程如下: 客户端使用 telnet 命令连接到SMTP服务器,建立会话。 客户端发送一个 HELO 或 EHLO 命令。 客户端发送一个 AUTH 认证命令进行用户登录(使用 smtpd 方式)。 客户端发送一个 MAIL 命令指定发件人。 客户端发送一个 RCPT 命令指定收件人。 客户端发送一个 DATA 命令准备输入邮件正文。 客户端发送一个 . 命令(点命令)表示 DATA 命令结束。 客户端发送一个 QUIT 命令结束会话。 telnet mail.example.com 25 helo example.com mail from:mailuser1@example.com rcpt to:mailuser2@example.com data subobject: <Test email from ubuntu server!> Here is the message body. .<回车结束> quit
telnet接收邮件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 邮件的接收这里是基于pop3协议的,pop3协议共定义了12条与接收相关的邮件,如下面简单解释: 首先是与登陆验证相关的几条命令: 1,user 收件人帐户名称(有时候需要加后面的域名有时候却不要,好象不同的服务器要求不同,自己试吧) 2,pass 密码,这里是明码 3,apop 以MD5数字形式提交帐户和密码,以“,”分开,是第二种登陆方式 再就是登陆后操作邮件的一些命令: 4,stat 查询邮箱中的所有邮件的统计信息,一般只有邮件总数和所有邮件占用的字节大小 5,uidl 根据邮件的序号查询该邮件的唯一标志符 6,list 查询邮箱中的所有邮件信息,以列表形式列出,自动生成邮件序号。如果指定某一序号则只显示指定邮件信息 7,retr 指定邮件序号查看某邮件内容 8,dele 指定邮件序号将某封邮件设置删除标记,当执行退出命令 quit时将实际删除所有具有删除标记的邮件 9,rset 清除所有设置了删除标记的邮件的删除标记 10,top 获取某邮件的邮件头和邮件体中的前n行内容,指定邮件序号和n,以空格符隔开 连接状态命令与退出命令: 11,noop 查询与pop3服务器的连接状态 12,quit 断开连接并退出 关于pop3服务器的响应,响应为 +OK 则为正确,响应为 -ERR 则为错误