新システムでのLet’s Encrypt

注: 最後にまとめがあります.

Let’s EncryptがPython 2.7.xのサポートをやめてしまったので,管理するいくつかのサーバーでは,2.7がサポートされた最後のころのgitをupdateしないで使っていました

このほど,そのうち1台はPython 3.xが搭載されたシステムに移行し,今回移行後はじめての証明書の更新時期を迎えたので,git pull して現在のgitレポジトリーに同期してから証明書の更新を試験的に行ってみました.Branchはmasterです.

しかし,tools/venv.pyの実行でエラーが出てしまいます😓

python-augeasがないとのエラー(もしくはそのbuildの過程のエラー)を出しているようなので,pip3でインストールを試みますが,今度はwheelがないというので,先にwheelをインストールして,続いてpython-augeasをインストールしてみました.エラーが出ます.

SlackBuildsに,python-augeasがあるので,

sbopkg -i python-augeas

をしてみたところ,python-augeas-0.5.0-arm-1_SBoがインストールされました.もう一度,tools/venv.pyを試みます.

だめでした.どうも,python-augeas-1.0.0 以上が必要そうなので,

pip3 install -U python-augeas

を試しますが,1.0.0以上のbuildに失敗します.

大量に出るエラーメッセージを見て,なんとなく,python-augeasのもとになる, “augeas” がそもそもインストールされてないんじゃないかと思い,システムを見てみると,たしかにそんなパッケージはインストールされていません.さいわい,SlackBuildsにはあるので,

sbopkg -i augeas

を実行したら,augeas-1.4.0-arm-1_SBo.tgzができて,インストールできました

python-augeasのインストールは,Let’s Encryptのvenv.pyがやるはずなので,もういちど,tools/venv.pyを実行すると,うまくいったようで,python-augeasのところは無事通過して,rustcを使った超重量級のbuildが繰り広げられます😓

計ったわけではありませんが,40分くらいでvenv.pyの実行が完了しました.

このあと,

source venv/bin/activate

を実行してから,certbotが実行できて,証明書の更新もできました.

まとめ

SlackwareARM 15.0で,Let’s Encryptの最新git repositoryに同期させて,venv.pyの実行と,certbotによる証明書の更新に成功しました

事前に必要になるのは, augeas(およびvirtualenvも必要かも) で,sbopkgにてインストールする必要があります.

SlackwareARM 15でも上記記事のままの手順ですが,venv.shはvenv.pyにします.

現在,3.9.12.
SlackwareARM 14.2からSlackwareARM 15.0.
augeasに加えて,virtualenvのインストールが必要な旨,自分のメモ(非公開)に書いてありました😓メモの元になるリンクはこれです.LinuxQuestions.org: [SOLVED] Let’s Encrypt.
メモリーの使用量がそれほど多くないだけましですが.
たぶん,Slackware 15.0, Slackware64 15.0も同様.

結果的にDovecotへの切り替えはエイヤ!

このときクライアントも設定も切り替えないと,メールデータの消失・破損などの事故になるので,慎重にやりたいと思います.

Dovecotへの移転は手作業

のつもりでした.メインWSのメインのメールソフトであるThunderbirdで作業を始めました.この時点で,同じサーバーの同じIDで違うポートにアクセスする2つのアカウントが機能して,それぞれ旧IMAPサーバー(port 933)とDovecot (port 10933)に問題なくつながっています(メールデータのコピーもできました).

次にサーバーの旧IMAPサーバーを止め(/etc/inetd.confのport 933の行をコメントアウトしてinetdを再起動),Dovecotのポートを10933から933に変えてDovecotを再起動しました.

次にThunderbirdですが,起動したら前の設定のまま接続に行きますから,接続できないようにサーバーのパスワードを変更してから起動しました.そして,Dovecotに対応したアカウントのほうのパスワードだけ新しいものを入力してサーバーに接続しました.

ここで,予定どおりThnderbirdのアカウントの設定の,10993につなぐところを993に変更しました.しかし,想定外のことが起きました.このThunderbirdに設けているアカウントの2つが,どちらも同じUser IDで同じサーバーの同じポートにつながる設定になったわけですが,仕様なのかバグなのか,2つのアカウントのうち古い方(旧IMAPサーバーにつないでいた方)が消えてなくなってしまいました.

さいわい,メールデータを移転した先でなく,元のほうが消えたのでデータの消失は免れました

ノートパソコンやLinux WSのThunderbirdでは,敢えてDovecot用のアカウントを作らず,旧IMAPサーバーにつなぐ設定でそのままDovecotにつなぎました.エイヤッ!です.さいわいメールデータの消失や重複は発生しないで済んでいるようです

もちろんパスワードも同じ.
もちろんサーバーもクライアントもIMAPの仕様どおりに動いていれば,サーバーの内容にクライアントが同期(クローニング)するので,データ消失なんて起こらないはずですが,仕様から外れたことが起こるのが世の習いです😓
ただし,旧IMAPサーバーで必要としていたメールボックスのプリフィックス(.imapなど)は不要なので削除しました
Note 2と同じ.

Dovecotへの移転は手作業

昨日から今日にかけて,IMAPのサーバーの切り替えのため,これまでため込んだメールをどう移転しようかといろいろ調べたり試したりしていました.

最終的には,IMAPのクライアントとして使ってきたThunderbirdによって,手作業ですることにしましたが,dovecot付属のdoveadmというユーティリティーでコピーができそうだと解り,あちこちの資料を拾い読みして,解ったと思ったら設定を変えて試す,というようなことを昨日の後半から今日の午前中までしていました.

やっているうちに着手した最初の頃よりは明らかに理解が深まったと思うのですが,なかなか思うように動いてくれません.例もそんなに多くなくて,自分がやりたいそのものズバリはありませんでした.

今日の昼過ぎにあきらめて,Thunderbirdで手作業でコピーをはじめました.

旧IMAPサーバーは標準のport 993でそのまま動かし,dovecotは,port 10993で動かし,Thunderbirdから両方にアクセスしてコピーしていくという方法です.

なかなかMacやKDEのよくできたGUIのファイルマネージャーのようにはうまくいきません.言葉で説明すると,長たらしくなってたぶん解ってもらえるような文章は書けないので省略しますがIMAPにはいろいろ制約があって,かなり手数が必要です.

それでもなんとか夕方までにはコピーが完了しました.そうまでしてため込んだ古いメールを残しておくのはそれなりに意義があります.メールソフトの検索機能で,過去の取り引きややりとりを見つけ出して,活用できることが年に何度かはあります😓

明日,コピー漏れやなんか変なことをしてないか確認してから,旧IMAPサーバーを止めて,dovecotをport 993での正式うように切り替えます.

このときクライアントも設定も切り替えないと,メールデータの消失・破損などの事故になるので,慎重にやりたいと思います.

たぶんこれらのGUIでは,全部のフォルダーを選択してドラッグアンドドロップで作業完了でしょう.

サーバーいじりメモ

久しぶりにサーバーの設定をしています.Debianでhttpsとimapのサーバーを立ち上げようとしていますが,DebianのApache httpdは,Apacheの用意したファイル名などをほとんど全部書き換えていて,非常に難解です

それでもようやくSSL/TLS接続できるようになりました.ただし,SSLやTLS 1.0サポートを残しておくのはセキュリティー上良くないということで,それらを止める方法をこれから調べます.

もう一つは,imapデーモンで,dovecotを動かすことにします.こちらは設定ファイルがたくさんありますが,設定自体はそんなに難しくなさそうです.平文接続のport 143を止めて完成だと思います.

ただ,これまでUW-imapdで保存したファイルをcpコマンドでコピーしてもdovecotは認識してくれないようなので,Thunderbirdからフォルダーを1つずつコピーしていくしかなさそうです.いや,ツールを使ってコピーした方がいいかな.

Slackwareは,ほとんどApacheのお仕着せのまま.

Postfixを試す (7) Avahiのbuildで難航

Postfixを試すのにAvahiが要るのか,という疑問もあるかと思いますが,筆者のLAN内ではAvahiを有効利用しているので,テストの準備などのいろんな手続きをスムーズにするためインストールすることにしました.

Slackware (64, ARM) 15.0用としてSlackBuildszeroconfのサーバーであるAvahi,クライアントであるnss-mdns,そしてAvahiに必要なライブラリーlibdaemonが用意されています.したがって,libdaemonからの順番で,sbopkg -iすれば,インストール完了します.実際,SlackwareARM 15.0のとあるマシンでは,そのようにして他のマシンを参照するのも,他から参照されるのもうまく機能しています.

ところがどっこい,Postfixのテスト用に仕立てたSlackware 15.0 (32bit)の仮想マシンでは,Avahiのbuildができません.gtk+2のバージョンが必要条件(>=2.14.0)を満たしていないとconfigureスクリプトが文句を言いますが,pkgtoolで確認するとちゃんと条件を満たしています(2.24.33).エラーメッセージは的が外れているけど,なにか確かにエラーがあるに違いないです(よくあることです😥).

うまくいったSlackwareARMと失敗したSlackware (32bit)の違いは,もちろんアーキテクチャーや,実マシン・仮想マシンの違いがありますがそれらは別にして,X, XAP, KDEをインストールしていないことです.リモートで運用・管理するのが前提なので,そもそもGUIは要りませんので,省略することによってシステムの容量を減らすことができると考えました.

しかし,これがどうもいけないようです.そもそもAvahiにGUIは関係ないと思うのですが,なんか必要なライブラリーがGUIのライブラリーと依存関係にあるとかないとかいうことでしょうか.知らんけど😥

必要最低限のライブラリーを見つけ出してインストールするというのがGUIをインストールしなかった初期の方針に沿う方法でしょうけど,時間が無駄にかかりますので,ここは諦めて,XとXAPはインストールすることにします(いくらなんでもKDEは要らんでしょう😥).

ここも,ここまでいじってきたシステムにXとXAPを追加してインストールすればいいんですが,完成したときにクリーンインストールからの最小手順だったという形にしたいので,また箱庭を消してゼロからやります.