IRC connection failed

今天第一次知道IRC这个东东。

然后在emacs上执行 M-x erc-tls 一路回车默认过来,

我猜是不是要先注册啥的 Nickname Registration | Libera Chat

但是

> /nick xxxx

直接就

是怎么回事?

我是用brew装的emacs-plus@29

Libera 特意“关照”了大陆 IP,除非已经有验证过邮箱(光只是注册还不行)的账号不然不能用 SASL,也不能用纯文本。

你输入 /nick 的时候早就已经被断了链接

要么挂梯子,要么用纯文本链接的 M-x erc要么用网页客户端 https://web.libera.chat/ 完成注册和邮箱验证才能用 SASL

2 个赞

总结分享一下使用ERC

  1. 因为 SASL access only IP ranges ,在国内使用连接IRC网络需要 an existing NickServ account with a verified email address

  2. 通过 https://web.libera.chat/ 网页客户端,先登录(连接不上的话,请科学家)这里的登陆不需要账号密码,直接上,一般会随机一个usename给你,游客身份

  3. 在 Libera.chat 对话框输入

/nick YourNick

这个YourNick其实就是username,这个命令就是让你填写你的账号一样

然后

/msg NickServ REGISTER YourPassword [email protected]

YourNick就是账号,YourPassword就是密码

然后会发送一封邮件到你的邮箱。然后按照邮箱里面的命令执行一下就注册好了

  1. 在emacs中,C-h v erc-modules,选择customize 这个变量,然后把sasl加进来,因为IP的限制,必须通过sasl,不然不识别hostname

  2. *scratch* buffer 中 (erc-tls :server "irc.libera.chat" :port "6697" :nick "YourNick" :user "YourNick" :password "YourPassword") 按C-j执行就可以登陆了

这个nick到无所谓,关键是 :user:password 必须要

  1. 可以通过配置setq erc-sasl-user and erc-sasl-password 就是上面的YourNick,YourPassword, 然后M-x erc-tls就可以了
3 个赞

使用ERC参考

感谢大佬,自己读了两天手册折腾了两天还是没弄成,靠您的方法终于成功了

现在连网页版都要求认证了,不知道他们在搞什么

ERC 可以用自签证书认证 SASL,不用存 IRC 密码

openssl req -x509 -new -newkey ed25519 -sha256 -nodes -out libera.crt -keyout libera.key
# 以下输出作为 fingerprint 上传 /msg NickServ CERT ADD <fingerprint>
openssl x509 -in libera.crt -noout -fingerprint -sha512 | awk -F= '{gsub(":",""); print tolower ($2)}'
(use-package erc
  :defer t
  :init
  (setq
   erc-insert-timestamp-function 'erc-insert-timestamp-left
   erc-timestamp-format "%H%M "
   erc-sasl-mechanism 'external
   erc-sasl-user :nick
   erc-autojoin-timing 'connect)
  :custom
  (erc-modules '(autojoin button completion fill irccontrols
                          list match move-to-prompt networks
                          sasl
                          noncommands readonly stamp spelling track)))

注意 client-certificate 的路径不能有 ~,不然 erc 进程会挂掉。

(erc-tls :server "irc.libera.chat" :port 6697
         :nick "ldb"
         :client-certificate '("/Users/ldbeth/.emacs.d/libera.key"
                               "/Users/ldbeth/.emacs.d/libera.crt"))