Changes between Initial Version and Version 1 of TracNotification


Ignore:
Timestamp:
Apr 10, 2015, 1:03:53 PM (9 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracNotification

    v1 v1  
     1= チケット更新情報のメール通知 = #EmailNotificationofTicketChanges
     2[[TracGuideToc]]
     3
     4Trac はチケット更新情報をメールで通知出来ます。 (英語版では Notification)
     5
     6メールによる更新通知は、ユーザに関係するチケットについての最新情報を随時に提供したり、専用 ML にチケットの更新情報を配信したりするのに便利な機能です。例えば、 [http://lists.edgewall.com/archive/trac-tickets/ Trac-tickets] を見るとどのようにセットアップされているか見ることができます。
     7
     8通知機能はデフォルトでは無効になっています。有効化とコンフィグレーションは [wiki:TracIni trac.ini] で行うことができます。
     9
     10== 通知メールを受け取る == #ReceivingNotificationMails
     11新しいチケットを登録したりコメントを追加する際、 ''報告者'' (英語版では ''reporter'')、 ''担当者'' (英語版では ''assigned to/owner'') もしくは ''関係者'' (英語版では ''cc'') フィールドに有効なメールアドレスやユーザ名を入力してください。チケットに更新があると、 Trac が自動的にメールを送信します。 (どのように通知メール機能を設定しているかによります)
     12
     13これは、興味のあるチケットや機能追加に関する最新情報を随時受け取りたい場合に便利な機能です。
     14
     15=== 通知メールで受信するメールアドレスを設定する方法 === #Howtouseyourusernametoreceivenotificationmails
     16
     17完全なメールアドレスあるいはユーザー名を入力することで、通知メールを受け取ることができます。 単純なユーザ名やログイン名で通知を受け取るには、''ユーザ設定 (Preferences)'' ページで、正しいメールアドレスを入力する必要があります。
     18
     19TracIni ファイルにデフォルトドメイン名 ('''`smtp_default_domain`''') を指定することでも、単純なユーザ名で通知を受け取ることができるようになります。 (後述する [#ConfigurationOptions コンフィグレーション オプション] を参照してください) 。この場合、ユーザ名にデフォルトドメインが追加されますので、 "イントラネット" 環境で仕様している場合は便利です。
     20
     21Kerberos / Active Directory 認証に Apache と mod_kerb を使用する際、ユーザ名は ('''`username@EXAMPLE.LOCAL`''') という形式を取ります。これをメールアドレスとして解釈されない様にするためには、 ('''`ignore_domains`''') に Kerberos ドメインを追加します。
     22
     23== SMTP 通知の設定 == #ConfiguringSMTPNotification
     24
     25'''重要:''' TracNotification を正しく動作させるには、[wiki:TracIni trac.ini] に `[trac] base_url` を設定する必要があります。
     26
     27=== コンフィグレーション オプション === #ConfigurationOptions
     28trac.ini の `[notification]` セクションで設定できるオプションです。[[BR]](訳注: 0.10 以降では `TracIni` マクロを使用することで正確なオプション一覧を取得できます。以下のリストは必要に応じて `[[TracIni(notification)]]` に置き換えて使用してください。)
     29
     30 * '''`smtp_enabled`''': メール通知を有効にします
     31 * '''`smtp_from`''': 通知メールの ''Sender''-ヘッダに使用するメールアドレス
     32 * '''`smtp_from_name`''': 通知メールの ''Sender''-ヘッダに使用する送信者名
     33 * '''`smtp_from_author`''': (''1.0 以降'') 通知メールの'From:'のヘッダのメールアドレスとして更新者(新しいチケットの報告者、もしくはコメントの作成者)を使用。(default: false) もし更新者がメールアドレスを登録していなかったら、`smtp_from` と `smtp_from_name` が代わりに使用されます
     34 * '''`smtp_replyto`''': 通知メールの''Reply-To''-ヘッダに使用するメールアドレス
     35 * '''`smtp_default_domain`''': (''0.10 以降'') ドメイン名を含んでいないアドレスに特定のドメイン名を追加します。完全修飾されたアドレスは修正されません。ユーザの設定からメールアドレスが分からないときに、デフォルトドメインをすべてのユーザ名 / ログイン名に追加します
     36 * '''`smtp_always_cc`''': 常に通知メールを送信するメールアドレスのリスト。 ''主に専用MLにチケット更新を通知するのに使用されます''
     37 * '''`smtp_always_bcc`''': (''0.10 以降'') 常に通知メールを送信するメールアドレスの一覧。ただし、通知メールの他の受信者からメールアドレスが見えません
     38 * '''`smtp_subject_prefix`''': (''0.10.1 以降'') e-mail の subject の前に挿入されるテキスト。デフォルトは "!__default!__"
     39 * '''`always_notify_reporter`''': 報告者フィールドのすべてのメールアドレスに常に通知メールを送信します (default: false)
     40 * '''`always_notify_owner`''': (''0.9 以降'') 担当者フィールドのメールアドレスに常に通知メールを送信します (default: false)
     41 * '''`always_notify_updater`''': (''0.10 以降'') チケットの更新者に常に通知メールを送信します (default: false)
     42 * '''`use_public_cc`''': (''0.10 以降'') To: (担当者, 報告者) と CC: のアドレスのリストがすべての受信者に見えるかどうかを設定します ( デフォルトは ''Bcc:'' で見えません)
     43 * '''`use_short_addr`''': (''0.10 以降'') 通知メールの配信でメールアドレスがドメイン名を含むようにするかどうかを設定します (例 ''@<domain.com>'' で終わらないようにする)。このオプションは SMTP サーバがローカルアドレスをハンドリングでき、ローカルのメールボックスとユーザ名/ログイン名をマップできるような環境、イントラネット内で使用するときに便利です
     44 * '''`ignore_domains`''': メールアドレスの一部と見なされるべきでないドメインのカンマ区切りリスト (Kerberos ドメインのユーザ名向け)
     45 * '''`mime_encoding`''': (''0.10 以降'') MIME のエンコードのスキームを選択します。サポートする値:
     46   * `none`: デフォルト値。テキストがプレーンな ASCII 文字コード、もしくはその他 8 ビットの文字コードであるときに、 7 ビットエンコードを使用します
     47   * `base64`: どのような内容が含まれていても動作します。敏感なアンチスパム / アンチウイルスエンジンではいくつかの問題があるかもしれません
     48   * `qp` または `quoted-printable`: 8 ビットエンコーディングが使用できない場合、ヨーロッパの言語に対して最適です ( base64 よりもコンパクトです )
     49 * '''`ticket_subject_template`''': (''0.11 以降'') 通知メールの件名 (Subject) に使用する [http://genshi.edgewall.org/wiki/Documentation/text-templates.html Genshi テキストテンプレート]
     50 * '''`email_sender`''': (''0.12 以降'') `IEmailSender` インタフェースを実装しているコンポーネント名。通知システムは、ここで設定されたコンポーネントを使用してメールを送信します。現在のところ Trac では以下のコンポーネントが提供されています:
     51   * `SmtpEmailSender`: SMTP サーバに接続してメールを送信する (デフォルト)
     52   * `SendmailEmailSender`: `sendmail` 互換の実行ファイルを実行してメールを送信する
     53
     54'''`smtp_from`''' か '''`smtp_replyto`''' の一方 (もしくは両方) が ''必ず'' 設定されていなければなりません。設定されていない場合、 Trac は通知メールの送信を拒否します。
     55
     56以下のオプションは SMTP でのメッセージ伝送方法を指定するために使用します。
     57 * '''`smtp_server`''': 通知メッセージに使用されるSMTPサーバ
     58 * '''`smtp_port`''': (''0.9 以降'') SMTP サーバが使用するポート番号
     59 * '''`smtp_user`''': (''0.9 以降'') SMTP 認証アカウントのユーザID
     60 * '''`smtp_password`''': (''0.9 以降'') SMTP 認証アカウントのパスワード
     61 * '''`use_tls`''': (''0.10 以降'') SMTP サーバ経由で通知メールを送信するときに、GMail などの [http://en.wikipedia.org/wiki/Transport_Layer_Security TLS] を使用するかどうかを切り替えます
     62
     63以下のオプションは `sendmail` 互換の実行ファイルを使用する場合のメッセージ伝送方法を指定するために使用します。
     64 * '''`sendmail_path`''': (''0.12 以降'') sendmail の実行ファイルへのパスを設定します。ここで指定する sendmail プログラムは `-i` および `-f` オプションを解釈できなければなりません
     65
     66=== コンフィグレーションの例 (SMTP) === #ExampleConfigurationSMTP
     67{{{
     68[notification]
     69smtp_enabled = true
     70smtp_server = mail.example.com
     71smtp_from = notifier@example.com
     72smtp_replyto = myproj@projects.example.com
     73smtp_always_cc = ticketmaster@example.com, theboss+myproj@example.com
     74}}}
     75
     76=== コンフィグレーションの例 (`sendmail`) === #ExampleConfigurationsendmail
     77{{{
     78[notification]
     79smtp_enabled = true
     80email_sender = SendmailEmailSender
     81sendmail_path = /usr/sbin/sendmail
     82smtp_from = notifier@example.com
     83smtp_replyto = myproj@projects.example.com
     84smtp_always_cc = ticketmaster@example.com, theboss+myproj@example.com
     85}}}
     86
     87=== メールの件名をカスタマイズする === #Customizingthee-mailsubject
     88`ticket_subject_template` オプションを使用することでメールの件名をカスタマイズできます。このオプションには [http://genshi.edgewall.org/wiki/Documentation/text-templates.html Genshi テキストテンプレート] を含めることができます。デフォルト値は以下の通りです:
     89{{{
     90$prefix #$ticket.id: $summary
     91}}}
     92テンプレートでは以下の変数が使用可能です:
     93
     94 * `env`: プロジェクトの Environemnt ([http://trac.edgewall.org/browser/trunk/trac/env.py env.py] 参照)
     95 * `prefix`: `smtp_subject_prefix` で定義したプレフィックス
     96 * `summary`: チケットの概要 (Summary), 概要が変更されている場合は古い値
     97 * `ticket`: ticket model オブジェクト ([http://trac.edgewall.org/browser/trunk/trac/ticket/model.py model.py] 参照)。個別のチケット属性は `$ticket.milestone` のように、ドット (.) で区切って (訳注: 英語での) 属性名を加えることで、参照可能
     98
     99=== メールの内容をカスタマイズする === #Customizingthee-mailcontent
     100
     101通知メールの内容は `trac/templates` の `ticket_notify_email.txt` を基に生成されます。編集した `ticket_notify_email.txt` を Environment の templates ディレクトリに配置することで、カスタマイズすることができます。デフォルトはこのようになっています:
     102
     103{{{
     104$ticket_body_hdr
     105$ticket_props
     106{% choose ticket.new %}\
     107{%   when True %}\
     108$ticket.description
     109{%   end %}\
     110{%   otherwise %}\
     111{%     if changes_body %}\
     112${_('Changes (by %(author)s):', author=change.author)}
     113
     114$changes_body
     115{%     end %}\
     116{%     if changes_descr %}\
     117{%       if not changes_body and not change.comment and change.author %}\
     118${_('Description changed by %(author)s:', author=change.author)}
     119{%       end %}\
     120$changes_descr
     121--
     122{%     end %}\
     123{%     if change.comment %}\
     124
     125${changes_body and _('Comment:') or _('Comment (by %(author)s):', author=change.author)}
     126
     127$change.comment
     128{%     end %}\
     129{%   end %}\
     130{% end %}\
     131
     132--
     133${_('Ticket URL: <%(link)s>', link=ticket.link)}
     134$project.name <${project.url or abs_href()}>
     135$project.descr
     136}}}
     137== Email サンプル == #SampleEmail
     138{{{
     139#42: testing
     140---------------------------+------------------------------------------------
     141       Id:  42             |      Status:  assigned
     142Component:  report system  |    Modified:  Fri Apr  9 00:04:31 2004
     143 Severity:  major          |   Milestone:  0.9
     144 Priority:  lowest         |     Version:  0.6
     145    Owner:  anonymous      |    Reporter:  jonas@example.com
     146---------------------------+------------------------------------------------
     147Changes:
     148  * component:  changset view => search system
     149  * priority:  low => highest
     150  * owner:  jonas => anonymous
     151  * cc:  daniel@example.com =>
     152         daniel@example.com, jonas@example.com
     153  * status:  new => assigned
     154
     155Comment:
     156I'm interested too!
     157
     158--
     159Ticket URL: <http://example.com/trac/ticket/42>
     160My Project <http://myproj.example.com/>
     161}}}
     162
     163== MS Outlook 向け E メールカスタマイズ == #Customizinge-mailcontentforMSOutlook
     164
     165通常何も設定していなければ、 MS Outlook では可変長フォントのプレーンテキストメールを提示します。そのため、チケットプロパティの表は確実にゴチャゴチャしたように見えます。この問題は、 [#Customizingthee-mailcontent メールテンプレート] のカスタマイズにより解決することができます。
     166
     167
     168テンプレートの2行目を次のように置き換えます:
     169{{{
     170$ticket_props
     171}}}
     172
     173この代わりに (''Python 2.6 以降が必要''):
     174{{{
     175--------------------------------------------------------------------------
     176{% with
     177   pv = [(a[0].strip(), a[1].strip()) for a in [b.split(':') for b in
     178         [c.strip() for c in
     179          ticket_props.replace('|', '\n').splitlines()[1:-1]] if ':' in b]];
     180   sel = ['Reporter', 'Owner', 'Type', 'Status', 'Priority', 'Milestone',
     181          'Component', 'Severity', 'Resolution', 'Keywords'] %}\
     182${'\n'.join('%s\t%s' % (format(p[0]+':', ' <12'), p[1]) for p in pv if p[0] in sel)}
     183{% end %}\
     184--------------------------------------------------------------------------
     185}}}
     186
     187チケットプロパティの表は、選択するプロパティのリストに置き換えられます。MS Outlook を使用する際に、デフォルトの表よりわかりやすくなるように、タブ文字で名前と値を分離しています。
     188{{{#!div style="margin: 1em 1.75em; border:1px dotted"
     189{{{#!html
     190#42: testing<br />
     191--------------------------------------------------------------------------<br />
     192<table cellpadding=0>
     193<tr><td>Reporter:</td><td>jonas@example.com</td></tr>
     194<tr><td>Owner:</td><td>anonymous</td></tr>
     195<tr><td>Type:</td><td>defect</td></tr>
     196<tr><td>Status:</td><td>assigned</td></tr>
     197<tr><td>Priority:</td><td>lowest</td></tr>
     198<tr><td>Milestone:</td><td>0.9</td></tr>
     199<tr><td>Component:</td><td>report system</td></tr>
     200<tr><td>Severity:</td><td>major</td></tr>
     201<tr><td>Resolution:</td><td> </td></tr>
     202<tr><td>Keywords:</td><td> </td></tr>
     203</table>
     204--------------------------------------------------------------------------<br />
     205Changes:<br />
     206<br />
     207&nbsp;&nbsp;* component: &nbsp;changset view =&gt; search system<br />
     208&nbsp;&nbsp;* priority: &nbsp;low =&gt; highest<br />
     209&nbsp;&nbsp;* owner: &nbsp;jonas =&gt; anonymous<br />
     210&nbsp;&nbsp;* cc: &nbsp;daniel@example.com =&gt;<br />
     211&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;daniel@example.com, jonas@example.com<br />
     212&nbsp;&nbsp;* status: &nbsp;new =&gt; assigned<br />
     213<br />
     214Comment:<br />
     215I'm interested too!<br />
     216<br />
     217--<br />
     218Ticket URL: &lt;http://example.com/trac/ticket/42&gt;<br />
     219My Project &lt;http://myproj.example.com/&gt;<br />
     220}}}
     221}}}
     222
     223**重要**: `sel` にリストされているチケットフィールドのみ HTML メールに含まれます。もし、メールに当然含まなくてはならないカスタムチケットフィールドを定義するのであれば、`sel` に追加しなければなりません。例:
     224{{{
     225   sel = ['Reporter', ..., 'Keywords', 'Custom1', 'Custom2']
     226}}}
     227
     228しかしながら、 自動的なHTMLフォーマットのメールのように完璧ではありません。それでも、現状のチケットのプロパティをマイクロソフトのアウトルックによって少なくとも読むことは出来ます。。。
     229
     230
     231== SMTP リレーホストとして GMail を使用する == #UsingGMailastheSMTPrelayhost
     232
     233以下のような設定を使用します
     234{{{
     235[notification]
     236smtp_enabled = true
     237use_tls = true
     238mime_encoding = base64
     239smtp_server = smtp.gmail.com
     240smtp_port = 587
     241smtp_user = user
     242smtp_password = password
     243}}}
     244
     245''user'' と ''password'' の箇所は、 GMail のアカウントで置き換えてください。 ''たとえば'' [http://gmail.com] にログインするときに使用しているものです。
     246
     247代わりに `smtp_port = 25` を使用することもできます。 (訳注: おそらく `gmail.com` 宛のメールしか届きません)[[br]]
     248しかし `smtp_port = 465` は使用できません。これは動作しないだけでなく、通知メール送信がデッドロックします。ポート番号 465 は SMTPS プロトコル (訳注: SSMTP とも言います) に使用されますが、 Trac はこれをサポートしていません。詳しくは [trac:comment:2:ticket:7107 #7107] を参照してください。
     249
     250== 自分が変更した通知をフィルタする == #Filteringnotificationsforonesownchanges
     251Gmail では、以下のフィルタを使用できます:
     252
     253{{{
     254from:(<smtp_from>) (("Reporter: <username>" -Changes) OR "Changes (by <username>)")
     255}}}
     256
     257Trac 0.10 の場合は、下記のフィルタを使用してください:
     258{{{
     259from:(<smtp_from>) (("Reporter: <username>" -Changes -Comment) OR "Changes (by <username>)" OR "Comment (by <username>)")
     260}}}
     261
     262通知メールを削除する場合などにも使用できます。
     263
     264Thunderbird で IMAP を使用している場合は、この方法は使えません
     265(http://kb.mozillazine.org/Filters_(Thunderbird)#Filtering_the_message_body 参照)。
     266
     267最良の方法は conf/trac.ini の "always_notify_updater" を false に設定することです。
     268しかし、この方法では自分が担当者 (owner) になっていたり、報告 (reporter) したチケットへのコメントが取得できなくなります。
     269
     270プラグインを追加することで解決するかもしれません:
     271http://trac-hacks.org/wiki/NeverNotifyUpdaterPlugin
     272
     273== トラブルシューティング == #Troubleshooting
     274
     275通知メールの設定がうまくいかないとき、最初にログが出力されるようになっているか確かめて下さい。そしてどういうエラーメッセージが出力されているかを見てください。[trac:TracLogging TracLogging] にログについて書いてあるので見て下さい。
     276
     277通知メールのエラーは Web インタフェースで報告されないので、誰かがチケットを更新したり、新規のチケットを登録しても通知メールが届かないことにまったく気づかないでしょう。 Trac の管理者はエラートレースを追い、ログをみる必要があります。
     278
     279=== ''Permission denied'' エラー === #Permissiondeniederror
     280
     281たいていのエラーメッセージ:
     282{{{
     283  ...
     284  File ".../smtplib.py", line 303, in connect
     285    raise socket.error, msg
     286  error: (13, 'Permission denied')
     287}}}
     288
     289このエラーはたいていサーバのセキュリティの設定に起因します: 多くの Linux のディストリビューションでは Web サーバ (Apache など ...) からローカルの SMTP サーバにメールを送信させません。
     290
     291多くのユーザはマニュアルに SMTP サーバに接続できるか試すよう書いてあり、成功するので混乱するでしょう:
     292{{{
     293telnet localhost 25
     294}}}
     295トラブルの原因は、一般ユーザは SMTP サーバに接続できるけれども、 Web サーバは接続できないということです:
     296{{{
     297sudo -u www-data telnet localhost 25
     298}}}
     299
     300このような場合、 Web サーバ が SMTP サーバにメールを送信するときに認証を行うように設定する必要があります。実際の設定は使用している Linux のディストリビューションと現在のセキュリティのポリシーによります。 Trac の [trac:MailingList MailingList] のアーカイブを参照して下さい。
     301
     302関係のあるメーリングリストのスレッド:
     303 * SELinux: http://article.gmane.org/gmane.comp.version-control.subversion.trac.general/7518
     304
     305Fedora 10 の SELinux では下記のコマンドで対処できます:
     306{{{
     307$ setsebool -P httpd_can_sendmail 1
     308}}}
     309=== ''Suspected spam'' エラー === #Suspectedspamerror
     310
     311SMTP サーバの中には Trac によって送信される通知メールを拒否するのもあるでしょう。
     312
     313Trac はデフォルトで通知メールを Base64 エンコーディングして受信者に送信します。メールの本文 (Body) 全体がエンコードされる (訳注:チケットのタイトルに日本語が含まれる場合、通知メールの Subject ヘッダも utf-8 base64 エンコーディングされます) ので、繊細なメールサーバ上の ''false positive'' な SPAM 発見プログラムのトリガになってしまいます。このような状況に遭遇した場合、 `mime_encoding` オプションでデフォルトのエンコーディングを "quoted-printable" に変更することを推奨します。
     314
     315"quoted-printable" エンコーディングは ラテン系の文字セットで使用すると効果があります。アジア系の文字セットでは、 Base64 エンコーディングに固定することを推奨します。 (訳注: 日本語のメールで主に使用されるエンコードは `ISO-2022-JP` ですが、 Trac が送信する通知メールは `UTF-8` でエンコードされ、さらに `BASE64` か `quoted-printable` で 7bit-safe な形式にエンコードされます。 `ISO-2022-JP` エンコーディングでない日本語のメールは Spam 検出エンジンに誤判定されやすくなる傾向があるようです。また、 MUA がこれらのエンコードに対応していない場合、たとえ受信できたとしても文字化けしたり表示できない可能性があります。)
     316
     317=== ''501, 5.5.4 Invalid Address'' エラー === #a5015.5.4InvalidAddresserror
     318
     319IIS 6.0 で
     320{{{
     321Failure sending notification on change to ticket #1: SMTPHeloError: (501, '5.5.4 Invalid Address')
     322}}}
     323上記のエラーが trac のログにでる場合、 [http://support.microsoft.com/kb/291828 ここ]を参考に解決してください。
     324
     325
     326----
     327See also: TracTickets, TracIni, TracGuide