以前,FreeBSD, Perl の Net::SMTP::TLS ではまるという投稿を書いた。 それは,FreeBSD のサーバーから,Perl で 587 番ポートを使って gmail からメールを送信する際に, Net::SMTP::TLS がうまく使えない,という話だった。 その時は CPAN にある Net-SMTP-TLS-ButMaintained というのが使えそう,という事を書いた。 その当時(2012/12),FreeBSD の ports には,Net-SMTP-TLS のバージョン 0.12 しかなく,Net::SMTP::TLS を使って Perl で 587 番ポートを通じてメールを送信するのは不可能だった。 その時の解決策は CPAN の Net-SMTP-TLS-ButMaintained を取ってきて,TLS.pm を置換える作戦だった。 その作戦を使うと TLS.pm + Perl で 587 番ポート経由でメールを送信することができた。
その後,そのままメールを使っていたのだが,Perl のバージョンを 5.18 に上げた際に,Perl + Net::SMTP::TLS で 587 番ポートからメールが送信できなくなったので,以前の話を思い出した。 Perl のバージョンを上げると,Perl 関連のパッケージをインストールしなおさないと行けないのだが,Net::SMTP::TLS は,ButMaintained を手動で置換えないといけないのだった。 その時,FreeBSD の ports を見ると,p5-Net-SMTP-TLS 以外に p5-Net-SMTP-TLS-ButMaintained という ports が作られているのを見つけた。 これは使えるかもしれない,と思って,p5-Net-SMTP-TLS-ButMaintained を使ってみようと思ったのが,今回の話。
まず考えたのが,いきなり p5-Net-SMTP-TLS-ButMaintained だけを ports から入れてみる作戦だった。 ports は
/usr/ports/mail/p5-Net-SMTP-TLS-ButMaintained/にある。 そこで make install clean としてインストールしてみた。 どこにどんなファイルができるかというと,
/usr/local/lib/perl5/site_perl/5.18/Net/SMTP/TLS/ButMaintained.pmというファイルが作られていた。
しかし…, p5-Net-SMTP-TLS-ButMaintained だけをインストールしただけだと,うまくいかなかった。 そもそも Net::SMTP::TLS がない,と言われた。 そこで,mail の送信スクリプトで
use Net::SMTP::TLS;を
use Net::SMTP::TLS::ButMaintained;としてみたのだが,これまたダメだった。
次の作戦としては,p5-Net-SMTP-TLS と p5-Net-SMTP-TLS-ButMaintained をインストールして,ButMaintained.pm で TLS.pm を置き換える作戦。p5-Net-SMTP-TLS をインストールすると,
/usr/local/lib/perl5/site_perl/5.18/Net/SMTP/TLS.pmが作られる。そこで,
/usr/local/lib/perl5/site_perl/5.18/Net/SMTP/TLS/ButMaintained.pmを
/usr/local/lib/perl5/site_perl/5.18/Net/SMTP/TLS.pmに上書きコピーした。 メール送信の perl スクリプトの中は
use Net::SMTP::TLS;のままとしておいた。
しかし…,この作戦もうまくいかなかった…。 実は,ButMaintained.pm を TLS.pm にコピーしただけだと,TLS.pm の先頭付近が,
package Net::SMTP::TLS::ButMaintained; { $Net::SMTP::TLS::ButMaintained::VERSION = '0.24'; }となってしまっていた。 それを
package Net::SMTP::TLS; { $Net::SMTP::TLS::VERSION = '0.24'; }と置き換えるとうまくいった。 まぁ,考えてみれば当たり前といえば当たり前の事だった。
今回もアプリケーションのアップデートに伴うトラブルだった。 特に Perl などの基本的なアプリケーションのバージョンアップには気をつけないといけない,と思うのだった。
最終的にうまくいった方法をまとめると,以下のようになる。
1. /usr/ports/mail/p5-Net-SMTP-TLS/ から Net-SMTP-TLS をインストール 2. /usr/ports/mail/p5-Net-SMTP-TLS-ButMaintained/ から Net-SMTP-TLS-ButMaintained をインストール 3. /usr/local/lib/perl5/site_perl/5.18/Net/SMTP/TLS/ButMaintained.pm を /usr/local/lib/perl5/site_perl/5.18/Net/SMTP/TLS.pm にコピー(置換える) 4. 新しい TLS.pm の先頭の Net::SMTP::TLS::ButMaintained(2ヶ所)を Net::SMTP::TLS に変更する
0 件のコメント:
コメントを投稿