OpenXPKI

証明書リクエストや承認、リジェクト時などにメール送信を行うことができる。

メール送信設定

# cd /etc/openxpki/config.d/realm/democa/notification
# mv smtp.yaml.sample smtp.yaml

メールの設定箇所は以下のとおりであり、backendがメール送信の基本情報で、ここを修正すれば良い。
gmail経由で送信する場合は、例えば以下のようになる。

参考 gmailの設定例

<xxxx>は、置き換え必要。

# Sample config for good old email notifications
backend:
    class: OpenXPKI::Server::Notification::SMTP
    host: smtp.gmail.com
    port: 587
    starttls: 1
    username: <account>@gmail.com
    password: <password>
    debug: 0
    # You need to install MIME::Tools for html support
    use_html: 0
...

use_htmlは、htmlメール(utf-8)となる。use_htmlが0の場合はplainで送信される。

補足 Less secure apps

Less secure apps & your Google Accountに引っかかる場合は、フラグをonにする必要がある。
つまり、アプリのアクセスを許可する。(許可するか否かは自身の環境で判断で)

Plain形式でのマルチバイト文字の送信

plain形式ではエンコーディングが考慮されていないため、マルチバイト文字を入れるとエラーとなる。
以下のようにソース修正すればエラーにならない。

diff --git a/Server/Notification/SMTP.pm b/Server/Notification/SMTP.pm
index 88bdad9..7cc7b35 100644
--- a/Server/Notification/SMTP.pm
+++ b/Server/Notification/SMTP.pm
@@ -104,7 +104,7 @@ use OpenXPKI::Serialization::Simple;

 use Net::SMTP;
 use Net::Domain;
-
+use MIME::Base64;
 use Moose;
 use Encode;

@@ -521,7 +521,10 @@ sub _send_plain {
     $smtpmsg .= "To: " . $vars->{to} . "\n";
     $smtpmsg .= "Cc: " . join(",", @{$vars->{cc}}) . "\n" if ($vars->{cc});
     $smtpmsg .= "Reply-To: " . $cfg->{reply} . "\n" if ($cfg->{reply});
-    $smtpmsg .= "Subject: $vars->{prefix} $subject\n";
+    $smtpmsg .= "Subject: ". Encode::encode("MIME-Header", "$vars->{prefix} $subject") ."\n";
+    $smtpmsg .= "Content-Type: text/plain; charset=utf-8\n";
+    $smtpmsg .= "Content-Transfer-Encoding: base64\n";
+    $smtpmsg .= "\n". encode_base64(Encode::encode_utf8($output));
     $smtpmsg .= "\n$output";

     ##! 64: "SMTP Msg --------------------\n$smtpmsg\n ----------------------------------";

メールのfromなどに宛名を入れる場合も同様にMIME-Headerでエンコードする。


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
目次
ダブルクリックで閉じるTOP | 閉じる
GO TO TOP