学习笔记之邮件服务SMTP

1.stmp基础知识

    stmp即简单邮件传输协议,是用来发邮件的。他帮助每一台计算机在发送或者转信件时找到下一个目的地址。通过smtp协议所指定的服务器,就可以把邮件寄到收信人的服务器上。
发送邮件的几个动作:

    转发:电子邮件服务器(MTA)将提交的邮件转发至另一个服务器,以进行发送。
    排队:失败的发送或转发尝试排队等待,并由MTA定义重试。(默认情况下,Postfix每小时执行此操作一次)。
    拒绝:在首次提交期间,电子邮件被电子邮件服务器拒绝。
    退回:远程服务器接受电子邮件以进行发送以后,又将该电子邮件退回给始发电子邮件服务器或用户。

mailq命令显示已排队的所有邮件。postqueue -f 刷新

2.开始配置postfix

   由于配置邮件服务器需要dns 的mx记录。所以我之前已经弄好了dns服务器,并写了2个域。

第一个域sina的mail主机的信息如下

另一个域qq的mail主机的信息如下

下来修改配置文件。两边的配置文件都是大致相当的

在sina域中修改main.cf这个文件
[root@mail-sina named]# cd /etc/postfix/
[root@mail-sina postfix]# vim main.cf 
分别修改myhostname,mydomain,myorigin,inet_interfs,mydestination这几个选项。
 
75 myhostname = host.mail-sina.sina.com
83 mydomain = sina.com
99 myorigin = sina.com
113 inet_interfaces = all
116 #inet_interfaces = localhost
164 mydestination = $myhostname, $mydomain, localhost
修改以上的行数的参数
顺便要注释116行
以上的参数的含义都是
myhostname   主机名
mudomain       域名
myorigin          发件人所在的域
inet_interfaces 监听所有网络接口
mydestination  指定邮件接收人的域。其实就是说你要就收哪些地方来的信件。比如所有sina.com的邮件就都得接收

配置完了之后。重启服务器
systemctl  restart postfix
并关闭防火墙对smtp的限制

好了,同样的过程再在mail-qq这台主机再做一遍。
过程略。就是把上面的sina都改成qq就好

sina给qq发一封信

qq查看是否收到信件


信件内容的具体内容如下
&1
Message  1:
From root@sina.com  Sun Dec  4 20:05:49 2016
Return-Path: <root@sina.com>
X-Original-To: root@qq.com
Delivered-To: root@qq.com
Date: Sun, 04 Dec 2016 20:05:14 +0800
To: root@qq.com
Subject: Love Letter
User-Agent: Heirloom mailx 12.5 7/5/10
Content-Type: text/plain; charset=us-ascii
From: root@sina.com (root)
Status: R

360 love qq deeply
So and I

还可以远程登录服务器区发送邮件

打开sina 的root 的邮件箱发现是可以收到邮件的。


1.也可以限制某个ip给mail-qq服务器发信。

(在qq(192.168.1.192)的上面设置拒绝sina的信件(192.168.1.234))
[root@mail-qq Desktop]# postconf -e "smtpd_client_restrictions = check_client_access hash:/etc/postfix/access"    #postconf -e 是直接在main.cf后添加配置

然后在access那个文件的末尾添加一句
192.168.1.234    REJECT            #192.168.1.234是要禁止的IP
  
再加密改文件。使用命令   
[root@mail-qq postfix]# postmap /etc/postfix/access 

配置完main.cf请重启一下postfix

[root@mail-sina ~]# mail root@qq.com
Subject: Hello
Hi
.
EOT
[root@mail-sina ~]# mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 Mail Delivery System  Mon Dec  5 17:28  75/2455  "Undelivered Mail Retu"

发完后发现被退信了,退信的详细信息点击1得
                   The mail system

<root@qq.com>: host mail.qq.com[192.168.1.192] said: 554 5.7.1
<unknown[192.168.1.234]>: Client host rejected: Access denied (in reply to
RCPT TO command)

2.也可以限制发信人

[root@mail-qq postfix]# postconf -e "smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender"

新建一个文件叫sender(当然是在/etc/postfix/目录下了)



内容就是限制的用户

再加密一下就好了

[root@mail-qq postfix]# postmap sender    

3.同样也可以限制收件人。

(recipient)
[root@mail-qq postfix]# postconf -e "smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipient"
新建一个文件叫recipient(当然是也在/etc/postfix/目录下了)
内容就是限制的用户

再postmap


空壳邮件。简单的说就是将邮件转发至真正处理这个邮件的服务器


背后真正的处理邮件的主机里配置
真正的主机里先配置不接受邮件
再配置接收234的转发邮件
如果接收到邮件的反馈报错

3.邮件接收服务器

dovecot是邮件接收用到的软件。使用的是imap和pop协议

其默认开启的是110/143/993/995端口
[root@mail-qq postfix]# yum -y install dovecot
Loaded plugins: fastestmirror, langpacks
base                                                     | 3.6 kB     00:00     
c7-media                                                 | 3.6 kB     00:00     

systemctl start dovecot 后可以发现

[root@mail-qq yum.repos.d]# netstat -atl
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:pop3            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:imap            0.0.0.0:*               LISTEN     
tcp        0      0 mail-qq.qq.com:domain   0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:smtp            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:imaps           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:pop3s           0.0.0.0:*               LISTEN     
tcp        0      0 mail-qq.qq.com:42196    192.168.1.234:ssh       ESTABLISHED

dovecot的配置文件在/etc/dovecot下
再配置文件中做如下改变

 24 protocols = imap pop3 lmtp   #24行的注释取消
 49 disable_plaintext_auth =no   #49行开启明文传输
 
在/etc/dovecot/conf.d目录下修改10-mail.conf这个文件

 30 mail_location = mbox:~/mail:INBOX=/var/mail/%u    #后写成这样子

重启服务

切换至news用户
[news@mail-qq ~]$ mkdir mail/.imap -p
[news@mail-qq ~]$ touch mail/.imap/INBOX
[news@mail-qq ~]$ pwd
/home/news

安装工具mutt  。使用yum -y install mutt
[news@mail-qq ~]$ mutt -f imap://news@192.168.1.192  #可以登录邮箱



4.使用Mysql+postfix+雷鸟

做之前最好将main.cf恢复最开始的设置)
 在数据库中建立一张表

MariaDB [Local_user]> desc muser;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(30) | NO   |     | NULL    |       |
| password | varchar(30) | NO   |     | NULL    |       |
| domain   | varchar(30) | NO   |     | NULL    |       |
| maildir  | varchar(50) | NO   |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)

创建使用这个表的用户,并且授权
MariaDB [Local_user]> create user 'postfix'@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)

MariaDB [Local_user]> grant insert,update,delete,select on Local_user.muser to 'postfix'@'%';
Query OK, 0 rows affected (0.00 sec)

创建用户
MariaDB [Local_user]> insert into muser values ('admin@sina.com','123','sina','/sina.com/muser');
Query OK, 1 row affected (0.00 sec)

MariaDB [Local_user]> select * from muser;
+----------------+----------+--------+-----------------+
| username       | password | domain | maildir         |
+----------------+----------+--------+-----------------+
| admin@qq.com   | 123      | qq.com | qq.com/muser    |
+----------------+----------+--------+-----------------

创建一个用户去管理
[root@mail-qq etc]# id virtual
uid=1112(virtual) gid=1112(virtual) groups=1112(virtual)

再配置文件中添加如下语句。
[root@mail-qq etc]# postconf -e virtual_mailbox_base=/home/virtual
[root@mail-qq etc]# postconf -e virtual_uid_maps=static:1112
[root@mail-qq etc]# postconf -e virtual_gid_maps=static:1112
[root@mail-qq etc]# postconf -e virtual_mailbox_domains=mysql:/etc/postfix/mysql-domains.cf 
[root@mail-qq etc]# postconf -e virtual_mailbox_maps=mysql:/etc/postfix/mysql-mailboxs.cf
[root@mail-qq etc]# 


看看main.cf会出现下面的语句


再编写postfix查看数据库的三段内容的文件。就是那mysql-alias.cf   mysql-domains.cf  mysql-mailboxs.cf
这三个文件。就在这个/etc/postfix目录下编写

mysql-alias.cf

mysql-domains.cf

mysql-mailboxs.cf


可以测试一下,postfix是否可以通过uid为1112的virtual这个用户去拿mariadb中的postfix这个用户去访问数据库
[root@mailserver postfix]# postmap -q "admin@qq.com" mysql:/etc/postfix/mysql-alias.cf 
admin@qq.com
[root@mailserver postfix]# postmap -q "qq.com" mysql:/etc/postfix/mysql-domains.cf 
qq.com
[root@mailserver postfix]# postmap -q "admin@qq.com" mysql:/etc/postfix/mysql-mailboxs.cf 
qq.com/muser

在/home/virtual下创建目录qq.com。注意所有人要改成virtual。发一封信给admin。现在我在sina这台主机上

现在是sina主机上(给qq的mariadb中的虚拟用户admin发信)


再在qq的主机上看看



很明显。现在需要一个客户端去访问查看自己的信件
我选用雷鸟当做自己的客户端软件。
103 !include auth-sql.conf.ext
49 disable_plaintext_auth =no
48 login_trusted_networks = 0.0.0.0/0
24 protocols = imap pop3 lmtp

添加如上信息在/etc/dovecot/dovecot.conf文件中

要复制一个sql.conf文件到/etc/dovecot这个目录下
那个例子文件在share中

[root@mail-qq dovecot]# cp /usr/share/doc/dovecot-2.2.10/example-config/dovecot-sql.conf.ext  .
[root@mail-qq dovecot]# mv dovecot-sql.conf.ext dovecot-sql.conf

编辑这个dovecot-sql.conf这个配置文件
32 driver = mysql
71 connect = host=localhost dbname=Local_user user=postfix password=123
78 default_pass_scheme = PLAIN
125user_query = SELECT maildir, 1112 AS uid, 1112 AS gid FROM muser WHERE us    ername = '%u'
107 password_query = \
108   SELECT username, domain, password \
109   FROM muser WHERE username = '%n' AND domain = '%d'
编辑/etc/dovecot/conf.d/10-mail.conf 设置邮件存储目录
30 mail_location = maildir:/home/virtual/%d/%n

安装驱动
[root@mail-qq dovecot]# yum -y install dovecot-mysql.x86_64 

安装雷鸟。在应用商店里搜一下就出来了








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是我对 Sendmail 邮件服务器搭建与配置的笔记: 1. 安装 Sendmail 在 Linux 系统上,可以使用以下命令安装 Sendmail: ``` sudo apt-get install sendmail ``` 2. 配置 Sendmail 在安装 Sendmail 后,需要进行配置。在 Ubuntu 系统上,Sendmail 的配置文件位于 /etc/mail/sendmail.mc。 打开该文件,找到以下两行代码: ``` dnl # define(`SMART_HOST', `smtp.your.provider')dnl dnl # define(`confAUTH_OPTIONS', `A p')dnl ``` 将这两行的注释符号(dnl)去掉,并将第一行的 smtp.your.provider 修改为实际的 SMTP 服务器地址。例如,如果你的邮箱是使用 Gmail 的 SMTP 服务器,则将该行改为: ``` define(`SMART_HOST', `smtp.gmail.com')dnl ``` 保存并关闭文件,然后运行以下命令以重新生成 Sendmail 的配置文件: ``` sudo m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf ``` 3. 配置发件人信息 在 /etc/mail/sendmail.mc 文件中,找到以下行: ``` dnl # define(`confDOMAIN_NAME', `mydomain.com')dnl dnl # define(`MASQUERADE_AS', `mydomain.com')dnl ``` 将这两行的注释符号(dnl)去掉,并将 mydomain.com 改为你自己的域名。例如,如果你的域名是 example.com,则将这两行改为: ``` define(`confDOMAIN_NAME', `example.com')dnl define(`MASQUERADE_AS', `example.com')dnl ``` 保存并关闭文件,然后运行以下命令以重新生成 Sendmail 的配置文件: ``` sudo m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf ``` 4. 重启 Sendmail 在完成上述配置后,运行以下命令以重启 Sendmail: ``` sudo service sendmail restart ``` 5. 测试邮件发送 使用以下命令向你的邮箱发送一封测试邮件: ``` echo "This is a test email." | mail -s "Test Email" [email protected] ``` 将 [email protected] 改为你自己的邮箱地址。 如果一切正常,你应该会收到一封来自 Sendmail 的测试邮件。 希望这些笔记能够帮助你成功搭建和配置 Sendmail 邮件服务器。如果你有任何问题或疑问,请随时向我提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值