オフィスにリクエストトラッカー(RT)をインストールしましたが、今日まで正常に機能していました。突然、メールによるチケットリクエストの受け付けが停止し、バウンスメールやユーザー/リクエスターに表示されるエラーは発生しませんでした。問題をデバッグした方法は次のとおりです。最初に行ったのは、メールリクエストが(メールサーバーから)RTマシンに到達していて、実際に正常に機能しているかどうかを確認することでした。しかし、その後、チケットは作成されなかっただけで、幸いなことに、 / var / log / maillog 以下のエラーメッセージが表示され、 rt-mailgateでチケットを作成しているときにキャプチャされました perlスクリプト。
Jun 10 17:03:50 support sendmail[1953]: t5ABXovT001952: to="|/opt/rt3/bin/rt-mailgate --queue default --action correspond --url http://rt.techglimpse.com/", ctladdr=<[email protected]> (8/0), delay=00:00:00, xdelay=00:00:00, mailer=prog, pri=34931, dsn=4.0.0, stat=Deferred: prog mailer (/usr/sbin/smrsh) exited with EX_TEMPFAIL
詳細なエラーを取得するために、私は– debug を使用しました rt-mailgateのオプション 以下に示すスクリプト:
/opt/rt3/bin/rt-mailgate --queue default --action correspond --url https://rt.techglimpse.com:443/ --debug < test
注:「test」は、サンプルのテキスト/メッセージを含むサンプルファイルです。
得られたエラーは次のとおりです:
500 Can't connect to rt.techglimpse.com:443 (certificate verify failed) /opt/rt3/bin/rt-mailgate: undefined server error
このエラーメッセージでは、RTインスタンスに使用されているSSL証明書がこのエラーをトリガーしたと推測されます。 SSL証明書に関して確認することが2つあります。
1。 RTインスタンスで使用されているSSL証明書を確認します:
openssl verify /etc/httpd/conf/ssl.crt/rt.techglimpse.com.crt
上記のコマンドはステータス「OK」を返しました。驚いたことに、RTがウェブブラウザを介してhttps経由でアクセスされた場合、問題はありませんでした(ただし、コマンドラインでは機能しませんでした)。いくつかのperlモジュールの機能が壊れていないことを明確にするために、cpanを介して以下のperlモジュールを更新しました:
LWP::UserAgent, Crypt::SSLeay, LWP::Protocol::https HTTP::Cookies
しかし、それでも元の問題はまだ解決されていません。 1時間グーグルした後、rt-mailgateのパッチを確認し、環境変数 PERL_LWP_SSL_VERIFY_HOSTNAMES を設定して、POSIXでのSSL検証を修正します。 または、以下に示すオプションを使用して、ホスト名とSSLの検証を無視するようにユーザーエージェントに指示します。これを行うには、 / opt / rt3 / bin / rt-mailgateで以下の行を検索します。
my $ua = new LWP::UserAgent;
以下の行を追加して、ユーザーエージェントにルートCAパスについて通知します。
$ua->ssl_opts( verify_hostnames => 0 );
警告: 上記の手順により脆弱性が発生するため、ここで注意してください。証明書の使用は無視されているため、機能しますが、サーバーはMITM攻撃に対して脆弱である可能性があります。
2。 RTインスタンスが使用しているSSL証明書の信頼を確認しますか?
私の場合、自己署名証明書を使用しましたが、(ROOT CA証明書を作成していないか、追跡できない可能性があります)、信頼されていませんでした。それでも自己署名証明書を使用する場合は、独自のSSL認証局の作成(および自己署名証明書のダンプ)に従って、ルートCAと自己署名証明書を作成できます。ルートCAを場所/etc / pki / CA / certsにコピーします 。この場所が存在しない場合は、 ca-certificates-2010.63-3.el6_1.5.noarchをインストールする必要があります。 RPMパッケージ。
最後に、 rt-mailgateを実行できました。 正常に。ルートCAが標準の場所にない場合は、 rt-mailgateで指定できます。 脳のブログ投稿で示唆されているように。 / opt / rt3 / bin / rt-mailgateで以下の行を見つけます
my $ua = new LWP::UserAgent;
以下の行を追加して、ユーザーエージェントにルートCAパスについて通知します。
$ua->ssl_opts( SSL_ca_file => '/path/to/root.crt' );
注: 上記の行でルートCAの正しいパスを設定することを忘れないでください。
それでおしまい!私の経験が誰かに役立つことを願っています。