オープンソース

一覧へ

11. Appendix

11.1. SaMMAがサポートするMTA

サポートしているMTA(Mail Transfer Agent)の設定は下記を参照してください。

11.2. 添付ファイル名に外字を使用する場合

添付ファイル名に外字を使用する場合、 安全化したファイルのファイル名が文字化けしてしまうことがあります。その場合は、 以下のように文字コード変換を行う設定をSaMMAの起動スクリプトで行ってください。

11.2.1. iconvのインストール

libiconvのソースパッケージを以下のURLから入手してください。

https://github.com/designet-inc-oss/libiconv

libiconvのソースパッケージをダウンロードしたら、環境に合わせてRPMパッケージを作成してください。 上記のURLのlibiconvソースパッケージでは、/usr/loca/samma配下にインストールされます。

11.2.2. SaMMA起動スクリプトの作成

libiconvをインストールしたら、SaMMAの起動スクリプトを作成してください。

以下は、SaMMAのインストールディレクトリが/usr/localの時に、SaMMAの起動スクリプトを/usr/local/bin/sammainitとして作成した場合の例です。

SaMMA起動スクリプトの例(安全化モード)(/usr/local/bin/sammainit)
#!/bin/sh

export LD_LIBRARY_PATH=/usr/local/samma/lib
export LD_PRELOAD=/usr/local/samma/lib/preloadable_libiconv.so
export CHARSET_ALIAS="Shift_JIS=CP932:EUC-JP=EUC-JP-MS:ISO-2022-JP=ISO-2022-JP-MS"

/usr/local/bin/samma
SaMMA起動スクリプトの例(削除モード)(/usr/local/bin/sammainit)
#!/bin/sh

export LD_LIBRARY_PATH=/usr/local/samma/lib
export LD_PRELOAD=/usr/local/samma/lib/preloadable_libiconv.so
export CHARSET_ALIAS="Shift_JIS=CP932:EUC-JP=EUC-JP-MS:ISO-2022-JP=ISO-2022-JP-MS"

/usr/local/bin/samma -d

この起動スクリプトでは、CHARSET_ALIAS環境変数を使用して、 CP932、EUC-JP-MS、ISO-2022-JP-MSの変換を可能にしています。

SaMMA起動スクリプトを作成したら、SaMMAを再起動します。

  • inittabから起動している場合

SaMMAをinittabから起動している場合は、/etc/inittabの設定を変更します。

/etc/inittabの設定例
ml:345:respawn:/usr/local/bin/sammainit

設定後、init qコマンドで設定を反映してください。

  • systemdから起動している場合

SaMMAをsystemdから起動している場合は、systemdのサービス設定ファイルを変更します。

/usr/lib/systemd/system/samma.serviceの設定例
[Unit]
Description=SaMMA (SAfety Mail gateway with Milter Api)

[Service]
ExecStart=/usr/local/bin/sammainit
Restart=always

[Install]
WantedBy=multi-user.target

設定を反映したら、 現在起動しているSaMMAのプロセスをkillコマンドで停止してください。SaMMAが再起動します。

11.3. オンラインストレージ連携の仕組みについて

オンラインストレージ連携は、次のような仕組みで実装されています。

11.3.1. NextCloudへのアップロードの仕組み

SaMMAから添付ファイルをNextCloudにアップロードする仕組みは、パスワードZIP暗号化方式ではZipCommandにzipコマンドを指定しますが、代わりにos_uploaderコマンドを指定します。

zipコマンドは、受信者に送るメールに実際に添付する添付ファイルとして 元の添付ファイルをパスワード付きZIPファイルに変換しますが、os_uploaderコマンドではその代わりに元の添付ファイルをNextCloudにアップロードし、NextCloud上にダウンロード専用URLを作成して そのURLを記入したテキストファイルをSaMMAに引き渡します。

zipコマンドによる添付ファイル暗号化の動作イメージ

図: zipコマンドによる添付ファイル暗号化の動作イメージ

os_uploaderコマンドを利用したNextCloudへのファイルアップロードイメージ

図: os_uploaderコマンドを利用したNextCloudへのファイルアップロードイメージ

os_uploaderコマンドは、概略次のように動作します。

  • SaMMAから引き渡された送信者メールアドレス情報から、NextCloud上に登録されたユーザ(送信者ユーザ)を探す
  • NextCloudの管理者ユーザのファイル領域に送信者ユーザ向けのフォルダを作成し、送信者ユーザと共有するよう設定する
  • 送信者ユーザ向けのフォルダの中に現在処理しているメール向けのフォルダを作成する
  • 添付ファイルすべてを現在処理しているメール向けのフォルダにアップロードする
    • この時、送信者ユーザに付与するアクセス権限は「閲覧」と「削除」のみとする
  • 現在処理しているメール向けのフォルダにパスワードを設定し、ワンタイムURLで共有するように設定する
  • オンラインストレージ連携方式ではZIPファイルを作成する代わりに、ワンタイムURLが書かれたテキストファイルを作成し、SaMMAに引き渡す
  • 上記のような方式でアップロードすることにより、次のようなメリットがあります。
    • 添付ファイルの受け渡しが、パスワードZIP方式と同等もしくはそれ以上に安全になる
    • 送信者ユーザは自分が送信した添付ファイルを自分自身で確認すること、削除することができる
    • 管理者は全ユーザの添付ファイルを一元管理することができる

11.3.2. NextCloud上でのファイル共有の方法

os_uploaderからNextCloudにアップロードされたファイルは、 次のように共有されます。

  • アップロード先は、管理者権限ユーザ用スペースです
    • アップロード時は、この管理者権限ユーザアカウントを利用してAPIにアクセスします
    • このユーザは管理者権限があればよいので、 通常システム管理を行うユーザとは別のユーザを作成して運用しても構いません
  • NextCloud上には、あらかじめ送信者用アカウントを作成しておきます。 送信者用アカウントのメールアドレス属性には、 送信者のメールアドレスを設定しておきます。
  • 添付ファイルのアップロードは次のように行います
    • 管理者現減ユーザアカウント用スペースに送信者メールアドレス名のフォルダが存在しないとき、 次の操作を行います
      • 送信者メールアドレス名のフォルダを作成します
      • 作成したフォルダを送信者ユーザに共有します
        • 送信者ユーザに与える権限は、閲覧、ダウンロードと削除です
        • これにより、送信者ユーザがNextCloudにログインして添付ファイルの削除ができるようになります
    • 送信者メールアドレス名のフォルダ配下に、日付時刻を含むフォルダを作成します
    • 作成したフォルダに、現在処理中のメールの添付ファイルをアップロードします
    • 作成したフォルダを、パスワード付きでURL共有します
      • このURL共有の権限は、閲覧とダウンロードのみです
  • 共有URL情報が書かれたテキストファイルを受信者に届けるメールに添付します
    • これにより、メール受信者がWeb経由で添付ファイルをダウンロードできるようになります
NextCloud上でのファイル共有のイメージ

図: NextCloud上でのファイル共有のイメージ

11.3.3. NextCloudのファイル自動削除の仕組み

NextCloud上では、ファイル自動削除の設定を適切に行うことで、 添付ファイルを一定期間のみ保存し、それ以降は削除してしまうことでダウンロードできなくすることができます。

この仕組みは、「自動タグ付け機能」と「タグ付けされたファイルの自動削除機能」とを組み合わせて行います。 自動タグ付け機能は、NextCloudのFiles automated taggingアプリにより実現します。 タグ付けされたファイルの自動削除機能は、NextCloudのRetentionアプリにより実現します。

自動タグ付け機能では、os_uploaderからアップロードされたファイルのみを選択的にタグ付けするため、 タグ付け条件を工夫して付けます。 通常、メールサーバはPCと同じリモートアドレスを持たないため、 接続元のIPアドレスからアップロードされたファイルすべてにタグ付けするように設定するのが最も簡単です。 ただし、環境によっては、NAT機能などでPCからのアクセスと同一のIPアドレスから接続したように見えてしまうと、 接続元IPアドレスによる絞り込みが期待するように動作しないことがあります。

こういった場合は、SaMMAとの連携専用の管理者権限を持ったユーザを作成し、 このユーザのフォルダ領域配下にアップロードされたファイルすべてをタグ付けするようにします。

自動削除機能は、特定のタグが付いたファイルに対し、作成から一定期間経過したものを自動的に削除する機能です。

一覧へ