打开 /etc/postfix/master.cf,找到 submission 一行,将注释打开,其他参数也可按照需要打开,如下:

submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
#  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_tls_auth_only=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=
#  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING

重启 postfix 服务,再次尝试发送邮件,查看日志,可以看到已经在使用 465 端口了。

结论就是:如果你想要搭建邮件服务器,不管是多大规模,千万别选腾讯云。血的教训。

为啥呢?
1.腾讯云封了 25 端口,当然仅仅是封 25 端口,问题并不大,目前主流的邮箱服务商都支持邮件的加密传输,25 端口本来也是用不到的,用 465 端口或者 587 端口就好了。想法的确很好,但是我们都能想到的,腾讯又怎么会想不到?接下来才是腾讯的杀招:
2.QQ 邮箱只能通过 25 端口来连接。试想一下,你从零基础学起,看了无数教程,排除了无数故障,不知道白了多少根头发才搭建成的邮件服务器,到头来无法给 QQ 邮箱发邮件,一言难尽。

这里还发现一个新的问题,QQ 邮箱不支持 465 端口和 587 端口,安全吗?
这里来说一下这段时间以来,对三个端口的理解:
25 端口,就是最早的 SMTP 协议端口,是不支持加密传输的;
587 端口是 SMTP 协议增加了加密传输之后启用的端口,端口的连接过程和 25 端口是相同的,但是可以通过 STARTTLS 命令启用加密传输;
465 端口是从连接开始就要求是全程加密传输的。

我们来检验一下,首先我们找到 QQ 邮箱的 SMTP 服务器:

$ nslookup -query=mx qq.com
Non-authoritative answer:
qq.com    mail exchanger = 20 mx2.qq.com.
qq.com    mail exchanger = 30 mx1.qq.com.
qq.com    mail exchanger = 10 mx3.qq.com.
...

我们看到有三个服务器,其中 mx3.qq.com 的优先级最高,我们来连接 mx3.qq.com 的 465 端口,实际上,三个服务器的响应都是一致的,因为 465 端口是全程加密连接,所以我们用 openssl 来连接,如下:

$ openssl s_client -connect mx3.qq.com:465 -crlf -4
40CC6696657F0000:error:8000006E:system library:BIO_connect:Connection timed out:../crypto/bio/bio_sock2.c:125:calling connect()
40CC6696657F0000:error:10000067:BIO routines:BIO_connect:connect error:../crypto/bio/bio_sock2.c:127:
connect:errno=110
$ openssl s_client -connect mx3.qq.com:465 -crlf -6
407C4295987F0000:error:80000065:system library:BIO_connect:Network is unreachable:../crypto/bio/bio_sock2.c:125:calling connect()
407C4295987F0000:error:10000067:BIO routines:BIO_connect:connect error:../crypto/bio/bio_sock2.c:127:
connect:errno=101

结果和我们在 postfix 日志中看到的一致,ipv4 地址超时,ipv6 地址无法连接,QQ 邮箱根本就不开放 465 端口,这也是很多人将 postfix 改成通过 465 端口发送邮件之后,仍然无法给 QQ 邮箱发邮件的原因。我们再尝试 587 端口,如下:

telnet mx3.qq.com 587
Trying 120.241.17.157...
Trying 2402:4e00:8010::b0...
telnet: Unable to connect to remote host: Network is unreachable

587 端口同样无法连接,再尝试 25 端口,如下:

$ telnet mx3.qq.com 25
Trying 120.241.17.157...
Connected to mx3.qq.com.
Escape character is '^]'.
220 newxmmxsza11-4.qq.com MX QQ Mail Server.
ehlo mx3.qq.com
250-newxmmxsza11-4.qq.com
250-STARTTLS
250-8BITMIME
250-SIZE 73400320
250 OK
quit
221 Bye.
Connection closed by foreign host.

我们看到 25 端口支持 STARTTLS 命令,也就是说 QQ 邮箱在 25 端口上做了 587 端口的事情,即保障了传输安全,又让 587 端口下了岗。这就是腾讯的个性,走出了自己的路,让别人无路可走。

看来只有申请解封 25 端口这一条路了,我们看看腾讯云是这样说的:

为了提升腾讯云 IP 地址发邮件的质量,默认限制云服务器 TCP 25 端口连接外部地址,如果您没有在云上部署邮件服务,该限制不会影响您的服务;如果您需要使用邮件服务,我们诚挚地向您推荐腾讯企业邮箱。如果您一定要使用云主机向外连接 TCP 25 端口,请确保 TCP 25 端口仅用来连接第三方 SMTP 服务器,从第三方 SMTP 服务器外发邮件。如发现您使用云主机直接 SMTP 发送邮件,腾讯云有权永久封禁 TCP 25 端口,并不再提供相关服务。

企业邮箱这个提议,看的我都有点动心了,省时省力,不用担心服务器被黑,不担心垃圾邮件,虽然花点钱,但是值。而且不想花钱的也可以选择免费版。但我没有企业,更没有营业执照,想买企业邮箱,钱都花不出去。

我们把 SMTP 协议看作是一个邮局,它有两个窗口,一个窗口面向发邮件的个人,一个窗口面向其他邮局。
假设场景:用户甲、乙,邮局子、丑,甲给乙写一封信,然后拿着信来到子的个人窗口,子要求甲进行身份验证,验证成功,子收下信,然后将信送达乙所在的邮局丑的邮局窗口,丑核实子的邮局资质,以及乙是否是丑的客户,核实成功,丑收下信,然后投递到乙的邮箱。
我们看到个人窗口和邮局窗口功能不同,职责不同,对客户的要求也不同,在 SMTP 协议上都使用同一个端口。在实现上,邮箱服务商通常通过不同的域名将两个窗口拆开。
上面我们看到 mx3.qq.com 就是 QQ 邮箱的对邮局窗口,不收个人信件,而我们所熟知的 smtp.qq.com 是个人窗口,不收其它邮局发来的信件,我们来看下 QQ 邮箱个人窗口提供的服务,我们尝试连接 465 端口,如下:

$ openssl s_client -connect smtp.qq.com:465 -crlf
...
220 newxmesmtplogicsvrszc9.qq.com XMail Esmtp QQ Mail Server.
ehlo smtp.qq.com
250-newxmesmtplogicsvrszc9.qq.com
250-PIPELINING
250-SIZE 73400320
250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
mail from: <xxxx@yyyy.com>
503 Error: need EHLO and AUTH first !
405CE295207F0000:error:0A000126:SSL routines:ssl3_read_n:unexpected eof while reading:../ssl/record/rec_layer_s3.c:308:

连接成功后,会看服务器返回 220 之前有好大一段的证书相关的内容,像我这样的业余人士,直接忽略就好了。
我们看到 smtp.qq.com 返回了 250-AUTH LOGIN PLAIN XOAUTH XOAUTH2,表明它提供 4 种身份验证服务,在这里身份验证是必须的,不登陆不能发送邮件,会被拒绝,而且要求发件人和登陆的用户必须为同一人
同样我们可以验证 25 和 587 端口都能够连接,提供的服务也是相同的。

而 mx3.qq.com 则不提供身份验证服务,个人用户如果跑到这里来发邮件,人家可不会给你好脸色。在这里,它会对发邮件的邮局进行资质认证,以确保不是冒名邮件或垃圾邮件,同时要求收件人必须时本邮局的客户。

腾讯云解封 25 端口的条件,简单来说,腾讯云允许你作为一个普通用户去寄信,而不能提供邮箱服务。也就是说,你可以连接 smtp.qq.com,而 smtp.qq.com 支持 465 和 587 端口,没有开 25 端口的必要。你不可以连接 mx3.qq.com,即便是开了 25 端口也不可以。

所以,解封 25 端口这条路也被堵死了。

上次的解决方案中我们安装了 xinput 来解决问题,但还是存在疑问:为什么新安装的系统中会丢失 xinput 组件?以及为什么没有 xinput 的情况下 gdm3 可以正常启动?
让我们做个实验,删除 xinput 然后写一个脚本来替代它:

$ sudo apt remove xinput
$ sudo vim /usr/bin/xinput
# !/bin/sh
exit 0;
$ sudo chmod +x /usr/bin/xinput
$ sudo systemctl restart lightdm

一切正常,进入桌面没有发现任何异常,可见 xinput 已经被废弃了,而 unity-settings-daemon 源码没有及时更新。

在上面的解决方案中,我们实现一个什么事情都不做,仅仅返回 0 的程序。其实在我们的系统中就有这样一个程序,完全不需要自己写一个,那就是 /usr/bin/true,让我们来试一下:

$ sudo rm /usr/bin/xinput
$ sudo ln -s true /usr/bin/xinput
$ sudo systemctl restart lightdm

完美替代。

Ubuntu Unity 22.04 用了一段时间,发现系统休眠时风扇声音特别大,走近一看黑屏了,还没等看清楚屏幕上写的是什么,屏幕又恢复成了登陆的界面,登录进入系统一切正常。
虽然说不影响使用,但风扇总这么转也不环保不是?听着风扇转的声音我有点心疼家里的电费和我的电脑。终于在一次黑屏时抓拍到了屏幕的画面。
休眠时黑屏.jpg
这回终于可以从容的辨认屏幕上的文字了,如下:

[42772.370565] Bluetooth: hci0: SSR or FM download time out
[42772.370573] PM: dpm_run_callback(): acpi_subsys_suspend+0x0/0x60 returns -110
[42772.370592] hci_uart_qca serial0-0: PM: failed to suspend: error -110
[42772.370600] PM: Some devices failed to suspend, or early wake event detected

虽然还是看不懂为什么,但好像和蓝牙有关,正好目前还用不到蓝牙的功能,关闭好了。
蓝牙关.jpg

完美解决。

Linux 下的输入法选择真的不多。以前 Linux 自带的输入法根本就不好用,直到搜狗拼音 Linux 版本的出现。

搜狗拼音 Linux 版本的确很好用,但问题也很明显,占内存太大了。使用时间一长,内存就都占满了。当时电脑是 8G 的内存,系统和其他应用也就占 3G 左右的内存,其余都被搜狗输入法占用了。经常是电脑用着用着,就变得非常卡,几乎不可操作,鼠标的移动都存在延迟。此时如果不想重启,唯一能做的就是 ALT+CTRL+F1-F6,启动 tty1-6 控制台,输入用户名,密码登陆,但也要看运气,经常是用户名输入完了,控制台光标闪烁一阵,重启了,再一次重新输入用户名,基本上 10 分钟一般都能登陆了,然后找到搜狗输入法的进程,杀掉,电脑又恢复正常了。为避免电脑卡到无法操作的地步,一般来说有两个办法:
1、打开系统监视器,随时查看内存占用,一旦情况不好就直接杀掉搜狗进程;
2、开机时就登陆一个 tty1-6 控制台,这样可以在系统卡的时候快速进入到控制台,而不用等 10 分钟。

去年,给电脑装 Ubuntu Unity 21.04 时,找到了百度输入法 Linux 版,但官网上只明确表示支持到 Ubuntu 19.10,不过在 21.04 上也可以正常安装,只是电脑重启之后,大概十次仅有一次可以正常使用,体验和搜狗差不多;其余的几次是无法进行输入操作的,输入法候选词列表有时不显示,有时是显示其它输入法的候选词列表,但候选词列表却是乱码。

最近安装了 Ubuntu Unity 22.04 之后,发现系统自带的输入法 IBus 智能拼音 1.12.1 也已经很好用了。
候选词列表.png

关于,版权处有点小失误。
IBus 智能拼音 1.12.1.jpg

对于拼音输入法来说,模糊音是必不可少的功能。
IBus 智能拼音2.jpg

就综合体验来说,比起上面的搜狗和百度好很多了。
当然也还有瑕疵,就是输入法候选词列表的位置经常跑到屏幕外面去,可能是高清屏还没有作适配。