Ubuntu 20へアップデートしたために、Perlのスクリプトが動作しなくなった

前は18.04 LTSだったので、2023年4月(通常)、2028年4月(ESM)という長期に利用できるバージョンでしたが、CentOS6の失敗(上位にアップデートに不安要素が多い)の経験から、情報が多くあるうちに、今回早々にアップグレードを実施しました。
Ubuntu 18から20へはスムーズに完了できていました。アップグレードコマンドを実施し、再起動1回で済みました。
基本的な動作は問題ないし、基本社内においているAsteriskサーバーだったので、その動作確認も済ませていました。

AsteriskでのSMS転送の不具合発見

このAsteriskサーバーでは、USBドングルをつないでいて、SMSや通話などの発着を補っています。通話は他のIP電話アプリへ。SMSはEmailへ転送しています。
今回、問題が発覚したのはSMSの転送です。普段SMSの使用頻度は少なく、キャリアの請求メールや二段階認証のコードなどを受けてるくらいでした。Emailへの転送ができていませんでした。

Perlのバージョンアップ

まず、大きな原因としては、Ubuntu18から20へアップグレードした際に、Perlのバージョンもアップしていたこと。
それに伴い、Perlモジュールもバージョンアップの必要があった。通常、Perl単体でバージョンアップすると、古いバージョンも残したままにできる。Perlスクリプトで明示的に古いPerlのバージョンを指定することも可能でPerlモジュールも同様。しかし、OSのバージョンアップに伴う、Perlのバージョンアップでは、古いPerlのバージョンが見つけられない。Ubuntu20へのアップグレード最中に古いバージョンを残す質問があったかもしれないが、数十回という設問にデフォルトで答え続けたかもしれない。
まぁ、使用しているPerlモジュールを再インストールすればいい話。
だと思っていた・・・・。

Perlモジュールがインストールできない

perl -c marumaru.pl などと実行すると、エラーチェックができるから、そのエラー内容をもとに、一つずつcpanでモジュールをインストールしていく。
今回、必要なPerlスクリプトは一つだけ。届いたSMSをEmailに転送する単機能。Linuxならメールサーバーを立ち上げることもできますが、Emailに転送するだけなら、Perlだけでやったほうがシンプル。「普通のパソコンでGmailにアクセスして、メールを送信する機能」を、Perlスクリプトに実装していただけ。
近年のEmailはSSLでの認証が必要なので、その部分のPerlモジュールがインストールができない状況となっていた。

ググった

Perlモジュールにも流行りというか、開発が終了しているのもある。
私が使っていたモジュールは、Email::Sender::Transport::SMTP::TLS である。これのインストールを行うと、Cpanが止まってしまう。原因はわからない。
しかし、こちらの方の記事を見ると、

すでに非推奨の

Net::SMTP::TLS
を修正した

Net::SMTP::TLS::ButMaintained
もやはり非推奨で、さらにそのラッパーである

Email::Sender::Transport::SMTP::TLS
も、当然非推奨になっている。

かわりに推奨されているのが

Email::Sender::Transport::SMTPS
であり、より低レベルなAPIの

Net::SMTPS
である。

http://nozawashinichi.sakura.ne.jp/usingmt/2014/04/net-smtps-smtp-auth-sakura.html

とのことで、Email::Sender::Transport::SMTPSへ切り替えた。
時代によって使うモジュールも変わっているんだな。
この記事2014年というのは気になるけど、とりあえずここを参考にしたら、無事復活。2箇所くらいの変更で復帰した。

2020年のSMTP TLSを使用するモジュールは?

Email::Sender::Transport::SMTPS の最終更新日は、APR 05, 2017

Net::SMTPS の更新日はAPR 11, 2020

ラッパーのEmail::Sender::Transport::SMTPSは少し不安だが、ベースのNet::SMTPSが更新が進んでいるから、当面はこの組み合わせでも問題ないのでしょう。
ただ、更新がされていないからダメというものでもなく、完全に安定していて更新する必要がないものもあるから、この更新日はあまりアテにしないほうがいいかもしれない。
ただ、SSLに関わる部分は常にセキュリティーの問題が見つかったりと、その対応が必要になるのかもしれないから、更新日が近いのは安心感がある。

ここまで書いてて、なんですけど。

基本的に、モジュールはcpanで入れているのですが、今回始めて、aptでインストールしたものがある。
どうしてもcpanでssl関係で止まっているようだったから、試行錯誤。
apt install libcrypt-ssleay-perl
apt install libnet-ssleay-perl
とか。ググっている最中に、そういう話が少しあったので。

コメントする

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload the CAPTCHA.

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください