今日(きょう)(さわ)がしく(たわむ)れ生きる人々の漫画映画(まんがえいが)

Pleroma-fe 的 emoji 放大配置(?)

(虽然我也不知道具体是怎么样的 (Pleroma 有 OTP 安装以及从源码安装,我的是 OTP ,我不知道源码安装的会怎样

更新!

可以使用 pleroma-mod-loader 以及搭配的 pleroma-mod-custom-styles !会省事一些,而且功能会多一些(例如用户可以方便地自行取消 css)。(但是要找 index.html 还是要按下面方法?)

修改的准备

方法一:找到 pleroma-fe,然后在 static 目录里修改

我印象中,源码安装的 pleroma-fe 是在安装目录中一个名为 private 的目录里的。在 OTP 里,是在安装目录里 lib/pleroma-{版本号}/priv/static 目录下。由于一般来说最好不要直接更改这里的内容,所以我们可以把需要更改的文件(index.html)复制到 pleroma 安装时指定的 static/static 目录下,然后再更改 static/static 目录里的文件。后面创建的 custom 目录以及 custom/custom.css 也在这里创建。

这种方法要注意后续 pleroma 升级的时候要重新再复制、改动一遍 index.html 文件,不然可能会有白屏等情况。

方法二:使用手动安装的 pleroma-fe

(用于找不到 pleroma-fe在哪儿的情况

手动安装 pleroma-fe

(而且我实在是找不到 pleroma-fe 原来存放在哪里 T_T ,只好再安装一次。如果可以找到原来 pleroma-fe 的存放位置的可以尝试直接在原处改动。 (本教程需要 pleroma 版本 2.1.0 或以上,因为需要 frontend 安装功能

注意,这种方法在 pleroma 更新时可能需要手动更新前端(特别是 admin-fe),更新方法是把:

sudo -Hu pleroma ./bin/pleroma_ctl frontend install pleroma-fe
sudo -Hu pleroma ./bin/pleroma_ctl frontend install admin-fe

这两个命令再执行一遍就行了。

# 进入 pleroma 的目录,如果你安装到了其他目录请更改为相应的目录
cd /opt/pleroma
# 接下来安装 pleroma-fe
sudo -Hu pleroma ./bin/pleroma_ctl frontend install pleroma-fe
# 安装管理界面的前端,如果你使用网页端的管理界面的话一定要这一步(血的教训 T_T
sudo -Hu pleroma ./bin/pleroma_ctl frontend install admin-fe

要注意上面的命令输出的结果,比如可能输出为 Frontend pleroma-fe (develop) installed to /var/lib/pleroma/static/frontends/pleroma-fe/develop,这里要注意最后一部分的 /pleroma-fe/develop,这部分信息在下面设置 pleroma 时要用到。整段的路径在最后修改时要用到: /var/lib/pleroma/static/frontends/pleroma-fe/develop

设置 pleroma 前端为手动安装的 pleroma-fe

如果是可以使用网页段控制界面的话,可以进入如图的 tab ,根据上面的命令输出结果在如图的输入框内填入相应信息。确认 Admin 部分填写正确后点击 submit 按钮提交。 Frontend TabFrontend Settings

开始修改 pleroma-fe

根据上面的输出结果执行命令:

cd /var/lib/pleroma/static/frontends/pleroma-fe/develop

这个时候目录下有一个 index.html ,修改 index.html:

sudo -Hu pleroma nano index.html

然后往后找,一直找到 </head> ,在 </head> 前加入:

<!-- 如果是原有基础上修改的加入下面这行 -->
<link href=/static/custom/custom.css rel=stylesheet>
<!-- 如果是手动安装 pleroma-fe 的加入下面这行 -->
<link href=/custom/custom.css rel=stylesheet>

保存并退出。

现在创建上面用到的 custom.css:

sudo -Hu pleroma mkdir custom
sudo -Hu pleroma nano custom/custom.css

用 nano 往 custom.css 里加入:

.emoji:hover {
    transform: scale(2);
    transition: all .2s ease;
}
.emoji {
    transition: all .2s ease;
}

(这个是抄自 mastodon 站点 acg.mn 的样式) (上面的 scale(2) 是放大的倍数,如果觉得太大了可以尝试一下 scale(1.2) 等其它的数字; .2s 是放大动画的时间,可以改成其他的值,如: 0.15s 1.0s 等)

然后保存并退出可能就可以了?

高中衔接-汇编入门(待续)

很多人都在高中里学过了程序框图,但是到大学里学程序语言时仿佛又要重新学起。其实汇编语言和程序框图非常相似,经过一定的删减,汇编语言甚至可以与程序框图一一对应。本文尝试对这样的精简汇编语言做一个教程,希望能够作为 C 语言快速入门的一个衔接。

注意:只看本文的话,大概率是写不出像样的汇编程序的,因为本文不会讲述汇编语言的语法,甚至会避免一些随意的关键字的使用。本文的目的只是为 C 语言快速入门提供一个起点而已。

一些基本概念 Part 1

二进制、十六进制

这个在高中似乎有,这里不详细讲。

指令

和中学的程序框图的框框们一模一样。一条指令对应一个框框。通常我们会把这样的_框框_写成一列。

在下面的类比中,你可以把指令当作“你”所能做的事情或是“你”所计划做的事情。

寄存器

如果高中学的程序框图里有变量的概念,那么理解起来方便:寄存器就相当于变量。

更详细地解释一下的话:寄存器好比一个个小盒子。 1. 你的桌子上能摆的下的盒子就那么几个:寄存器的数量有限; 2. 你可以往盒子里一整块东西把它填满,也可以放半块东西放两次:寄存器里放数字,空想的例子:你可以放 1020 也可以放 1020

内存、地址

寄存器数量有限,那么我们可以把更多的数字用铅笔写在一本笔记本里。那么这个笔记本就相当于内存。一般来说,笔记本要翻来翻去,寄存器更加触手可及。

为了更有效地记笔记,内存这个笔记本每一页都折出了格子。比如说,我想记住 pi 这个数字,由于寄存器数量有限,我们把它写在笔记本里:每页有 80 个格子,从第 8 页 76 格开始写:

| —- | —- | | 第 8 页 76 格 | 3 | | 第 8 页 77 格 | 1 | | 第 8 页 78 格 | 4 | | 第 8 页 79 格 | 1 | | 第 8 页 80 格 | 5 | | 第 9 页 01 格 | 9 | | 第 9 页 02 格 | 2 | | 第 9 页 03 格 | 6 | | …. | … |

这里我们要引入地址的概念。我们把“第 8 页 76 格”这个描述变成一个数字:

8 * 80 + 76 = 716
页数 * 每页格子 + 这一页的第几个格子 = 地址

716 就是我们的 pi 的“地址”。这很容易理解,“第 8 页 76 格”就是整本笔记本的第 716 格。我们大可以把 716 放到我们的一个寄存器里,之后再去找我们的 pi。

注:计算机中的确有“页”的概念,但和我们这里的有所不同:计算机里是先有一大堆格子,再有把格子整理起来的“页”的。

开始!指令介绍 Part 1

MOV

MOV 指令可以让你把一个数字复制一份,然后放到寄存器或是内存里,覆盖原有的内容。

通常来说MOV指令有一些限制,但是本文并不想涉及这些内容。

ADD, SUB, MULDIV

熟悉吗?ADD, SUB, MUL, DIV,分别对应加减乘除。加减乘除的结果必须马上放在寄存器或是内存里,你可以指定它放在哪里,也可以等它放好之后用 MOV 放到自己想放的地方。

JMP

跳转到哪里执行。这相当于程序流程图中的一个箭头,指向某个框框,程序流程就从那个框框继续下去。

CMP / JZ, JC, JGJL

简单起见,我们将这多个指令放在一起。流程图中,这样的框框并不少见:

“这个大于等于那个吗?” --> YES:一个箭头指向某个框框
||
\/
NO:一个箭头指向另一个框框

在汇编里,我们用 CMPJZ, JC, JG, JL 等指令组合实现这个功能。

CMP:请比较_这个数_和_那个数_!比较的方法是用_这个数_减去_那个数_! JZ:若两个数相等,也就是相减结果为零的话,从我这边的箭头走。 JG:若_这个数_大于_那个数_,也就是相减结果大于零的话,从我这边的箭头走! …:

中场休息

思考题

  1. 你有思路将下面的流程图_大致_转换为汇编语言吗?

一些基本概念 Part 2

函数

直播服务器搭建笔记

有同学在搭直播服务器,我也顺便稍微试了一下。大概比较容易搭建的是 RTMP 推流,然后在服务器分发 RTMP 流或者转换为 HTTP-FLVHLS 流。网络上基本认为,服务器分发的流的延迟大小大概是:RTMP < HTTP-FLV < HLS。 服务器端软件我了解到的有两个: * SRS * nginx-http-flv-module

SRS 搭建

SRS现在主要用法就是 RTMP 推流,然后根据不同配置可以实现 RTMPHTTP-FLV 或者 HLS 的分发。似乎在 SRS 4.0 里(当前版本是 3.0 )可以实现 WebRTC 的推流以及分发,感兴趣的也可以去试一下。

非Ubuntu/CentOS系统下的编译

编译流程在官方文档里有说:https://github.com/ossrs/srs/blob/3.0release/README.md 但是在 ./configure && make 这一步可能需要加点参数修改一下,比如(未测试): ./configure --cubie --use-sys-ssl && make CPPFLAGS='-fpermissive' 我个人是直接修改 objs/Makefile,修改 CXXFLAGS = -ansi -Wall -g -O0 这一行,变成 CXXFLAGS = -ansi -Wall -g -O0 -fpermissive,命令用的是 用的是 ./configure --cubie --with-ssl --use-sys-ssl && make -j 4。 之后和官方步骤一致。

OBS 推流

OBS Stream Setting

因为我不了解直播,所以不明白 OBS 设置里的术语。总而言之,如图上的配置: * Service: Custom… * Server: rtmp://127.0.0.1:1935/live * Stream Key: livestream 最后的 RTMP 播放地址为:rtmp://127.0.0.1:1935/live/livestreamHTTP-FLV 地址为 http://127.0.0.1:8080/live/livestream.flv但是不能OBS 设置里不填 Stream Key 而把 Server 填成 rtmp://127.0.0.1:1935/live/livestream

低延时配置

如果测试的延迟比较高,可以尝试用 v2_CN_SampleRealtime 里的配置优化一下延迟(也即 conf/realtime.conf 文件里的配置)。 我在自己电脑上跑的时候大概 RTMP -> RTMP 延迟 2s,RTMP -> HTTP-FLV 延迟 5s。

WebRTC 服务器

WebRTC 的延迟一般认为是很低的。但是之前找的时候易搭建的解决方案挺少的。了解到大概有 Janus 以及上面提到的 SRS

Girls Page Setup

hexo-theme-yun 这个主题有个特别的页面:页面配置|Girls。白用白不用嘛,就打算弄个诺贝尔奖女性获奖者名单上去。 也算是一点小小的反抗。

现在从 hexo 搬迁至 nikola 了,但是并不想把这个页面抛荒,于是自己写了 html 和样式,现在看着还行。 /pages/girls/

(对了,今年诺奖也出了,争取找点时间来更新一下

抓取过程

但是好麻烦啊,我写代码又垃圾

反正没打算弄成可复用的,最后大概路径是: 1. 到官方的 Nobel Prize awarded women 页面; 2. 打开 F12 开发者工具,大概在控制台弄了以下的代码:

var article = document.getElementById("nobel-middle-col");
var links = Array.prototype.slice.call(article.getElementsByTagName("a"))
    .filter(function(link) { return link.href.includes("facts"); });
var all = [];
for(var i in links) {
  var href = links[i].href;
  if(href) {
    (function(i, href) {
      fetch(href).then(function(response) {
        return response.text();
      }).then(function(html) {
        var parser = new DOMParser();
        var doc = parser.parseFromString(html, "text/html");
        var img = doc.getElementsByTagName("picture")[0]
            .getElementsByTagName("source")[0].getAttribute("data-srcset");
        var reasons = links[i].parentElement.innerText;
        var prize = reasons;
        if(reasons.indexOf("\n") != -1) {
          prize = reasons.substring(0, reasons.indexOf("\n"));
        }
        var person = {
          name: links[i].innerText,
          avatar: img,
          reason: reasons,
          url: href,
          from: prize
        };
        all.push(person);
      });
    })(i, href);
  }
}
  1. 然后在控制台console.log(all),复制变量到在线的随便哪个 JSONYAML 转换器那里转换,把转换结果放回 girls 页面里。

顺便提一句,其实诺贝尔奖官网似乎提供了一些 API 可以查询相关的很多很多信息。但是 API 查不到图片,不符合我的要求,所以就没用。

Reference: Nobel Prize awarded women. NobelPrize.org. Nobel Media AB 2020. Tue. 4 Aug 2020. https://www.nobelprize.org/prizes/lists/nobel-prize-awarded-women

Hexo Yun 主题使用 Utterance 管理评论

转移到静态博客之后在想评论的事情,从云游君大佬的 第三方评论系统之我见 里大致了解了一点,然后后来查到个 Utterance 先用上瞧瞧。似乎还没问题。 使用 Chrome 测试没问题,但是我日用的火狐似乎有时会出 CORS 错误,访问不了 api.github.com。大概是插件的问题,我之后再试一试。

Utterance 的官方配置很简单:https://utteranc.es/,GitHub 上设置好了再在博客里加段东西 就行了。往 hexo-theme-yun 里加应该也挺简单,我不熟悉 Hexo,不知道怎么静态加入内容,暂时写了段 js 在页面加载时才把代码插进页面。

只不过一个 GitLab 蹭 CI/CD 的站用 GitHub Issues 来管理评论怎么有种奇妙的感觉

Yahoo邮件的CalDAV设置

最近全面改用 Thunderbird 作为邮件客户端了。但是因为之前使用网页版 Outlook 的时候的日历手机同步还是很方便的,就打算找找看其他同步日历的方法。

CalDAV

反正CalDAV就是一种同步日历的机制啦,就不详细介绍了。 由于CalDAV大体上是基于WebDAV的,所以和WebDAV一样,要同步我们要先找到相应的URL。但是其实很多提供CalDAV的邮件服务都没有把自己的URL给出来,所以一些情况下可能要自己摸索。

思路一:使用自动抓取URL的应用/系统

国内有支持CardDAV协议的通讯录服务提供商吗?-知乎,苹果系统自带的邮件软件以及一个叫 EVO Collaborator for Outlook 的软件都可以自动抓取相应的URL。这两个方法我没有尝试。

思路二:看看网上有没有人找到

反正就是搜索引擎以及大神万岁。我只搜到了Yahoo的,其他的也懒得搜了。

Yahoo的CalDAV URL

原文:Yahoo Calendar on Mozilla Thunderbird with Lightning and on Android Devices 例如雅虎邮箱地址是:USERNAME@yahoo.com,你创建了一个叫做“NameOfTheDay”日历,那么地址(在Thunderbird新建日历里的Location一栏)就应该是: https://caldav.calendar.yahoo.com/dav/USERNAME/Calendar/NameOfTheDay 其余的信息在Thunderbird基本上按提示来或者随便填就行了。确定了之后会弹出一个框让你登陆,这个时候才要认真填上邮箱地址以及密码。 顺便一提,摸索到似乎只有最开始的默认日历有 tasks 功能,之后创建的没有?或者有其他地方设置?不知道怎么回事。

注意事项:应用密码

上面所说的“密码是需要用到账号设置里去生成的。可以参考这里: Generate third-party app passwords

iCalendar

Yahoo有提到它也支持iCalendar,但是我并没有找到 懒得去找相关方法了。

NextCloud 的日历!

尽量细致的Pleroma搭建教程(仮)

预先准备

首先,这里先假设你已经选购了一台 VPS 并且已经能够使用 SSH 连接到这台机器。

由于 Pleroma OTP 版本的限制,本教程推荐 VPS 使用 64 位的系统(x86_64 或 amd64)。当然,Pleroma 也适用于其余系统,只是可能会麻烦一些。

本文主要基于 Ubuntu 系统进行操作,推荐使用版本号尽量高的 Ubuntu,本例中的为 Ubuntu 20。

对VPS机器的要求

Pleroma 对机器的要求较低。本教程在 256MB 内存(附加SWAP交换区间,见下)上的机器成功运行,理论上也可以在 128MB 甚至更低内存的情况下成功,但是低内存引起的卡顿可能会影响使用。

选购并使用SSH连接机器

请自行上网查阅教程。 选购请三思而后行。使用SSH连接,Windows用户请上网查阅 PuTTY 或其他类似软件的教程,Linux或MacOS用户请查阅SSH命令或相关软件的教程。

提醒

关于教程中使用的邮箱的提醒,引自:奈卜拉:https://i.nebula.moe/posts/2019-09-13-mastodon/

这里推荐使用国际邮箱注册,例如 Gmail,请不要使用国内的邮箱服务,如 163、QQ 等。如果无法访问 Gmail,微软的 Outlook 以及来自瑞士的 Protonmail 都是不错的选择。

注册域名并配置DNS

本文介绍使用 FreeDNS 免费注册域名的方法。(此处注册的是二级域名,但是不理解二级域名不影响本教程的使用。)通过其他手段注册的域名也可以用于本教程(如来自EU.org的免费域名或其他免费或付费的域名),但对应的本小节的操作可能有所不同。

注意!使用 FreeDNS 免费域名会使得之后无法使用 Cloudflare 加速!暂时还没有解决方法。

注册账号

FreeDNS 主页

前往https://freedns.afraid.org/,点击页面左方(如上图所示)任意链接均会跳转至登陆界面,选择登录界面的 Sign up Free 按钮进行注册。

登录界面 对于注册中信息的填写以及邮箱的验证此处不再详述。 重新点击网页左侧任意链接,跳转至登录界面进行登陆。

申请域名

登陆后,点击左侧 “Registry” (如上图所示)进入 Domain Registry寻找可用的域名。出现的界面中,需要注意的除最左边的域名以外,还有下图所示的 Status 一列。建议选择 Status 为 public 的,因为 private 的域名持有者可能随时将你的域名删除。

此处教程中选择了 allowed.org,于是我们最终的域名可以是 “我们选择的词语.allowed.org”。 点击 allowed.org 或您所选择的域名进入如下图界面。我们需要填写的有 Subdomain、Destination以及最下方的验证码。Subdomain 请填写自己心仪的、符合域名规范的词语(若不了解,请尝试查找域名规范);Destination 请填写所持有的 VPSIP 地址(IPv4)。“Save!” 按钮确认。

您选择的域名可能已被其他人占用。此时网页会弹出提示,请您更换 Subdomain 或在 “Registry” 界面选择其他域名。 教程所填写的将会得到域名 wuppo.allowed.org 。您将会得到 “子域名.主域名” 的域名,其中子域名代表您在 Subdomain 中填写的文字,主域名代表您在 Domain Registry 界面所选择的域名。 此后,您可以点击页面左侧的 Subdomains 管理或修改您所得到的域名,此处不再详述。

配置服务器并安装

本教程主要针对 Ubuntu/Debian 系的服务器系统。若选购的 VPS 为其他系统,可考虑通过商家的相应接口重装系统为 Ubuntu/Debian,也可上网搜索教程的各部分的对应步骤,网上应都有大量教程。

保持服务器的安全性

在安全性方面,可以参考 Mastodon 官方教程中的:

Mastodon 教程仅针对 Ubuntu/Debian 系统的服务器,其他系统请搜索对应的教程。

防火墙的配置

Mastodon 教程(安装防火墙并只暴露SSH、HTTP、HTTPS端口)中使用了 iptables-persistent 作为防火墙,适用于本教程。但是这样的编辑防火墙的方式较难以让人理解,若有时间可以了解使用 ufw (意为 Uncomplicated Firewall)。

ufw 的简单设置

(若使用 ufw 则无需按照 Mastodon 教程中的 iptables 部分设置了。)

Ubuntu 下安装 ufw: “`sudo apt install ufw

ufw 的简单设置:允许 SSH(22 端口)、HTTP 以及 HTTPS:
```sudo ufw default allow outgoing
sudo ufw default deny incoming
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 22
sudo ufw enable

可以看出,相较 iptables,ufw 的设置更加简明易懂。

安装 Pleroma

暂时参考这里:https://docs-develop.pleroma.social/backend/installation/debian_based_en/ 我现在要转移 Wordpress 留给 Pleroma ) VPS 快到期了……索性换了一个好一点的 VPS

Pleroma 有两种安装方式,一是从源代码从头编译,二是使用官方编译的 OTP 版本。后一种 OTP 版本的好处是会省下很多自己编译的时间,对于一些垃圾的 VPS 就更是如此。

总之,我们优先使用 OTP 进行服务器搭建。

OTP 版本搭建

官方教程:Installing on Linux using OTP releases

首先,使用官方教程里提供的 Detecting flavour 脚本来判断自己的 VPS 是否有 OTP 支持:

arch="$(uname -m)";if [ "$arch" = "x86_64" ];then arch="amd64";elif [ "$arch" = "armv7l" ];then arch="arm";elif [ "$arch" = "aarch64" ];then arch="arm64";else echo "Unsupported arch: $arch">&2;fi;if getconf GNU_LIBC_VERSION>/dev/null;then libc_postfix="";elif [ "$(ldd 2>&1|head -c 9)" = "musl libc" ];then libc_postfix="-musl";elif [ "$(find /lib/libc.musl*|wc -l)" ];then libc_postfix="-musl";else echo "Unsupported libc">&2;fi;echo "$arch$libc_postfix"

其实,从本文写作时的教程的脚本代码里可以看出,OTP 暂时不支持 32 位(x86)的系统。所以如果出错,可以考虑到 VPS 提供商除重装一个 64 位的系统(x86_64 或 amd64),然后重新再来一遍本教程。

安装所需的包:

sudo apt update
sudo apt install curl unzip postgresql postgresql-contrib nginx certbot ncurses-base ncurses-bin libncurses5 libncursesw5 libtinfo5

对于其他发行版来说可能需要注意这里的 ncurses 相关包是 libncurses5,见:https://git.pleroma.social/pleroma/pleroma/-/issues/1181

本文由于只是示范搭建一个简单的实例,所以选择跳过 RUM indexes 的安装。

在 (Optional) Performance configuration 一节,如果你选择使用 PGTune 来调节 postgresql 的设置,直接将生成的配置文本粘贴到 postgresql 设置文件的最后即可。修改完成后重启 postgresql:

sudo systemctl restart postgresql

文中说明要修改 Ecto database 的配置,但这其实是要等到后面我们安装得差不多的时候再配置的。

随后基本上跟着官方教程走就可以了。

Troubleshooting / 各种问题

Pleroma 的邮件配置

更新:给 Pleroma 提了 issue,下一个版本应就会把这个问题修好了。也就是 /etc/systemd/system/pleroma.service 里应该已经改好了。(当然去确认一下也没问题。)

TL;DR: 用第三方邮件服务,用 Postfix 连接 SMTP,在 /etc/systemd/system/pleroma.service 里将 NoNewPrivileges 设置为 false

邮件上比较普适的配置是使用带有 SMTP 接口的邮件提供商。这里以 Zoho 为例,你需要知道: 1. SMTP 服务器的域名以及 TLS 的端口号: 本例中分别为:smtp.zoho.com 以及 587 (一把) 2. 你的邮件地址以及密码,我们这里姑且用以下来代替: 邮件地址:[email protected] 和密码: pa$$word

在了解到以上信息后我们来安装 Postfix:

sudo apt-get install libsasl2-modules postfix

在安装过程中,请在弹出来的配置界面中选择 Internet Site 并在后面的 System mail name 中填入您 Pleroma 对应的域名。

然后,我们来配置 Postfix 的 SMTP 信息: 1. 新建 /etc/postfix/sasl/sasl_password 文件,并在其中按以下格式填入您的 SMTP 相应信息:

[smtp.zoho.com]:587 testest@mydomain.org:pa$$word

运行以下命令来确保密码文件的权限安全:

sudo chown root:root /etc/postfix/sasl/sasl_passwd /etc/postfix/sasl/sasl_passwd.db
sudo chmod 0600 /etc/postfix/sasl/sasl_passwd /etc/postfix/sasl/sasl_passwd.db
  1. 运行 sudo postmap /etc/postfix/sasl/sasl_password 命令来相应处理刚才创建的信息;
  2. 编辑 /etc/postfix/main.cf 文件来相应设置 Postfix,请相应替换 smtp.zoho.com, 587
myhostname = 您的 Pleroma 域名
relayhost = [smtp.zoho.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
  1. 重启 Postfix 服务:
sudo systemctl restart postfix

这个时候不出意外您应该已经可以使用 sendmail 命令发送简单的邮件了。在终端里依次输入(请将 [email protected] 替换为您确定可以接收邮件的邮箱地址):

sendmail your@mail.account
From: testest@mydomain.org
Subject: Test
Tester. Testest. 
.

其中第一行输入了 sendmail 命令,包括了收件人地址sendmail [email protected] From: [email protected] Subject: Test mail This is a test email . ;其余行是邮件内容,分别包括了发信人地址(From:)、邮件标题(Subject:)、邮件内容(Tester. Testest.)以及标志着结束的单独的一个句号。

但是! Pleroma 在这个时候很可能发邮件会出错!请做以下改动: 1. 使用 sudo postfix check 检查,一般不会在这一步出错,若有除了 warning 以外的出错,请使用搜索引擎搜索相应解决方案; 2. 检查文件权限:使用 ls -lah /var/spool/postfix/ 命令,检查输出中是否有两行与以下内容一致:

drwx-wx---  2 postfix postdrop 4.0K Jun  4 23:39 maildrop
drwx--x---  2 postfix postdrop 4.0K Jun  4 23:38 public

若不一致一般可以这样修复:

sudo chown postfix:postfix /var/spool/postfix/maildrop /var/spool/postfix/public
sudo chmod g+x /var/spool/postfix/maildrop /var/spool/postfix/public
sudo chmod g+w /var/spool/postfix/maildrop
  1. 这里是最可能的出错:Pleroma 无法获得的发送邮件的权限。编辑 /etc/systemd/system/pleroma.service 文件,找到包含 NoNewPrivileges 的一行,不出意外应该是 NoNewPrivileges=true,将 true 改为 false。 修改完后:
sudo systemctl daemon-reload
sudo systemctl restart postfix
sudo systemctl restart pleroma

配置完后,进入 /opt/pleroma 目录,使用 sudo -u pleroma pleroma ./bin/pleroma_ctl email test --to [email protected] 来发送测试邮件。若在您的 [email protected] 邮箱中找到了邮件,那么即发送成功。如果没有,可能有两个原因: 1. Pleroma 服务器的邮件配置还是没成功,请打开另一个 ssh 连接使用 sudo journalctl -u pleroma -f 命令实时观察出错情况,再在原有 ssh 连接中重新发送测试邮件来查看报错信息; 2. 您的邮件服务商(本例中为 [email protected] 的提供商 Zoho)或是您的域名被您的收信邮箱直接拒收,请检查您的邮件提供商是否有显示退信通知。

(待续)

联邦宇宙搭车指南(更新中)

跟风一波,写一些入门指南,顺便锻炼一下自己的写作表达能力。

想象一天早上,你家房子刚被强拆,不久后某片乐土也会因联邦大道被夷为平地,此时举起大拇指搭便车前往联邦宇宙似乎成为了你的少数几个选择之一……

DON’T PANIC

不必恐慌

阅读更多…