精彩评论
- al2359(2年前 (2023-02-06))
求科学离线插件,谢谢!34401355@qq.com
评:改版梅林固件安装SS【shadowsocks】科学上网插件教程 - al2359(2年前 (2023-02-06))
求科学离线插件,谢谢!!!
评:改版梅林固件安装SS【shadowsocks】科学上网插件教程
Linux上搭建邮件服务器相关笔记
三个基本概念:
MUA(Mail User Agent)接收邮件所使用的邮件客户端,使用IMAP或POP3协议与服务器通信;例如Foxmail或Outlook。
MTA(Mail Transfer Agent) 通过SMTP协议发送、转发邮件;例如Linux中的sendmail和postfix。
MDA(Mail Deliver Agent)将MTA接收到的邮件保存到磁盘或指定地方,通常会进行垃圾邮件及病毒扫描;
MRA(Mail Receive Agent)负责实现IMAP与POP3协议,与MUA进行交互;
SMTP(Simple Mail Transfer Protocol) 发送邮件所使用的标准协议, SSL协议(SMTPS)使用465/994
端口, 非SSL协议使用25
端口;
IMAP(Internet Message Access Protocol) 接收邮件使用的标准协议之一, SSL协议(IMAPS)使用993
端口, 非SSL协议使用143
端口;
POP3(Post Office Protocol 3) 接收邮件使用的标准协议之一, SSL协议(POP3S)使用995
端口, 非SSL协议使用110
端口。
邮件服务器基本都由MTA,MDA,MRA 组成。
常用的MUA有:outlook、thunderbird、Mac Mail、Foxmail;
常用的MTA服务有:sendmail、postfix;
常用的MDA有:procmail、dropmail;
常用的MRA有:dovecot。
基础邮件原理(MUA,MTA,MDA)
https://www.cnblogs.com/yechanglv/p/6947117.html
1、mail
和mailx
是负责查看、编写和向MTA发送邮件的MUA,也就是一个邮件客户端应用。mailx是mail的功能加强版,或者mail命令直接就指向了mailx命令。
2、sendmail
和postfix
是负责发送、转发邮件的MTA,也就是一个邮件服务器。
3、bin/mail
命令会默认使用本地sendmail
发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,我们可以配置本机的默认MAT为sendmail还是postfix。而通过修改配置文件/etc/mail.rc
可以使用外部SMTP服务器,可以达到不使用sendmail/postfix而用外部的smtp服务器发送邮件的目的。
4、mail
命令是 mailx
命令的一个别名,最终指向 /bin/mailx
, 如果没有安装,使用 yum install -y mailx
进行安装。
$ which mail
/bin/mail
$ ls -l /bin/mail
lrwxrwxrwx 1 root root 22 7月 24 11:07 /bin/mail -> /etc/alternatives/mail
$ ls -l /etc/alternatives/mail
lrwxrwxrwx 1 root root 10 7月 24 11:07 /etc/alternatives/mail -> /bin/mailx
几年以前,Linux环境下可以选择的可以免费邮件服务器软件只有Sendmail,但是由于Sendmail的缺陷,一些开发者先后开发了若干种其他的邮件服务器软件。当前,运行在Linux环境下免费的邮件服务器,或者称为MTA(Mail Transfer Agent)有若干种选择,比较常见的有Sendmail、Qmail、Postfix、exim及Zmailer等等。
Postfix是一个由IBM资助下由Wietse Venema 负责开发的自由软件工程的一个产物,其目的是为用户提供除sendmail之外的邮件服务器选择。
Postfix是用来替代Sendmail的,它的配置文件比Sendmail简单得多,配置相当容易。
Linux邮件服务器Postfix,qmaill,Sendmail之比拼
https://blog.csdn.net/sahusoft/article/details/6402649
在DNS中有一种 MX(邮件地址转换 Mail eXchanger 的缩写)记录,专门指明了本域中由哪一台或几台主机来做邮件服务器,MX记录告诉MTA本域名哪台主机是邮件服务器,将邮件最终送到哪里。
一开始我想直接创建MX记录指向我的VPS 公网IP,发现阿里云上没法这么设置,提示MX记录的记录值必须是域名形式。
所以只能是先创建一个二级域名A记录,比如 mail.devgou.com 指向 公网IP,然后再创建MX记录指向 mail.devgou.com
后来发现确实是:
邮件交换(MX,Mail Exchange)记录用于指出某个DNS区域中的邮件服务器的主机名(A记录),它相当于一个指针,因此在创建MX记录之前,你必须已经为邮件服务器创建了A记录;你可以针对相同的DNS域配置多个MX记录,但是邮件服务器优先级数值越低的MX记录具有越高的优先级。
sendmail, postfix 和 dovecot 都是调用本地系统的账户和密码,所以系统用户就是邮件的用户,因此在本地系统创建常规账户即可。
一开始我单独创建了一个用于邮件的账号,后来感觉太麻烦,就用当前linux登录账号了。但最好不要用root账号,有的地方貌似root是无法远程登录的。
在vps上用的话,可能当前账号没有配置密码,因为可能从开始就一直是用密钥登录的,需要先给账号设置密码。
# 创建用户
$ useradd user
# 设置密码,会要求输入两次密码
$ passwd passwd
配置后貌似还要重启下sendmail,记不清了。
查看系统当前默认MTA
alternatives --display mta
$ alternatives --display mta
mta - 状态为自动。
链接当前指向 /usr/sbin/sendmail.postfix
/usr/sbin/sendmail.postfix - priority 30
从 mta-mailq:/usr/bin/mailq.postfix
从 mta-newaliases:/usr/bin/newaliases.postfix
从 mta-pam:/etc/pam.d/smtp.postfix
从 mta-rmail:/usr/bin/rmail.postfix
从 mta-sendmail:/usr/lib/sendmail.postfix
从 mta-mailqman:/usr/share/man/man1/mailq.postfix.1.gz
从 mta-newaliasesman:/usr/share/man/man1/newaliases.postfix.1.gz
从 mta-sendmailman:/usr/share/man/man1/sendmail.postfix.1.gz
从 mta-aliasesman:/usr/share/man/man5/aliases.postfix.5.gz
当前“最佳”版本是 /usr/sbin/sendmail.postfix。
如果系统中同时安装了 sendmail 和 postfix, 可以使用 alternatives
命令选择默认的MTA
alternatives --config mta
设置系统默认mta为postfix
alternatives --config mta
There are 2 programs which provide 'mta'.
Selection Command
-----------------------------------------------
+ 1 /usr/sbin/sendmail.postfix
* 2 /usr/sbin/sendmail.sendmail
Enter to keep the current selection[+], or type selection number: 1
输入1后回车即把MTA功能切换到postfix上,+号会显示在sendmail的行头。
在Centos7下捣鼓邮件发送软件sendmail与postfix
https://blog.csdn.net/anifans9350/article/details/78848433
ECS搭建sendmail邮件服务器
https://www.wqblogs.com/ecs%E6%90%AD%E5%BB%BAsendmail%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8/
LINUX下邮件服务器搭建(SENDMAIL)(1.0)
https://blog.csdn.net/mez_Blog/article/details/79937864
linux下搭建邮件服务器(sendmail)
https://blog.csdn.net/shicq0225/article/details/17216571
Linux攻略—Sendmail邮件服务器搭建及测试
https://blog.51cto.com/zhaoyuqiang/1224468
第15章 使用Postfix与Dovecot部署邮件系统。
https://www.linuxprobe.com/chapter-15.html
sendmail - 鳥哥的 Linux 私房菜
http://cn.linux.vbird.org/linux_server/linux_redhat9/0380sendmail.php
yum -y install sendmail sendmail-cf
安装 sendmail-cf 是为了以后使用m4命令生成sendmail的主配置文件
设置开机启动,好像安装后默认就是开机启动的
$ chkconfig --list|grep sendmail
sendmail 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
$ sudo chkconfig sendmail on
$ chkconfig --list|grep sendmail
sendmail 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
《鳥哥的 Linux 私房菜》第一版中的sendmail章节关于配置文件介绍的非常详细,每个配置文件的用途、怎么配都有说明。
http://cn.linux.vbird.org/linux_server/linux_redhat9/0380sendmail.php
sendmail安装完毕后,具有多个配置文件,所有文件都旋转在 /etc/mail
目录下. 其中主配置文件为/etc/mail/sendmail.cf
, 与它存放在同一目录下的许多文件都具有重要功能,如下所示:
sendmail.cf
:sendmail核心配置文件,位于/etc/mail/sendmail/sendmail.cf
sendmail.mc
:sendmail提供sendmail文件模板,通过编辑此文件后再使用m4工具将结果导入sendmail.cf
完成配置sendmail核心配置文件,降低配置复杂度,位于/etc/mail/sendmail.mc
如何修改sendmail配置?
由于sendmail主配置文件/etc/mail/sendmail.cf
文件的内容比较复杂,修改时的难度较大,所以我们可以先修改/etc/mail/sendmail.mc
文件,然后再将该文件的内容导入到sendmail.cf文件。
方法如下:
1、vim 编辑修改 /etc/mail/sendmail.mc
临时配置文件
2、使用 m4 sendmail.mc > sendmail.cf
命令将sendmail.mc的内容导入到sendmail.cf中。
local-host-name
:定义收发邮件服务器的域名和主机别名,位于 /etc/mail/local-host-name
access.db
:用来设置sendmail服务器为哪些主机进行转发邮件, 位于/etc/mail/access.db
aliases.db
:用来定义邮箱别名,位于/etc/mail/aliases.db
virtusertable.db
:用来设置虚拟账户,位于/etc/mail/virtusertable.db
/var/spool/mail
: 这个是邮件『收受下来之后,每个用户信件放置的目录』,一个账号会使用掉一个档案,例如你的账号为 test ,那么你的信在 Server 中时,就是 /var/spool/mail/test
这个档案了!此外,你的 POP3 的协议亦是使用这个目录中的 mailbox 做为默认的邮件取得的档案数据。
/var/spool/mqueue
: 当邮件由于对方主机的问题,或者是网络的问题,而无法送出去时,那么该封邮件将会暂时的存放在这个目录下,然后主机会每隔大约 30 ~ 60 分钟重新尝试传送一遍,通常设定在五天内该封信件还寄不出去,那就会退给原发信者了!
/var/spool/clientmqueue
: 这是新的 sendmail 8.12 版本才会出现的队列目录
vi /etc/mail/sendmail.mc
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
把Addr的值从 127.0.0.1 修改为 0.0.0.0,表示监听所有IP
LOCAL_DOMAIN(`localhost.localdomain')dnl
将 localhost.localdomain 改为自己的域名
生成正式的配置文件。
sudo m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
我执行此命令说权限不够,加 sudo
也不行,后来切换到root用户才成功。
然后重新启动 sendmail
sudo service sendmail restart
将自己的域名添加到此配置文件中:
$ cat local-host-names
# local-host-names - include all aliases for your machine here.
devgou.com
mail.devgou.com
这个档案主要用来处理一个主机同时拥有多个主机名时候的收发信件主机名问题。
这个档案的用途可大了!当你的主机拥有多个 HOSTNAME 的时候,例如我的主机拥有三、四个主机名,那么是否每个名称都可以用来做为收受信件的主机名 ( To: .. ) 呢?
并非如此!如果你的主机名为 test1.your.domain 以及 test2.your.domain ,而且这两个 hostname 您都希望可以用在收受电子邮件,果真如此,那么,你就必需将这两个名字都写入 local-host-names 这个档案当中,一个主机名字占用一行。
注意:没有写入这个档案的『你的主机名』,那信件将无法正确的寄达这部主机喔~例如:www.vbird.adsldns.org、vbird.adsldns.org这两个主机名的 ip 都是相同的,也就是指向同一台机器上。假设这台主机名预设为 vbird.adsldns.org,那在预设情况下,寄给 userid@vbird.adsldns.org 都是 ok 没有问题的!但是寄给 userid@www.vbird.adsldns.org 就会出现错误。其中原因是因为没有告诉 MTA 除了 vbird.adsldns.org 这个主机名外,还有 www.vbird.adsldns.org 也是指向这台主机上。所以寄给 userid@www.vbird.adsldns.org 会出现错误,通常就是 mail loop to me,要不然就是不允许 relay 的错误情况。
这个是『规定谁可以或不可以使用本邮件服务器的数据库』,要转成这个数据库需要藉由 makemap
以及 /etc/mail/access
档案的配合!这个档案可以说是 Sendmail 里面最重要的『用户权力管理』的数据了!在后面我们会继续说明。
默认情况下 sendmail 只转发来自 localhost 的邮件, 在 /etc/mail/access
中配置可转发来自哪些ip的邮件
在默认情况下,也就是安装完系统(sendmail服务器)不做任何设置的情况下,则只能在本机上收发邮件,网络上(局域网或Internet)的任何其它主机不能向该SMTP服务器发送邮件
或者使用 SSH 登入主机后,以 mail
这个指令来发信;
access 的语法为:
规定的范围 规定可以在sendmail上面的动作
IP/不完整IP/主机名/E-mail RELAY/DISCARD/REJECT
在『规定范围』与『规定可以在 sendmail 上面的动作』两项目之间最好以 tab 按键来隔开会比较正确!
或者这么描述:
[标签]:[参数] [制约关键字]
Connect
: 检查对象域名或IP
From
: 检查对象 送信人地址
To
: 检查对象 收信人地址
不加标签的默认为Connect
OK
: 只接收发给自己/本地的邮件. 其他的全部拒绝并向送信服务器返回错误消息(未指定制约关键字的默认值为OK)。
RELAY
: 允许接收允许转发。
REJECT
:拒绝接收/转发,向送信服务器返回错误消息。
500
: 与reject基本相同,拒绝接收/转发,并向送信服务器返回错误消息和原邮件。500 后面可以跟上要向远程主机返回的错误消息。
DISCARD
:丢弃接收到的邮件,并且不向送信邮件服务器返回任何消息。
ERROR
:拒绝接收/转发并向发信服务器返回指定的错误消息,格式参见前面的示例。
示例:
From:spam@obenrispam.com REJECT #拒绝某人发来的邮件
From:obenrispam.com REJECT #拒绝从obenrispam.com发来的所以邮件
From:spam@ REJECT #拒绝所以名字叫spam的邮件,无论来自哪个域
from:test@your-domain.com.tw REJECT
to:blah@your-domain.com.tw REJECT
示例:
cyberspammer.com 550 We do not accept mail from spammers
FREE.STEALTH.MAILER@ 550 We do not accept mail from spammers
another.source.of.spam REJECT
okay.cyberspammer.com OK
128.32 RELAY
前边的两个例子给出了 sendmail 的出错处理程序检测到的错误代码。 当一个邮件与左边列表相匹配时,这个信息会被打印到远程主机上。
下一条记录拒绝来自 Internet 上的一个特别主机的邮件 another.source.of.spam。
接下来的记录允许来自 okay.cyberspammer.com 的邮件连接, 这条记录比上面那行 cyberspammer.com 更准确。更多的准确匹配使不准确的匹配无效。
最后一行允许电子邮件从主机和 128.32 开头的 IP 地址转发。 这些主机将被允许通过这台邮件服务器前往其它邮件服务器发送邮件。
一开始我是将自己的 ip 放到配置中,允许来自这个ip的邮件被转发
Connect:localhost.localdomain RELAY
Connect:localhost RELAY
Connect:127.0.0.1 RELAY
192.168.1.1 RELAY
后来想了想,按ip配置白名单肯定只是临时方法,换了地方或使用手机发邮件时或ip是动态的不行了,肯定得按域名或发件人地址来配置白名单,于是改为:
From:ec2-user@devgou.com RELAY
但不行,每次发邮件 /var/log/maillog
日志里都报错 Relaying denied. IP name lookup failed
又改为
Connect:devgou.com RELAY
也不行。
后来发现他有复杂的匹配规则:
属于本地/被允许的发送者,则RELAY
如果在relay-domains或者access文件中列出的是域名,则对发送者的IP地址先查找/etc/hosts文件(一般是如此,如果文件/etc/host.conf采用默认配置的话),如果没有,再查找DNS。查找DNS的过程是:先做IP地址的反向DNS查找,如果能够反向查找出来,且查找出来的主机的域部分属于上面两个文件中列出的域名,再对该主机名做正向DNS查找,若查找出的IP地址(主机的A记录)与发送者IP地址相同,则允许relay邮件,这表明发送者属于被允许的发送者。
如果正反向解析不一致,则会在/var/log/maillog中记录一行警告信息说”may be forged”(可能被伪造的)。如果收信人也不在access文件列表中,则拒发邮件。
本地或者被允许的接收者,则RELAY
相对于发送者,这个就非常简单了。只要接收者的email地址的域部分被列在/etc/mail/relay-domains或者/etc/mail/access 文件中,邮件被允许接收。
最终我把 163.com RELAY
加到配置中,就ok了,难道之前发不出去都是因为收件人验证不成功?
为了验证我的想法,试验了一下,此时再给我自己的qq邮箱发个邮件,提示
Aug 2 09:52:03 ip-172-26-12-70 sendmail[13891]: x729q3MO013891: ruleset=check_rcpt, arg1=<450649025@qq.com>, relay=[220.194.45.154], reject=550 5.7.1 <450649025@qq.com>... Relaying denied. IP name lookup failed [220.194.45.154]
果真是收件人验证不成功。
难道我得把市面上所有主流的邮件服务商地址都枚举一遍吗?这也太麻烦了,继续研究。
最后我发现,只靠 /etc/mail/access
的访问控制是无法满足的,必须得上基于smtp的账号密码验证了。
修改完/etc/mail/access文件后,还需要使用makemap
命令将access文件的内容导入到access.db文件中:
sudo makemap hash access.db < access
重新启动sendmail服务即可:
sudo service sendmail restart
Sendmail relay规则及配置文件用法汇总
https://blog.csdn.net/sdulibh/article/details/51733754
如果遇到telnet 测试 邮件发送时,填完 rcpt
报错:
550 5.7.1 masi.1989@163.com... Relaying denied. IP name lookup failed [220.194.45.154]
/var/log/maillog
中能看到日志
Aug 2 08:05:13 ip-172-26-12-70 sendmail[13355]: x7285Cjx013355: ruleset=check_rcpt, arg1=<masi.1989@163.com>, relay=[220.194.45.154], reject=550 5.7.1 <masi.1989@163.com>... Relaying denied. IP name lookup failed [220.194.45.154]
Aug 2 08:05:13 ip-172-26-12-70 sendmail[13355]: x7285Cjx013355: from=<ec2-user@devgou.com>, size=0, class=0, nrcpts=0, proto=ESMTP, daemon=MTA, relay=[220.194.45.154]
最后的 IP 是我本机的出口IP
原因是 sendmail 服务器 拒绝转发邮件, sendmail是邮件中转站,需要将客户端的IP地址加入到access配置文件中。
将此 ip 配置到 /etc/mail/access
中并重启 sendmail 服务即可。
当信件想要使用我们的邮件主机来进行寄信或者是 Relay 的动作时,首先会传送 mail header 到我们的 mail server 上面,这也就是一些邮件的基本数据(如认证信息、来源IP、目标的 MTA 等等),但并不包含邮件的内容(例如信件本体、附件夹带等等的内容)。
也就是说,一封邮件基本上可以分为两大部分,分别是 Header 与 Body ,Header 仅记录邮件基本信息,Body 才是真正的信件内容。
当邮件想要进入 MTA 时,会先发送 Header 给 MTA ,MTA 判断这个 Header 的信息是可接受的之后,才后继续接受来源主机的邮件 Body 内容!如果这些基本讯息传送过来的主机信息包括在 /etc/mail/access.db 里面所记录到的主机(或IP)范围时,就可以指定底下这些动作:
RELAY
:允许该来源主机所传送过来的邮件可以被接受,然后再进行 Relay 的动作。以上面的范例为例,则 192.168.0.0/24 来源的计算机所发送来我们 Mail Server 的邮件将会被接受喔!REJECT
:若来源主机的主机名或 IP 在 REJECT 的情况下,则我们 Mail Server 将不会接受对方的邮件内容(就是 body 部分),『并且会回传一个错误或警告讯息给原发信端』喔!DISCARD
:与 REJECT 相似,亦即关闭规定范围内的计算机主机的 RELAY 功能,不过, Sendmail 会直接将该信件『丢弃』而不会『退回』!通常我们比较建议使用 DISCARD 啦!为什么呢?如果该 IP 来源传送的是广告信件,您又使用 REJECT 的话,那么两方面的邮件主机将会一再地进行 mail header 的传送,也是挺消耗带宽的!所以我们比较建议使用 DISCARD!再来,由于 access 不支持网域的写法,亦即
192.168.0.0/24
192.168.0.0/255.255.255.0
这种类型的网域写法并不能被使用的!所以,只能以 192.168.0 这种写法来达成整个网域的设定了!也就是说, access 里面大概只能支持 A/B/C Class 的网域, subnet 大概就无法达成了!只能一个一个 IP 的 Keyin 啰!编辑完这个档案之后,就可以让你的其他主机使用 Sendmail 的 Relay 功能啰!还不赖吧!
sendmail下配置/etc/mail/access文件实现邮件转发控制
https://www.it7e.com/archives/676.html
MTA 在分析收到的邮件之后,如果收件者不是本身主机的账号,则会将该信件再传送到下一个 MTA 上面,这个由 MTA 帮忙转信的功能就称为 Relay 啦。那么在这个功能当中,您有没有发现一件奇怪的事情啊!那就是:『是否任何人都可以使用我的 MTA 邮件主机服务器来传送他的邮件呢?』这个问题涉及到 Mail Server 的设定技巧了!如果设定不良的话,例如早期的 Sendmail 版本中,他就没有针对使用者来进行管制,也就是说,任何人都可以使用这样的一部邮件主机来达到信件传送的目的!这种主机我们称为『Open Relay』的电子邮件主机喔!这里请仔细的思考一下,如果我的 MTA 对于寄信的人没有一个限制的话,结果会如何呢?呵呵!没有错,结果就是任何人都可以使用你的 MTA 来发信了!那有什么好可怕的?我们在前言的地方就已经稍微说过了,那个所谓的『广告信、垃圾信件』的问题,而如果你的 MTA 没有对寄信的人作限制的话,由于任何人都可以使用你的 MTA 来发信,你的 MTA 将会变的『很笨重!』
为了避免这个问题,所以,目前所有新版的邮件主机服务器架设软件 ( Mail server packages ) 预设的情况之下,都不会对外完全的开放 Relay 的功能的!默认通常仅『针对主机 ( localhost ) 开放 Relay 的功能!』,不过,这样的 MTA 是可以收受来自 Internet 上面的,注明收件者是我们 MTA 主机内部账号的信件的,因此, MTA 在『收信』上面是没有问题的!
但是关闭了 Relay 之后,虽然可以避免掉我们 MTA 主机被当成广告信发送站,不过如此一来又造成了一些困扰!何解?因为通常我们仅针对主机,或者一些规范的 IP 或者是网段等信任的主机来开放他们的 Relay 的功能,所以在这个设定的范围内的 Client 端计算机可以自由的收发信件,至于没有规范到的 IP 来源的寄信信件,将完全的挡掉。然而万一您使用的是 ADSL 计时制的呢?又或者您是常常在外面出差的大老板,则你的 IP 将『不会固定』,完蛋啦~怎么办?既不能完全开放 Relay ,又没有固定 IP ,无解了吗?呵呵!还好,有所谓的 邮件认证机制 来帮我们解决这个困境啦!
所谓的『邮件认证机制』就是在 MTA 当中加入需要检查发信者的『账号与密码』比对的功能,当 MTA 接到来自 Client 端的传信需求时,会检查来自 Client 端的认证比对(账号密码),如果账号与密码比对正确,则开始接受信件并帮忙转信,如果比对不正确则将该 MTA 并不会接受该封信件,直接在 Client 端显示『不接受您的信件』之类的讯息喔!目前有相当多种的邮件认证机制,广为使用的是 SMTP 邮件认证这个机制。
所谓的 SMTP 邮件认证机制,顾名思义,就是在 smtp 这个协定上面动手脚的一个机制啰!亦即是在寄信的时候,(由 MUA 到 MTA 的步骤中 ),我们的 MTA 主机『一定要求检验 MUA 发信者的账号与密码!』这样的功能!果真能做到这一点的话,那么你的 MTA 就可以在经过认证之后,提供认证者的 Relay 功能,而不需要针对某些信任网域或 IP 来分别设定开放 Relay 的功能啦!因为经由『认证』的机制,你的 MTA 会去分析寄信者的相关信息,通过后才会接受信件并帮他们寄信,否则就不接受信件!呵呵!没错!就是这样!透过这样的机制,您将不需要规范 Relay 的 IP 或网段,直接交给 SMTP 邮件认证来帮你管理你发件人的 Relay 功能,从此以后,你的 Clients 就不会常常向你抱怨说 MTA 不稳定啰!
什么是 Relay 与认证机制 - 《鳥哥的 Linux 私房菜》
http://cn.linux.vbird.org/linux_server/linux_redhat9/0380sendmail.php#theory_relay_auth
sendmail默认是不会认证发信人身份的,只能通过 /etc/mail/access
做访问控制,无法满足需求。
而开启smtp认证之后,只有认证身份的用户才可以发送邮件。
SMTP 邮件认证机制 ( SMTP Authorization ) ,主要透过 cyrus-sasl 实现的。
当用户请求进入 25号端口后,sendmail调用cyrus-sasl的saslauthd
进程,saslauthd要求对方输入本地系统用户的用户名和密码,当用户 输入好后,saslauthd会去查找系统的/etc/shadow
文件,密码确认无误,放行,告诉sendmail,这个用户合法,可以使用邮件服务来 发邮件。
sendmail-8 中已经包含了 cyrus-sasl, centos 系统貌似也自带 cyrus-sasl ,不需要单独安装
$ rpm -qa|grep cyrus
cyrus-sasl-2.1.23-13.16.amzn1.x86_64
cyrus-sasl-plain-2.1.23-13.16.amzn1.x86_64
cyrus-sasl-lib-2.1.23-13.16.amzn1.x86_64
配置 /etc/sysconfig/saslauthd
$ cat /etc/sysconfig/saslauthd
# Directory in which to place saslauthd's listening socket, pid file, and so
# on. This directory must already exist.
SOCKETDIR=/var/run/saslauthd
# Mechanism to use when checking passwords. Run "saslauthd -v" to get a list
# of which mechanism your installation was compiled with the ablity to use.
MECH=shadow
# Options sent to the saslauthd. If the MECH is other than "pam" uncomment the next line.
# DAEMONOPTS=--user saslauth
# Additional flags to pass to saslauthd on the command line. See saslauthd(8)
# for the list of accepted flags.
FLAGS=
找到 MECH=
等号后面不管写什么,我们都要改成:
MECH=shadow
保存
这样saslauthd才会去找shadow文件给用户做认证。
启动 sudo service saslauthd start
或重启 sudo service saslauthd restart
saslauthd 服务
并设定开机启动
$ chkconfig --list |grep saslauthd
saslauthd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
$ sudo chkconfig saslauthd on
$ chkconfig --list |grep saslauthd
saslauthd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
注意:开启smtp认证后,saslauthd
服务必须始终开着,否则是无法登录或发邮件的。
配置 /etc/mail/sendmail.mc
找到:
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
把前面的dnl
注释去掉,变成:
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
TRUST_AUTH_MECH的作用是使sendmail不管access文件中如何设置, 都能relay那些通过EXTERNAL, LOGIN, PLAIN, CRAM-MD5或DIGEST-MD5等方式验证的邮件,注意这里是对需要relay的邮件进行验证,这点很重要,只有这样通过验证的邮件才会被 relay以防止sendmail服务器被滥用。
confAUTH_MECHANISMS的作用是确定系统的认证方式。Outlook Express支持的认证方式是LOGIN。
生成正式的配置文件。
sudo m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
如果提示无权限,先切换到root用户再执行此命令。
然后重启 sendmail
sudo service sendmail restart
centOS 下 sendmail邮件服务器搭载smtp和pop3认证的配置方法
https://blog.csdn.net/wangjialiang/article/details/6100222
Red Hat 的 SMTP 认证启用流程 - 《鳥哥的 Linux 私房菜》
http://cn.linux.vbird.org/linux_server/linux_redhat9/0380sendmail.php#security_SMTP_AUTH
sendmail开启基于sasl的smtp认证
https://www.it7e.com/archives/685.html
Aug 3 12:36:31 ip-172-26-12-70 sendmail[19441]: x73CaUa1019441: SYSERR(root): collect: Cannot write ./dfx73CaUa1019441 (bfcommit, uid=0, gid=51): Permission denied
貌似是 sendmail 没有某个文件夹的写权限,网上有的说把 /var/spool/mqueue
文件夹的所有者改为 root,但我改了还是不行。
最后是把 /var/spool/mqueue
权限改为 777 解决的
sudo chmod 777 /var/spool/mqueue
sendmail: collect: Cannot write … Permission denied-SOLVED
https://forums.gentoo.org/viewtopic-t-881873-start-0.html
sudo service sendmail start
$ sudo service sendmail start
Starting sendmail: [ OK ]
Starting sm-client: [ OK ]
验证sendmail已经在监听25端口
$ sudo netstat -anp|grep 25
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 27685/sendmail
使用sendmail -bp
或者 mailq
可以查看到邮件发送队列,里边会列出有几个邮件等待发送
$ sudo sendmail -bp
/var/spool/mqueue (1 request)
-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient-----------
x6P6ROUk010874 19 Thu Jul 25 14:27 <ec2-user@ip-172-26-12-70.ap-northeast-
8BITMIME (reply: read error from 163mx01.mxmail.netease.com.)
<masi.1989@163.com>
Total requests: 1
邮件队列的文件都保存在 /var/spool/mqueue/
文件夹内,查看此文件夹时,可以看到邮件队列内的邮件
查看 sendmail 运行状况
$ sudo service sendmail status
sendmail (pid 2680) is running...
sm-client (pid 2689) is running...
停止 sendmail
sudo service sendmail stop
删除 sendmail
rpm -e sendmail
或者
yum remove sendmail
RHEL/CentOS 7.x 即使最小安装版也自带 postfix 作为默认的邮件MTA
检查postfix是否已安装
rpm -qa | grep postfix
$ rpm -qa|grep postfix
postfix-2.10.1-7.el7.x86_64
如果没安装就使用yum安装
yum -y install postfix
RHEL/CentOS 6.x 中安装postfix时依赖的mysql版本与mysql 5.6冲突
我安装postfix之前已安装了mysql 5.6,再安装postfix时报如下错误:
正在安装:
postfix x86_64 2:2.6.6-2.15.amzn1 amzn-main 4.1 M
为依赖而安装:
mysql55-libs x86_64 5.5.62-1.23.amzn1 amzn-updates 816 k
postgresql92-libs x86_64 9.2.24-2.66.amzn1 amzn-updates 261 k
Transaction check error:
file /usr/lib64/mysql/libmysqlclient.so.18 from install of mysql55-libs-5.5.62-1.23.amzn1.x86_64 conflicts with file from package mysql-community-libs-5.6.44-2.el6.x86_64
yum install 安装时使用 --exclude
排除mysql相关依赖也不行,安装还是会失败。
查看系统当前默认MTA
alternatives --display mta
如果系统中同时安装了 sendmail 和 postfix, 可以使用 alternatives
命令选择默认的MTA
alternatives --config mta
Postfix 教学文档
https://wiki.centos.org/zh/HowTos/postfix
第二十二章、邮件服务器: Postfix
http://cn.linux.vbird.org/linux_server/0380mail.php
Linux系统下邮件服务器的搭建(Postfix+Dovecot)
http://lomu.me/post/linux-email-server
dovecot是一款能够为Linux系统提供IMAP和POP3电子邮件服务的开源服务程序,安全性极高,配置简单,执行速度快,而且占用的服务器硬件资源也较少,因此是一款值得推荐的收件服务程序。
检查dovecot是否已安装
rpm -qa | grep dovecot
如果已安装则会显示具体版本信息
$ rpm -qa|grep dovecot
dovecot-2.2.36-3.el7_7.1.x86_64
如果没安装就使用yum安装
yum -y install dovecot
dovecot的主配置文件在 /etc/dovecot.conf
或 /etc/dovecot/dovecot.conf
根据版本不同,有的是配置文件都在 /etc/dovecot/dovecot.conf
中,有的是分开到 /etc/dovecot/conf.d/
目录下 ,所以在主配置文件中找不到的配置项可以去 conf.d
子目录中找找。
主配置文件的最后有一行 include ,所以,放在 /etc/dovecot/conf.d/
目录下的所有 *.conf
配置文件都会被加载生效。
!include conf.d/*.conf
Centos7+Postfix+Dovecot实现邮件收发(这个配置讲的很详细)
https://blog.51cto.com/gaowenlong/1884841
编辑/etc/dovecot/dovecot.conf
配置文件:
1、去掉 protocols
前的注释
# Protocols we want to be serving.
protocols = imap pop3 lmtp
可能版本不同,我看网上有的是 protocols = imap imaps pop3 pop3s
, 但我这里只有 protocols = imap pop3 lmtp
, 也不知道能不能随便加其他协议
2、启用端口监听
listen = *,::
vim /etc/dovecot/conf.d/10-auth.conf
网上有的博客里让在 dovecot.conf 中找此配置项,结果根本找不到。
修改如下两行配置:
disable_plaintext_auth = no
auth_mechanisms = plain login
vim /etc/dovecot/conf.d/10-ssl.conf
ssl 改为 no
ssl = no
这个配不配都行,无关紧要.
vim /etc/dovecot/conf.d/10-logging.conf
添加
info_log_path = /var/log/dovecot_info.log
debug_log_path = /var/log/dovecot_debug.log
这个配置文件主要是用来设置怎么存放收到的邮件的,最重要的一个配置项是 mail_location
, 仔细研究后发现它还有自己一套语法。
详见 https://wiki2.dovecot.org/MailLocation
$ cat 10-mail.conf
##
## Mailbox locations and namespaces
##
# Location for users' mailboxes. The default is empty, which means that Dovecot
# tries to find the mailboxes automatically. This won't work if the user
# doesn't yet have any mail, so you should explicitly tell Dovecot the full
# location.
#
# If you're using mbox, giving a path to the INBOX file (eg. /var/mail/%u)
# isn't enough. You'll also need to tell Dovecot where the other mailboxes are
# kept. This is called the "root mail directory", and it must be the first
# path given in the mail_location setting.
#
# There are a few special variables you can use, eg.:
#
# %u - username
# %n - user part in user@domain, same as %u if there's no domain
# %d - domain part in user@domain, empty if there's no domain
# %h - home directory
#
# See doc/wiki/Variables.txt for full list. Some examples:
#
# mail_location = maildir:~/Maildir
# mail_location = mbox:~/mail:INBOX=/var/mail/%u
# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
#
# <doc/wiki/MailLocation.txt>
#
#mail_location =
默认情况下 mail_location
配置项是空的, 此时 dovecot 会尝试自动发现存储邮件的文件夹。
按如下顺序查找:
~/mdbox/
~/sdbox/
~/Maildir/
~/mail/.imap/
~/mail/inbox
~/mail/mbox
~/Mail/.imap/
~/Mail/inbox
~/Mail/mbox
注意:
1、自动检测机制不会自动创建文件夹,如果想使用哦上面的某个文件夹作为收信文件夹,必须先手动创建好。
2、.imap
是一个目录, inbox
和 mbox
是文件。
使用Outlook始终无法连接上邮件服务器,不知道为啥。
后来发现当在 Outlook 中使用 imap 协议连接时, /var/log/maillog
中会打印出如下日志:
Aug 1 10:11:16 ip-172-26-12-70 dovecot: imap(mailuser): Error: user mailuser: Initialization failed: Namespace '': Mail storage autodetection failed with home=/home/mailuser
Aug 1 10:11:16 ip-172-26-12-70 dovecot: imap(mailuser): Error: Invalid user settings. Refer to server log for more information.
才知道原来一直有错。
原因是收信的文件夹没配置,这时 dovecot 会自动检测收信文件夹,详见上面内容,我们只需创建一个 dovecot 会自动检测的文件夹即可
mkdir -p ~/mail/.imap
dovecot mail storage auto detection failed [closed]
https://serverfault.com/questions/854520/dovecot-mail-storage-auto-detection-failed
outlook 连接时 /var/log/maillog
日志中报如下权限错误
Aug 2 03:21:50 ip-172-26-12-70 dovecot: imap(ec2-user): Error: chown(/home/ec2-user/mail/.imap/INBOX, group=12(mail)) failed: Operation not permitted (egid=500(ec2-user), group based on /var/mail/ec2-user - see http://wiki2.dovecot.org/Errors/ChgrpNoPerm)
Aug 2 03:21:51 ip-172-26-12-70 dovecot: imap(ec2-user): Error: chown(/home/ec2-user/mail/.imap/INBOX, group=12(mail)) failed: Operation not permitted (egid=500(ec2-user), group based on /var/mail/ec2-user - see http://wiki2.dovecot.org/Errors/ChgrpNoPerm)
其中 ec2-user 是我登录邮箱用的账号,原因在日志给出的链接里说的很清楚。dovecot 试图拷贝 /var/mail/ec2-user
文件夹的组(也就是mail)到邮件索引目录 /home/ec2-user/mail/.imap/INBOX
,这是发生了权限错误。
https://wiki2.dovecot.org/Errors/ChgrpNoPerm
解决方法:
sudo chmod 0600 /var/spool/mail/*
我也不太懂为啥改这个目录的权限就好了,反正改了之后不报这个错了,有兴趣可再研究下。
RHEL6+Postfix+Dovecot相关配置问题解决
https://linux.cn/blog-21117-5952.html
启动dovecot
sudo service dovecot start
配置开机启动
$ sudo chkconfig --list dovecot
dovecot 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
$ sudo chkconfig dovecot on
$ sudo chkconfig --list dovecot
dovecot 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
验证 dovecot 已经开始监听 imap的 143 接口 和 pop3 的110 接口
$ sudo netstat -anp|egrep ':25|:110|:143'
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 28182/dovecot
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 28182/dovecot
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 4640/sendmail
tcp 0 0 :::110 :::* LISTEN 28182/dovecot
tcp 0 0 :::143 :::* LISTEN 28182/dovecot
一种快速有效的测试sendmail
安装是否正确的方法就是使用telnet
命令直接直接登录服务器的25端口,并收发邮件以及对sendmail进行测试。
可以在服务器上测试telnet,也可以远程测试,我这里是在vps搭建好sendmail后远程测试的
在本地机器上, telnet
远程服务器的 25
端口
$ telnet xx.xx.xx.xx 25
Trying xx.xx.xx.xx...
Connected to mail.devgou.com.
Escape character is '^]'.
220 ************************************************************************************************************
helo hi # 打招呼,测试连接
250 ip-172-26-12-70.ap-northeast-1.compute.internal Hello [220.194.45.154], pleased to meet you
mail from:"noreply"<noreplyaaadf@devgou.com> # 发件人信息
250 2.1.0 "noreply"<noreplyaaadf@devgou.com>... Sender ok
rcpt to:masi.1989@163.com # 收件人信息
250 2.1.5 masi.1989@163.com... Recipient ok
data # 开始写邮件
354 Enter mail, end with "." on a line by itself
subject: test_mail subject # 邮件标题
test mail body,hahahahah! # 邮件正文
. # 输入.后回车结束编写
250 2.0.0 x718eaMh008255 Message accepted for delivery
quit # 退出telnet
221 2.0.0 ip-172-26-12-70.ap-northeast-1.compute.internal closing connection
Connection closed by foreign host.
我的 163 邮箱是真的可以立即收到邮件的,如下:
ECS搭建sendmail邮件服务器
https://www.wqblogs.com/ecs%E6%90%AD%E5%BB%BAsendmail%E9%82%AE%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8/
参考这篇文字中的操作方法,主要是账号密码还得base64编码,太麻烦了,就没搞
centOS 下 sendmail邮件服务器搭载smtp和pop3认证的配置方法
https://blog.csdn.net/wangjialiang/article/details/6100222
Outlook 中添加新账户, 账号就是 linux系统账号@邮件服务器域名
然后选择 IMAP/POP,继续填写账号信息
密码就是 linux账号的密码
发信和收信服务器都填我们DNS解析中配置的 MX
记录指向的域名 mail.devgou.com
,不使用ssl
可连接成功。
然后我在我的华为手机上用163邮箱给 自己搭建的邮箱 ec2-user@devgou.com
发一封邮件,在outlook马上就收到了,如下
/var/log/maillog
中能看到日志
Aug 2 03:51:24 ip-172-26-12-70 sendmail[12307]: x723pNHS012307: from=<masi.1989@163.com>, size=1369, class=0, nrcpts=1, msgid=<mm08nv-lh6xdi67boi726eyg2sflau6-3tvbszqg9o39-cjsj0sxwg7m4-z6i9wxri56pz-vq20v5-orxf6m3wzc93-8fy95r1w, proto=ESMTP, daemon=MTA, relay=m12-17.163.com [220.181.12.17]
Aug 2 03:51:24 ip-172-26-12-70 sendmail[12308]: x723pNHS012307: to=<ec2-user@devgou.com>, delay=00:00:01, xdelay=00:00:00, mailer=local, pri=31589, dsn=2.0.0, stat=Sent
在华为手机上连接邮箱
然后我用自建邮箱编写一封邮件发到我的163邮箱
延迟比较大,过了好几分钟才收到
/var/log/maillog
中日志
Aug 2 04:12:48 ip-172-26-12-70 sendmail[12435]: x7249hZw012432: to=<masi.1989@163.com>, ctladdr=<ec2-user@devgou.com> (500/500), delay=00:03:04, xdelay=00:03:04, mailer=esmtp, pri=120588, relay=163mx00.mxmail.netease.com. [220.181.14.149], dsn=4.0.0, stat=Deferred: Connection reset by 163mx00.mxmail.netease.com.
Aug 2 04:34:35 ip-172-26-12-70 sendmail[12580]: STARTTLS=client, relay=163mx02.mxmail.netease.com., version=TLSv1/SSLv3, verify=FAIL, cipher=AES256-GCM-SHA384, bits=256/256
Aug 2 04:34:37 ip-172-26-12-70 sendmail[12580]: x7249hZw012432: to=<masi.1989@163.com>, ctladdr=<ec2-user@devgou.com> (500/500), delay=00:24:53, xdelay=00:00:06, mailer=esmtp, pri=210588, relay=163mx02.mxmail.netease.com. [220.181.14.155], dsn=2.0.0, stat=Sent (Mail OK queued as mx35,VcCowAAnvGxavUNdqHzPdQ--.47807S3 1564720477)
可以看到发了两次才成功,第一次163邮件服务器给来了个 Connection reset
mail
命令是 Linux 下一个非常轻巧的交互式的命令行邮件客户端,基于 Berkeley Mail 8.1,提供 MIME、MAP、POP3、SMTP 和 S/MIME 等扩展
mail 默认是调用本机 MTA 发送邮件的,这意味着需要在本机上安装 sendmail 或 postfix 或 exim 或…,配置比较麻烦,而且会带来不必要的资源占用。
通过修改配置文件,可以达到不使用 sendmail 而用外部 smtp 服务器发送邮件的目的。
语法:
mail [-s subject] [-c cc-addr] to-addr
如果需要发送给多个收件人,收件人之间用逗号分隔,例如:mail -s "主题" 123456@qq.com,888888@qq.com
参数:
-b address 指定密件副本的收信人地址
-c address 指定副本的收信人地址
-f [file] 读取指定邮件文件中的邮件
-i 忽略终端发出的信息
-I 使用互动模式
-n 启动时禁止读取 /etc/mail.rc
-N 阅读邮件时,不显示邮件的标题
-s subject
指定邮件的主题
-r 发件人地址
指定发件人信息
-t 要发送的消息应包含带有 To:、Cc:、或 Bcc: 字段的消息头,在命令行上指定的收件人将被忽略。
-u user 读取指定用户的邮件
-v 执行时,显示详细的信息
-V 显示版本信息并退出
RHEL/CentOS 中 yum 安装 mailx 后就有了mail命令
yum install -y mailx
我安装 mailx 后,自动也给安装了 sendmail
bin/mail
会默认使用本地sendmail
发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,而通过修改配置文件/etc/mail.rc
可以使用外部SMTP服务器,可以达到不使用sendmail而用外部的smtp服务器发送邮件的目的。
如果不安装 sendmail,可以配置一个第三方邮件账号,使用第三方邮件账号来发送邮件
修改配置文件 /etc/mail.rc
$ vi /etc/mail.rc
# 在文件末尾添加以下信息
set from=xxx@163.com # 发送的邮件地址
set smtp=smtp.163.com # 发送邮件服务器
set smtp-auth-user=xxx@163.com # 发件人账号
set smtp-auth-password=xxx # 发件人密码(如开启了客户端授权码,这里要填授权码)
set smtp-auth=login # 邮件认证方式
配置成功后,就可以使用外部 smtp 服务器发送邮件了。
直接把当前 shell 当成编辑器来用,可以输入正文,当邮件正文输入完成后,需要按 Ctrl+D
结束输入。
$ mail -s "邮件主题" 123456@qq.com
hello # 邮件正文
world # 邮件正文
第一行是输入的命令,-s表示邮件的主题,后面则是邮件的接收人,输入完这行命令后回车,会进入邮件正文的编写,我们可以输入任何文字,比如上面的两行。
当邮件正文输入完成后,需要按CTRL+D结束输入,此时会提示你输入Cc地址,即邮件抄送地址,没有直接回车就完成了邮件的发送。
echo 后面的是邮件的正文
echo "邮件正文" | mail -s "邮件主题" 123456@qq.com
以文件 file.txt 的内容为邮件正文发送:
cat file.txt | mail -s "邮件主题" 123456@qq.com
echo "测试邮件正文" | mail -s "mail命令测试主题" masi.1989@163.com
以文件 file.txt 的内容为邮件正文发送。
mail -s "邮件主题" 123456@qq.com < file.txt
多个收件人,收件地址只需要用英文逗号隔开即可:
echo "This is message body" | mail -s "This is Subject" someone@example.com,someone2@example.com
使用 sendmail 邮件服务器的好处就是,可以随意指定发件人信息。
为什么呢?
sendmail 中默认情况下,本机寄出的邮件可以不用经过 SMTP 的手续,将直接以 sendmail 的功能寄出,这也就是说,无论如何,来自主机内部的信件都将被传送出去!这也是为什么有的时候明明你的 sendmail 没有正常的启动,但是在主机上面直接以 mail 这个指令却还是可以将邮件送出的原因
命令中增加 -r
参数定义发件人:
echo "测试邮件正文" | mail -s "mail命令测试主题" -r "noreply<noreply@devgou.com>" masi.1989@163.com
收到的邮件如下:
Linux 命令(网络管理 - mail/mailx)
https://blog.csdn.net/liang19890820/article/details/53115334
Linux 使用 mail/mailx 发送邮件
http://www.zkea.net/codesnippet/detail/post-74.html
Linux下使用mail命令发送邮件
https://blog.51cto.com/ityunwei2017/1713425
「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」
上一篇:Linux系统下邮件服务器的搭建(Postfix+Dovecot)
下一篇:Ewebguru:印度VPS/2核/3G内存/10G SSD/不限流量/100M带宽/VMware/月付$11.5/管理型VPS/适合当地做站
求科学离线插件,谢谢!34401355@qq.com
评:改版梅林固件安装SS【shadowsocks】科学上网插件教程求科学离线插件,谢谢!!!
评:改版梅林固件安装SS【shadowsocks】科学上网插件教程