電子メール設定

Swarmの電子メール配信は、SWARM_ROOT/data/config.phpファイルのmail構成ブロックによって制御されています。

ヒント

構成情報を変更しても、構成キャッシュを再ロードしない限り、その構成情報がSwarmで使用されることはありません。構成キャッシュを再ロードすると、変更した構成情報がSwarmで強制的に使用されます。Swarm構成キャッシュを再ロードするには、admin ユーザまたはsuper ユーザでなくてはなりません。[ユーザID]ドロップダウンメニューに移動して[システム情報]を選択し、[キャッシュ情報]タブをクリックしてから[構成の再ロード]ボタンボタンをクリックします。

例:

<?php
// this block should be a peer of 'p4'
'mail' => array(
// 'sender' => 'swarm@my.domain', // defaults to 'notifications@hostname'
'transport' => array(
'name' => 'localhost', // name of SMTP host
'host' => '127.0.0.1', // host/IP of SMTP host
'port' => 587, // SMTP host listening port
'connection_class' => 'plain', // 'smtp', 'plain', 'login', 'crammd5'
'connection_config' => array( // include when auth required to send
'username' => 'user', // user on SMTP host
'password' => 'pass', // password for user on SMTP host
'ssl' => 'tls', // empty, 'tls', or 'ssl'
),
// override email deliveries and store all messages in this path
// 'path' => '/var/spool/swarm',
),
// override regular recipients; send email only to these addresses
// 'recipients' => array(
// 'user1@my.domain',
// 'user2@my.domain',
// ),
// send notifications of comments to comment authors?
'notify_self' => false,
// blind carbon-copy recipients
// 'use_bcc' => true,
// suppress reply-to header
// 'use_replyto' => false, // change the email subject prefix, the default prefix is '[Swarm]' // 'subject_prefix' => '[Swarm]', // Control email thread indexing // 'index-conversations' => true, // ['true'|'false'] default is true, email thread indexing is turned on ),
注意

SWARM_ROOT/data/config.phpファイル内に電子メール設定が記述されていない場合、Swarmは、php.iniファイル内のPHP設定に従って電子メールを送信しようとします。デフォルトでは、php.iniの設定は、インストールされているSendMailに依存します。

重要

制限付きの変更に関連するイベントの電子メール通知の送信は、デフォルトで無効になっています。制限付きの変更の通知を有効にする方法については、「制限付きの変更」を参照してください。

Sender

mailブロック内の送信者項目を使用して、すべての電子メールメッセージ通知で使用される送信者の電子メールアドレスを指定します。デフォルト値は以下のとおりです。

notifications@hostname

hostnameは、Swarmが稼働しているホストの名前、または環境の構成時に指定したホストの名前です。

Transport

mailブロック内のtransportブロックでは、Swarmが電子メール通知の送信時に使用するメールサーバを指定します。このブロック内の大部分の項目は、必要に応じて省略または含めることができます。各フィールドとそのデフォルト値の説明については、Laminas Frameworkの「Mail Transport Configuration Options」を参照してください。

注意

Swarmは、LICENSE.txtファイルに記載されているバージョンのLaminasコンポーネントをサポートしています。それ以降のバージョンのLaminasで導入されたLaminasドキュメントは、Swarmでは動作しません。LICENSE.txtファイルは、Swarmのインストール環境のreadmeフォルダに保管されています。

Swarmは、SMTPではなくカスタムのパス項目を使用して、すべての電子メールメッセージを特定のディレクトリに送信します。詳細については、「すべてのメッセージをディスクに保存」を参照してください。

Recipients

mailブロック内のrecipients項目を使用して、電子メール通知を受け取る受信者のリストを設定することができます。この設定により、通常の受信者が上書きされます。これは、電子メール配信のデバッグが必要な場合に便利です。

<?php
// this block should be a peer of 'p4'
'mail' => array(
'recipients' => array(
'user1@my.domain',
'user2@my.domain',
),
),

任意の数の受信者を設定できます。配列が空白の場合、電子メール通知は元の受信者に配信されます。

notify_self

mailブロック内のnotify_self項目を使用して、コメントの作成者に対して、そのコメントに関する電子メールを送信するかどうかを指定します。デフォルト値はfalseです。trueに設定すると、コメントの作成者に対して、そのコメントに関する電子メール通知が送信されます。

Use BCC

mailブロック内のuse_bcc項目により、BCC電子メールフィールドを使用して受信者の宛先を指定することができます。この項目の値をtrueに設定すると、SwarmTo:フィールドではなくBcc:フィールドを電子メール通知に使用するため、すべての受信者の電子メールアドレスが非表示になります。

<?php
// this block should be a peer of 'p4'
'mail' => array(
'use_bcc' => true,
),

Use Reply-To

mailブロック内のuse_replyto項目を使用して、Reply-To電子メールフィールドにデータを取り込まないようにすることができます。この項目の値をfalseに設定すると、Swarmは通知内のReply-To:フィールドを省略します。デフォルトではこのフィールドに作成者の名前と電子メールアドレスが設定されます。このフィールドをtrueに設定すると、電子メール通知を受信したユーザがそのメールに返信するだけで、その返信が作成者に送信されます。

<?php
// this block should be a peer of 'p4'
'mail' => array(
'use_replyto' => false,
),

電子メールの件名のプレフィックス

mailブロック内のsubject_prefix項目を使用して、Swarmから送信される電子メールの件名行のプレフィックスを設定します。このプレフィックスは、デフォルトで[Swarm]に設定されています。

<?php
// this block should be a peer of 'p4'
'mail' => array(
'subject_prefix' => '[Swarm]',
),

すべてのメッセージをディスクに保存

テストのため、すべての電子メールを受信者に送信するのではなく、ディスクに送信しようとする場合があります。以下の構成ブロックを使用することで、これを実行できます。

<?php
// this block should be a peer of 'p4'
'mail' => array(
'transport' => array('path' => MAIL_PATH),
),

<MAIL_PATH>を、電子メールメッセージが書き込まれる場所の絶対パスに置き換えてください。電子メールを転送すると、電子メールメッセージごとに新しいファイルが作成され、そのファイルがパスディレクトリに保管されます。このパスはすでに存在していて、Webサーバユーザによる書き込みが可能である必要があります。

注意

このパス項目を使用すると、Swarmではtransportブロック内のその他すべての設定が無視されます。そのため、最初に示したサンプルコードでは、パスの箇所がコメント化されています。

電子メールのヘッダ

Swarmは、電子メールプログラムが自動フィルタリングを実行するためのカスタムヘッダが含まれている電子メール通知を送信します。電子メールには、スレッドがサポートされている電子メールクライアント内でメールを正しくスレッド化するためのヘッダも含まれています。

Swarmのすべての電子メールに、以下のヘッダが含まれています。これらのヘッダを使用して、電子メールの送信元のSwarmサーバを特定することができます。

X-Swarm-Host: swarm.perforce.com
X-Swarm-Version: SWARM/2019.1/1798019 (2019/05/09)

ヘッダの正確な値は、使用しているSwarmのバージョンとその設定内容に応じて異なる場合があります。

1つ以上のプロジェクトに通知を適用できる場合は、各プロジェクトの名前を示すリストがX-Swarm-Projectヘッダ内表示されます。レビューが複数のプロジェクトにまたがる場合は、リスト内の各プロジェクトに対して1通の電子メールが送信されます。

X-Swarm-Project: gemini, apollo
X-Swarm-Host: swarm.perforce.com
X-Swarm-Version: SWARM/2019.1/1798019 (2019/05/09)

該当するプロジェクトのうち、1つ以上がプライベートプロジェクトである場合、複数の電子メールが送信されることがあります。メンバー以外のユーザに対してプライベートプロジェクトの存在を公開しないようにするため、それらのユーザに送信される電子メールには、プライベートプロジェクトを参照する項目は記載されません。各プライベートプロジェクトのメンバーは、そのプロジェクトを参照する項目が記載された電メールを受信します。プライベートプロジェクト以外のプロジェクトに対する電子メールには、X-Swarm-Projectヘッダ内のプライベートプロジェクトを参照する項目は記載されません。

例えば、GeminiApolloUltraという3つのプロジェクトにまたがるレビューがあり、そのうちのUltraがプライベートプロジェクトである場合、GeminiプロジェクトとApolloプロジェクトのメンバーは、以下のヘッダを持つ電子メールを受信します。

X-Swarm-Project: gemini, apollo
X-Swarm-Host: swarm.perforce.com
X-Swarm-Version: SWARM/2019.1/1798019 (2019/05/09)

Ultraプロジェクトのメンバーは、以下のヘッダを持つ電子メールを受信します。

X-Swarm-Project: ultra
X-Swarm-Host: swarm.perforce.com
X-Swarm-Version: SWARM/2019.1/1798019 (2019/05/09)

この場合、Ultraプロジェクトと、残り2つのプロジェクトのいずれかに参加しているユーザは、2通の電子メール通知を受信することになりますが、プライベートプロジェクトの情報がメンバー以外に公開されることはありません。

メールスレッドのインデックス付け

デフォルト設定の場合、Swarmによってメールのインデックスが作成されるため、メールクライアント内で、メールでのやり取りがスレッドとして正しく作成されます。メールクライアントでSwarmのメールスレッドが正しく表示されない場合は、メールスレッドのインデックス付け機能を無効にしてください。インデックス付け機能を無効にするには、以下の構成ブロックで値をfalseに設定します。

<?php
// this block should be a peer of 'p4'
'mail' => array(
'index-conversations' => false, // ['true'|'false'] default is 'true'
),