Alfresco メール取り込み設定ガイド
getmail + postfix + SpamAssassin + Alfresco Community 26.1(Ansible インストール)/ Ubuntu 24.04
1. システム構成の概要
メールサーバーから自動受信したメールをSpamAssassinでフィルタリングし、Alfrescoに取り込む構成です。
| コンポーネント | 役割 | 備考 |
|---|---|---|
| getmail 6.x | POP3S でメール取得 | cron で5分毎に実行 |
| SpamAssassin 4.0 | スパム判定・件名に ***SPAM*** 追加 | スコア10以上は破棄 |
| postfix 3.8 | Alfresco への配送・遅延制御 | 5秒/通の遅延設定 |
| Alfresco 26.1 | メール格納・振り分け | Community版 Ansible インストール |
2. Alfresco 事前設定(alfresco-global.properties)
Alfresco のメール受信機能を有効にするため、設定ファイルにメール関連プロパティを追加します。
① サンプルファイルから設定を確認
サンプルファイルからメール関連の設定を参照します。
サンプルファイル内のメール関連の記述(抜粋):
② alfresco-global.properties に追記
上記サンプルを参考に、実際の設定ファイルへ追記します。
ファイル末尾の ### Begin - Custom user properties - ANSIBLE MANAGED BLOCK セクションに以下を追記します。
email.server.port=25 はpostfixなどのMTAが使用しているため、1025など別のポートに変更してください。postfix の relayhost に指定するポートと一致させます。
email.inbound.unknownUser=admin は、送信者がAlfrescoのユーザーとして登録されていない場合に使用するユーザーです。後述のルール設定でフォルダへの書き込み権限が必要なため、管理者権限を持つユーザーを指定します。
③ Alfrescoサービスを再起動
3. Postfix のインストールと設定
Ubuntu 24.04 に postfix をインストールし、Alfresco への遅延配送を設定します。
インストール
/etc/postfix/main.cf の設定
4. getmail のインストールと設定
インストール
~/.getmail/getmailrc の設定
%(sender) を引数として渡すことで、SpamAssassin処理後も送信者アドレスが正しくpostfixに渡されます。
cron 設定(5分毎)
5. SpamAssassin の導入
インストール
/etc/spamassassin/local.cf の設定
| スコア | 対応 |
|---|---|
| 5.0 以上 | スパム判定(件名に ***SPAM*** 追加) |
| 10.0 以上 | 破棄(Alfresco に配送しない) |
| 5.0 未満 | 正常メール(Alfresco へ配送) |
6. spamc-wrapper スクリプト
getmail から呼び出され、SpamAssassin でフィルタリング後に postfix 経由で Alfresco へ配送します。
content_filter = spamassassin を設定するとメールループが発生します。必ずコメントアウトし、getmailrc からラッパースクリプトを直接呼び出す方式を採用してください。
7. Alfresco スクリプト群
メール格納フォルダのルールに登録するJavaScriptスクリプトです。
リポジトリ > Data Dictionary > Scripts に登録し、メール格納フォルダのルールに設定します。
sortAdd.js のみ各振り分け先フォルダのルールに設定します。
| スクリプト | 役割 | 実行設定 |
|---|---|---|
| mailRename.js | 件名に送信日時を付加・URLエンコード文字を全角に置換 | 通常実行 |
| mailFolderCreate.js | メール本体受信時にフォルダを作成・アスペクト付与 | 通常実行 |
| mailFolderMove.js | メールをフォルダへ移動 | バックグラウンド実行 |
| mailSort.js | 送信者アドレスで振り分け・スパムは「その他」へ | 通常実行 |
| mailSortAdd.js | 手動振り分け時に送信者アドレスを登録 | 各振り分けフォルダのルール |
mailRename.js — ファイル名に送信日時を追加
同名メールの重複を防ぐため送信日時を付加し、URLエンコードされた記号を全角に置換します。HTMLメールの場合はMIMEタイプをtext/htmlに変更します。
mailFolderCreate.js — メールフォルダ作成
メール本体(送信者情報あり)受信時にフォルダを作成し、発行日・送信者アスペクトを付与します。次のメールまでフォルダのノードを cs:address に一時保存します。
mailFolderMove.js — メールをフォルダへ移動(バックグラウンド実行)
一時保存されたフォルダのノードへメールを移動します。発行日アスペクトを付与して送信者・送信日時も引き継ぎます。
mailSort.js(振り分けスクリプト v1.2)
mailSortAdd.js(アドレス登録スクリプト)
8. カスタムモデルの設定
モデルマネージャーで作成したカスタムモデルの構成です。
| アスペクト名 | プロパティ | 型 | 用途 |
|---|---|---|---|
| cs:published | cs:publishdate | d:date | 発行日(ソート用) |
| cs:publisher | d:text | 発行者 | |
| cs:maillist | cs:address | d:text(maxLength=50000) | 振り分けアドレスリスト |
d:text 型・maxLength=50000 で設定してください。d:mltext 型はロケール情報が各行に付加されるため、実質的に保存できるアドレス数が大幅に減少します(約200件 → 約30件)。
モデルマネージャーでの設定
| 項目 | 設定値 |
|---|---|
| 名前 | address |
| タイトル | アドレスリスト |
| 型 | d:text |
| 必須 | いいえ |
| 複数値 | いいえ |
| 制約(LENGTH)maxLength | 50000 |
d:text + maxLength=50000 の場合、1件あたり平均30文字のアドレスで約1500件以上登録可能です。
モデルXMLでの設定(直接編集する場合)
振り分け先フォルダへのアスペクト設定
各振り分け先フォルダに cs:maillist アスペクトを適用する必要があります。適用されていない場合、cs:address プロパティが利用できず振り分けが機能しません。
cs:maillist アスペクトを適用する必要があります。適用されていない場合、cs:address プロパティが利用できず振り分けが機能しません。
cs:maillist(メール一覧) を選択し、「追加」 をクリックします。
cs:address(アドレスリスト)フィールドが表示されます。手動振り分け時は mailSortAdd.js が自動でアドレスを追記します。
/alfresco/api/-default-/public/search/versions/1/search)でノードを検索し、一括除去します。
10. トラブルシューティング
メールループ(too many hops)
content_filter = spamassassin を設定するとメールループが発生します。必ずコメントアウトしてください。
振り分けアドレス上限超過
- 原因:
d:text型プロパティの文字数制限 - 対策:
d:mltext型のcs:addresslongに移行し、cs:maillistアスペクトを振り分けフォルダに適用する
ログ確認コマンド
設定確認チェックリスト
- postfix の
content_filterがコメントアウトされている - spamc-wrapper.sh に実行権限がある(
chmod +x) - getmailrc の destination が spamc-wrapper.sh を参照している
- SpamAssassin(spamd)が起動している
- 振り分けフォルダに
cs:maillistアスペクトが適用されている - share-config-custom.xml の XML 構文エラーがない(
xmllint --nooutで確認)