



Next: 4. 使い方 Up: SaMMA Previous: 2. 準備
- 3.1 SaMMAの入手と展開
- 3.2 libdgライブラリ
- 3.3 SaMMAの環境設定
- 3.3.1 環境設定ファイル(samma.conf)
- 3.3.2 パスワード通知書式ファイル(samma.tmpl)
- 3.3.3 文字コード変換失敗用パスワード通知書式ファイル(errmsg.tmpl)
- 3.3.4 オンラインストレージ連携設定ファイル(os_uploader.conf)
- 3.3.5 ダウンロードURL通知ファイルのテンプレート(os_uploader.tmpl)
- 3.4 安全化ポリシーの設定(LDAPを利用したユーザ個別設定を行わない場合)
- 3.5 安全化ポリシーの設定(LDAPを利用したユーザ個別設定を行う場合)
- 3.6 メールサーバの設定
- 3.7 ログ設定
- 3.8 SaMMAの起動
- 3.9 安全化設定の評価基準について
- 3.10 削除設定の評価基準について
- 3.11 無害化設定の評価基準について
- 3.12 BCC自動追加機能
- 3.13 Whitelist機能
- 3.14 変換不可能ファイル名の強制ファイル名設定機能
- 3.15 二重安全化防止機能
- 3.16 削除ファイルリスト添付機能
- 3.17 NextCloud設定
3. インストール
3.1 SaMMAの入手と展開
SaMMAソフトウェアは、SaMMAプロジェクトのダウンロードページから入手することができます。
https://osdn.jp/projects/samma/
SaMMAソフトウェアをダウンロードしたら、圧縮されたアーカイブファイルを展開します。
$ tar xvzf SaMMA-version.tar.gz |
$ cd SaMMA-version $ ./configure --with-gmime=/usr/local checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes : config.status: executing depfiles commands $ make make all-recursive : $ su Password: # make install |
上記コンパイルオプションにて実行した場合、SaMMAの本体は/usr/local/binにインストールされます。
必要なソフトウェア(2.1節参照)のライブラリ・ヘッダファイルが規定の場所(/usr/lib、/usr/include)に無い場合、configureオプションで指定する必要があります。詳細は5.1節を参照してください。
3.2 libdgライブラリ
SaMMAには以下のlibdgライブラリが付属されています。
- libdgconfig
- libdgstr
- libdgmail
- libdgnetutil
libdgライブラリはSaMMAの動作に必要なライブラリです。既に導入済みの場合は configureオプションの-with-dgconfig、-with-dgstr、-with-dgmail、 -with-dgnetutilを必要に応じて指定することで導入済みのライブラリをそのま ま利用できます。-with-dgXXXと指定しなかったライブラリはソースアーカイブ にバンドルされているものがインストールされます。 インストール場所はconfigureオプションの-prefixで指定できます。
3.1節の方法でインストールした場合、libdgライブラリは/usr/local/libにインストールされます。なお、インストールしたディレクトリにライブラリパスが通っていない場合、ライブラリパスを登録する必要があります。
# echo “/usr/local/lib” > /etc/ld.so.conf.d/libdg.conf # ldconfig |
3.3 SaMMAの環境設定
安全化モードで利用される場合と削除モードで利用される場合、または無害化モードで利用される場合で、異なる設定が必要となります。
それぞれの設定事項について、どちらのモードの設定かに注意してインストールを行ってください。
SaMMAインストール時に、SaMMAの設定ファイルのサンプルが以下のように配置されます。
上2つが安全化モード用サンプル、下1つが削除モード用サンプルとなります。
${sysconfdir}/samma/samma.tmpl.default
${sysconfdir}/samma/samma.conf.enc.default
${sysconfdir}/samma/samma.conf.del.default
${sysconfdir}/samma/samma.conf.harmless.default
3.3.1 環境設定ファイル(samma.conf)
SaMMAの環境設定を行います。 3.1節の方法でインストールした場合、環境設定ファイルのサンプル(samma.conf.*.default)が/usr/local/etc/samma にインストールされます。環境に合わせて編集し、環境設定ファイル(samma.conf)を作成する必要があります。
安全化モードと削除モードと無害化モードでは、利用できる設定項目が異なります。異なるモードの設定項目を記述した場合、読み込みエラーとなる可能性があります。 各項目の詳細は5.2節を参照してください。
3.3.1.1 安全化モード:パスワードZIP変換方式
CommandPort=17777 CommandPass=secret SyslogFacility=local1 ListenIP=127.0.0.1 ListenPort=20026 EncryptionTmpDir=/tmp ZipCommand=/usr/bin/zip SenderDB=btree:/usr/local/etc/samma/sender.db RcptDB=btree:/usr/local/etc/samma/rcpt.db ExtensionDB=btree:/usr/local/etc/samma/extension.db TemplatePath=/usr/local/etc/samma/samma.tmpl ErrorMessageTemplatePath=/usr/local/etc/samma/errmsg.tmpl SendmailCommand=/usr/sbin/sendmail -i ZipfileName=AttachFile.%Y%m%d.zip MailsaveTmpDir=/tmp PasswordLength=8 StrCode=SJIS DefaultEncryption=no UserPolicy=no LdapUri=ldap://127.0.0.1:389/ LdapBaseDn=ou=User,dc=inside,dc=designet,dc=jp LdapBindDn=cn=Manager,dc=designet,dc=jp LdapBindPassword=secret LdapFilter=mail=%s WhitelistPath=/usr/local/etc/samma/whitelist AttachmentFileAlias=UnknownFileName LoopCheck=no AllowCharEnvelopeFrom=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`~!@#$%^&*()_+-={}|[]:";'<>?,./ |
MailSaveTmpDir、EncryptionTmpDirで指定するディレクトリは事前に作成する必要があります。
SenderDB、RcptDB、ExtensionDB、TemplatePathで指定したファイルは個別に作成する必要があります。
SenderDB、RcptDB、ExtensionDB の設定は3.4節で行います。
TemplatePathの設定は3.3.2節で行います。
ErrorMessageTemplatePathの設定は3.3.3節で行います。
LdapUri、LdapBaseDn、LdapBindDn、LdapBindPassword、LDAPFilterの設定は3.5節で行います。
3.3.1.2 削除モード
CommandPort=17777 CommandPass=secret SyslogFacility=local1 ListenIP=127.0.0.1 ListenPort=20026 ZipCommand=@ZIP@ RcptDB=btree:@sysconfdir@/rcpt.db SendmailCommand=@SENDMAIL@ -i MailsaveTmpDir=/tmp StrCode=SJIS TmpDir=/tmp WhitelistPath=/usr/local/etc/samma/whitelist AttachmentFileAlias=UnknownFileName DeleteListName=FileDeleteReport.%Y%m%d-utf8.txt DefaultDeletePolicy=no LoopCheck=no |
MailSaveTmpDir、TmpDirで指定するディレクトリは事前に作成する必要があります。
RcptDBで指定したファイルは個別に作成する必要があります。
RcptDBの設定は3.4節で行います。
3.3.1.3 無害化モード
CommandPort=17777 CommandPass=secret SyslogFacility=local1 ListenIP=127.0.0.1 ListenPort=20026 EncryptionTmpDir=/tmp ZipCommand=/usr/bin/zip RcptDB=btree:/usr/local/etc/samma/rcpt.db SendmailCommand=/usr/sbin/sendmail -i ZipfileName=AttachFile.%Y%m%d.zip MailsaveTmpDir=/tmp StrCode=SJIS DefaultSenderCheck=yes SenderCheck=check-spf,check-senderip,check-senderdomain HarmlessProc=convert,encrypt,delete HarmlessConf=/usr/local/etc/samma/harmless.conf HarmlessMessageConvert=Converted: mime-type=[<@@mime-before@@> -> <@@mime-after@@>], filename=[<@@file-before@@> -> <@@file-after@@>] HarmlessMessageEncrypt=Encrypt <@@filename@@>. HarmlessMessageDelete=Delete <@@mimetype@@>. HarmlessMessageFileName=samma-message.%Y%m%d%H%M%S.txt MimeTypeFile=/etc/mime.types |
MailSaveTmpDir、EncryptionTmpDirで指定するディレクトリは事前に作成する必要があります。
RcptDBで指定したファイルは個別に作成する必要があります。
RcptDBの設定は3.4節で行います。
SenderCheckの設定は3.11節で行います。
HarmlessConfで指定したファイルは個別に作成する必要があります。
HarmlessConfの設定は5.3節で行います。
3.3.1.4 安全化モード:オンラインストレージ連携方式
オンラインストレージ連携の設定は、 基本的にパスワードZIP暗号化方式と共通ですが、 次の設定項目に関して、パスワードZIP暗号化方式と違う設定を行います。設定項目 | 設定内容 |
ZipCommand | os_uploaderコマンドを指定します |
ZipfileName | 拡張子を.txtにします |
ZipAttachmentContentType | text/plainを指定します |
なお、オンラインストレージ連携では、samma.confに加え、os_uploaderの設定も別途必要になります。
CommandPort=17777 CommandPass=secret SyslogFacility=local1 ListenIP=127.0.0.1 ListenPort=20026 EncryptionTmpDir=/tmp ZipCommand=/usr/local/bin/os_uploader SenderDB=btree:/usr/local/etc/samma/sender.db RcptDB=btree:/usr/local/etc/samma/rcpt.db ExtensionDB=btree:/usr/local/etc/samma/extension.db TemplatePath=/usr/local/etc/samma/samma.tmpl ErrorMessageTemplatePath=/usr/local/etc/samma/errmsg.tmpl SendmailCommand=/usr/sbin/sendmail -i ZipfileName=AttachFile.%Y%m%d.txt ZipAttachmentContentType=text/plain MailsaveTmpDir=/tmp PasswordLength=8 StrCode=SJIS DefaultEncryption=no UserPolicy=no LdapUri=ldap://127.0.0.1:389/ LdapBaseDn=ou=User,dc=inside,dc=designet,dc=jp LdapBindDn=cn=Manager,dc=designet,dc=jp LdapBindPassword=secret LdapFilter=mail=%s WhitelistPath=/usr/local/etc/samma/whitelist AttachmentFileAlias=UnknownFileName LoopCheck=no AllowCharEnvelopeFrom=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`~!@#$%^&*()_+-={}|[]:";'<>?,./ |
3.3.2 パスワード通知書式ファイル(samma.tmpl)
!! 安全モードのみの機能となります !!
安全化モードで利用される、 パスワード通知メールの書式を設定します。
パスワード通知書式ファイルにはメールヘッダ部分も合わせて記載します。
(ファイル内の最初の空行までがヘッダとして認識されます)
次の表のタグが設定でき、送信する時に置き換わります。
タグ名 | 説明 |
<@@TOADDR@@> |
パスワード通知メールに付加する宛先ヘッダ |
<@@SUBJECT@@> |
安全化されたメールの件名 |
<@@PASSWORD@@> |
自動生成パスワード ※安全化ZIP変換されたメールを解凍またはダウンロードできなくなるため必ず指定してください。 |
<@@RCPTLIST@@> |
自動生成パスワードで安全化されたメールの受信者リスト |
<@@FILENAME@@> |
暗号化ZIP変換後のZIPファイルに含まれるファイル名(パスワードZIP暗号化方式) |
<@@DATE@@> |
暗全化れたメールの日付 |
<@@DATE@@>
は、オリジナルメールの日付(Dateヘッダ)を取得し、設定ファイルの「SetTimeZone」で指定したタイムゾーンに変換を行った文字列に置換されます。 タイムゾーンを指定していない場合はオリジナルメールの日付をそのまま置換します。
3.1節の方法でインストールした場合、パスワード通知書式ファイルのサンプル(samma.tmpl.default)が /usr/local/etc/samma にインストールされます。環境に合わせて編集し、パスワード通知書式ファイル(samma.tmpl)を作成する必要があります
MIMEエンコードされた件名もSubjectヘッダに記入することが可能です。
To: <@@TOADDR@@> Subject: パスワード通知メール 以下のメールに添付されたファイルの解凍パスワードをお知らせします。 件名: <@@SUBJECT@@> 日付: <@@DATE@@> パスワード: <@@PASSWORD@@> 受信者: <@@RCPTLIST@@> 添付ファイル名: <@@FILENAME@@> |
3.3.3 文字コード変換失敗用パスワード通知書式ファイル(errmsg.tmpl)
!! 安全化モードのみの機能となります !!
安全化モードで利用される、 文字コード変換失敗用パスワード通知メールの書式を設定します。
パスワード通知メールの文字コード変換に失敗した際に、代わりにこのテンプレートが使用されます。
通常のパスワード通知書式ファイルと同じく、メールヘッダ部分も合わせて記載します。
また、使用するタグも同じものを使用します。
MIMEエンコードを行わなずに送信するため、あらかじめエンコードされた件名が記載されています。
次の表のタグが設定でき、送信する時に置き換わります。
タグ名 | 説明 |
<@@TOADDR@@> |
パスワード通知メールに付加する宛先ヘッダ |
<@@SUBJECT@@> |
安全化されたメールの件名 |
<@@PASSWORD@@> |
自動生成パスワード ※安全化されたメールを解凍またはダウンロードできなくなるため必ず指定してください。 |
<@@RCPTLIST@@> |
自動生成パスワードで安全化されたメールの受信者リスト |
<@@FILENAME@@> |
暗号化ZIP変換後のZIPファイルに含まれるファイル名(パスワードZIP暗号化方式) |
<@@DATE@@> |
安全化ZIP変換されたメールの日付 |
<@@DATE@@>
は、オリジナルメールの日付(Dateヘッダ)を取得し、設定ファイルの「SetTimeZone」で指定したタイムゾーンに変換を行った文字列に置換されます。 タイムゾーンを指定していない場合はオリジナルメールの日付をそのまま置換します。
${sysconfdir}/samma/errmsg.tmplを作成してください。3.1節の方法でインストールした場合、/usr/local/etc/samma の配下となります。
MIMEエンコードされていない件名も記入することは可能ですが、エンコードされないまま送信されてしまいます。
件名を設定する場合はMIMEエンコードしたものを記述してください。
To: <@@TOADDR@@> Subject: パスワード通知メール 以下のメールに添付されたファイルの解凍パスワードをお知らせします。 件名: <@@SUBJECT@@> 日付: <@@DATE@@> パスワード: <@@PASSWORD@@> 受信者: <@@RCPTLIST@@> 添付ファイル名: <@@FILENAME@@> ********************************* 扱えない文字が入っており、文字化けを起こしている可能性があります。 There is a possibility that garbled characters are occurring. ********************************* |
3.3.4 オンラインストレージ連携設定ファイル(os_uploader.conf)
!! 安全化モード:オンラインストレージ連携方式のみの機能となります !!
オンラインストレージに添付ファイルをアップロードするプログラムos_uploaderの環境設定を行います。
3.1節の方法でインストールした場合、
環境設定ファイルのサンプル(os_uploader.conf.default)が
/usr/local/etc/samma にインストールされます。
環境に合わせて編集し、設定ファイル(os_uploader.conf)を作成する必要があります。
また、設定ファイルの配置場所やファイル名は変更することができません。
設定項目 | 説明 |
NC_URL |
NextCloudへのアクセスURL http(s)://ホスト名/パス/ の形式で指定します。 |
NC_ADMIN |
NextCloudの管理者IDを指定します。 |
NC_ADMINPW |
NextCloudの管理者パスワードを指定します。 |
TEMPLATE_FILE |
ダウンロードURLを通知する添付ファイルのテンプレートのパスを指定します。 |
STR_CODE |
SaMMAから引き渡されるファイル名の文字コードを指定します。 samma.confのStrCodeでSJISを指定した場合、CP932を指定します。 |
FORCE_HTTPS |
ダウンロードURL通知ファイルに記載するURLのプロトコル部をhttps://に置換します※ 設定は「True」または「False」で設定します。 「True」に設定した場合に置換が行われます。 デフォルト値は「False」です。 |
※FORCE_HTTPSの設定について
- 設定が必要になる背景
- NextCloudでは、overwrite.cli.urlという設定項目により、 クライアントに送出するURLをサーバ上の実URLからベースURL部分を書き換える
- os_uploaderでは、NextCloudのAPIを利用してダウンロード用URLを取得している
- overwrite.cli.url設定は、APIから返すURLにも適用されるが、 プロトコル(httpかhttpsか)の部分だけはアクセス時のものから変わらない
- 設定が必要なサーバ構成
- ユーザ向けサービスはHTTPSを利用しているが、API接続はHTTPを利用している
- 例:SSLオフロードはリバースプロキシを利用し、
実サーバはHTTPのみ待ち受けているような構成の場合、
os_uploaderからAPIへの通信もHTTPを利用することになります。
このとき、overwrite.cli.urlにhttps://host.name/と書かれていても、
APIから返されるダウンロードURLはhttp://host.name/....となります。
実際にはhttps://host.name/....というURLでアクセスしなくてはならないため、
本設定によりhttp://をhttps://に置換する必要があります。
- 例:SSLオフロードはリバースプロキシを利用し、
実サーバはHTTPのみ待ち受けているような構成の場合、
os_uploaderからAPIへの通信もHTTPを利用することになります。
このとき、overwrite.cli.urlにhttps://host.name/と書かれていても、
APIから返されるダウンロードURLはhttp://host.name/....となります。
実際にはhttps://host.name/....というURLでアクセスしなくてはならないため、
本設定によりhttp://をhttps://に置換する必要があります。
- ユーザ向けサービスはHTTPSを利用しているが、API接続はHTTPを利用している
NC_URL=https://nextcloud.example.com/nextcloud/ NC_ADMIN=admin NC_ADMINPW=password TEMPLATE_FILE=/usr/local/etc/samma/os_uploader.tmpl STR_CODE=CP932 |
3.3.5 ダウンロードURL通知ファイルのテンプレート(os_uploader.tmpl)
!! 安全化モード:オンラインストレージ連携方式のみの機能となります !!オンラインストレージ連携時に、メール受信者に届けられるメールに添付される、 ダウンロードURLと添付ファイルの一覧を記載したテキストファイルのテンプレートの設定を行います。 日本語を記述する場合は、文字コードをUTF-8にします。
Download URL: <@@URL@@> Attachment files: <@@FILENAME@@> |
3.4 安全化ポリシーの設定(LDAPを利用したユーザ個別設定を行わない場合)
!! ユーザ個別設定を行う場合は3.5節へ進んでください !!SaMMAの安全化設定には内部ドメイン設定ファイルと宛先ユーザ設定ファイルの作成が必要です。
SaMMAの削除処理設定には宛先ユーザ設定ファイルの作成が必要です。
内部ドメイン設定ファイルには、SaMMAに内部ドメインとして認識させるメールアドレス、ドメインを設定します。(※)
宛先ユーザ設定ファイルには、宛先ごとの処理方法を設定します。
※ SaMMAの安全化モードは、内部ドメイン以外からのメールを処理しません。
※ 安全化モードにて、LDAPを利用したユーザ個別設定を行わない場合、 環境設定ファイル(samma.conf)のUserPolicyのパラメータは「no」に設定してください。
UserPolicy=no |
3.4.1 内部ドメイン設定ファイルの作成
!! 安全化モードのみの機能となります !!
メールアドレス又はドメインを一行に一設定ずつ記載します。
書式は次のとおりです。
[書式] 設定行 = <シンボル><内部ドメインパート> <シンボル>には次のものが指定できます。 無し: <シンボル>を指定しない場合、続く<内部ドメインパート>を内部ドメインとします。 # : コメントとして扱われ動作には影響しません。 @ : 続く<内部ドメインパート>をFQDNとして扱い、送信者アドレスのドメインと比較します。 一致した場合に、その送信者を内部ドメインとします。 ! : 続く<内部ドメインパート>を非内部ドメインとします。 !@ : 続く<内部ドメインパート>をFQDNとして扱い、送信者アドレスのドメインと比較します。 一致した場合に、その送信者を非内部ドメインとします。 <内部ドメインパート>には次のものが記述できます。 メールアドレス : メールアドレスを設定すると、送信者アドレスとの完全一致で比較を行います。 ドメイン : シンボルが'@'の場合には送信者アドレスのドメインパートと完全一致で比較を行います。 シンボルが無いまたは'!'の場合はサブドメインとして送信者アドレスのドメインパートと比較を行います。
設定の種類は次の二つがあります。
- 内部ドメインとする送信アドレス、ドメイン(安全化対象)を設定する
- 1 に一致したユーザの中でも内部ドメインとして扱わないユーザ(安全化非対象)を設定する
3.1節の方法でインストールした場合、内部ドメイン設定ファイルのサンプル(sender.default)が /usr/local/etc/samma にインストールされます。環境に合わせて編集し、内部ドメイン設定ファイル(sender)を作成してください。
下記の例は user@designet.co.jpから送信するメール、 test.designet.co.jpドメインから送信するメール、go.jpドメイン(サブドメイン含む)から送信するメールについて内部ドメインとする設定です。ただし、安全化非対象に設定されている nguser@test.designet.co.jp から送信されたメールは安全化されません。
user@designet.co.jp ← 内部ドメインのメールアドレス !nguser@test.designet.co.jp ← 非内部ドメインのメールアドレス @test.designet.co.jp ← 内部ドメインのFQDN go.jp ← 内部ドメインのサブドメイン |
3.4.2 宛先ユーザ設定ファイルの作成
宛先メールアドレス又はドメインを一行に一設定ずつ記載できます。
安全化モードでは、解凍/ダウンロードパスワードも記述できます。自動生成パスワードで安全化する場合には、メールアドレスのみを設定します。
書式は次のとおりです。
[書式] 設定行 = <シンボル><アドレスパート> <パスワード> <シンボル>には次のものが指定できます。 無し: <シンボル>を指定しない場合、続く<アドレスパート>を安全化対象とします。 # : コメントとして扱われ動作には影響しません。 @ : 続く<アドレスパート>をFQDNとして扱い受信者アドレスのドメインと比較します。 一致した場合に、その受信者を安全化対象とします。 ! : 続く<アドレスパート>を安全化非対象として扱います。 !@ : 続く<アドレスパート>をFQDNとして扱い受信者アドレスのドメインと比較します。 一致した場合に、その受信者を安全化非対象とします。 <アドレスパート>には次のものが記述できます。 メールアドレス : メールアドレスを設定すると、受信者アドレスとの完全一致で比較を行います。 ドメイン : シンボルが'@'の場合には受信者アドレスのドメインと完全一致で比較を行います。 シンボルが無いまたは'!'の場合はサブドメインとして受信者アドレスのドメインと比較を行います。 <パスワード>には次のものが指定できます。(削除モードでは、記載されていても利用されません。) 無し : <パスワード>を指定しない場合、ランダムパスワードを自動生成し安全化します。 任意の文字列 : 指定された文字列を固定パスワードとして扱い安全化します。 なお、次の文字は動的に置き換えて設定されます。 %Y 年(2010) %m 月(01-12) %d 日(01-31)
設定の種類は次の二つがあります。
- 処理対象とする宛先メールアドレス、ドメインを設定する
- 1 に一致したユーザの中でも処理しないユーザ(非処理対象)を設定する
3.1節の方法でインストールした場合、宛先ユーザ設定ファイルのサンプル(rcpt.default)が /usr/local/etc/samma にインストールされます。環境に合わせて編集し、宛先ユーザ設定ファイル(rcpt)を作成してください。
以下に例をあげます。
例のように設定した場合 …
安全化モードでは user@designet.co.jp 宛てのメールは固定パスワード「passwd」、それ以外のdesignet.co.jpドメイン宛てのメールは固定パスワード「pass」、 co.jpドメイン(サブドメイン含む)宛てのメールは自動生成パスワードで安全化を行います。ただし、安全化非対象に設定されている ngrcpt@designet.co.jp 宛のメールは安全化されません。また、送信者のメールアドレスが内部ドメイン設定ファイルに一致しない場合は、すべての宛先へのメールが安全化されません。
削除モードでは、user@designet.co.jpおよびそれ以外のdesignet.co.jpドメイン宛のメールからは同様に添付ファイルが削除されます。また、co.jpドメイン(サブドメイン含む)宛のメールからも、添付ファイルが削除されます。ただし、非処理対象に設定されているngrcpt@designet.co.jp 宛のメールからは添付ファイルが削除されません。
無害化モードでは、削除モードと同じ判定に従って無害化処理の対象が決まります。user@designet.co.jpおよびそれ以外のdesignet.co.jpドメイン宛のメールが無害化されます。また、co.jpドメイン(サブドメイン含む)宛のメールも無害化されます。ただし、非処理対象に設定されているngrcpt@designet.co.jp 宛のメールは無害化されません。
!ngrcpt@designet.co.jp ← 非処理対象のメールアドレス user@designet.co.jp passwd ← 対象とするメールアドレス(固定パスワード「passwd」) @designet.co.jp pass ← 対象とするFQDN(固定パスワード「pass」) co.jp ← 対象とするサブドメイン(ランダムパスワード) |
3.4.3 暗号化ファイル拡張子設定ファイルの作成
!! 安全化モード:パスワードZIP暗号化方式のみの機能となります !!宛先メールアドレス又はドメイン毎に暗号化ファイルの拡張子を設定することができます。
書式は次のとおりです。
[書式] 設定行 = <シンボル><アドレスパート> <拡張子>
<シンボルverb>
には次のものが指定できます。
無し: <シンボル>
を指定しない場合、続く<アドレスパート>
を安全化対象とします。
# : コメントとして扱われ動作には影響しません。
@ : 続く<アドレスパート>
をFQDNとして扱い受信者アドレスのドメインと比較します。
一致した場合に、その受信者を安全化対象とします。
<アドレスパート>
には次のものが記述できます。
メールアドレス : メールアドレスを設定すると、受信者アドレスとの完全一致で比較を行います。
ドメイン : シンボルが'@'の場合には受信者アドレスのドメインと完全一致で比較を行います。
シンボルが無い場合はサブドメインとして受信者アドレスのドメインと比較を行います。
<シンボル><アドレスパート>
は、宛先ユーザ設定ファイルに指定している値と一致している必要があります。
<拡張子>
には次のものが指定できます。
無し : <拡張子>
を指定しない場合、samma.confに設定されている暗号化ファイル名(ZipfileName)が使用されます。
任意の文字列 : samma.confに設定されている暗号化ファイル名(ZipfileName)の拡張子を、ここで指定した文字に変更します。
拡張子には以下の文字を指定することができます。
- 半角英数(
A-Za-z0-9
) - 記号(
!#$%&'*+-./:;<=>?@[]^_`{
|
}~"(),
)
拡張子変換後の暗号化ファイル名の長さが256文字以内になっている必要があります。
user@designet.co.jp zi1 ← 指定したメールアドレスの添付ファイル拡張子を zi1 に設定 @designet.co.jp zi2 ← 指定したFQDNの添付ファイル拡張子を zi2 に設定 example.co.com ← 指定したサブドメインの添付ファイル拡張子を標準値に設定 com zi3 ← 指定したサブドメインの添付ファイル拡張子を zi3 に設定 |
3.4.4 データベースの作成
3.1節の方法でインストールした場合、 データベースの作成を行うためのMakefileが/usr/local/etc/samma にインストールされます。
内部ドメイン設定ファイル(sender)と宛先ユーザ設定ファイル(rcpt)を /usr/local/etc/samma に配置し、 makeコマンドを実行することで内部ドメインDB(sender.db)・受信者DB(rcpt.db)を作成します。
削除モードおよび無害化モードではsender.dbを利用しないため、作成する必要はありません。
作成されるデータベースの形式はbtreeです。
$ cd /usr/local/etc/samma $ make |
データベースの形式を変更する場合やデータベース名を任意の名前に変更する場合には、
makemapコマンドを使用し、データベースに変換してください。
データベース形式はhashまたはbtreeが指定できます。
内部ドメイン設定ファイルから内部ドメインDB、
宛先ユーザ設定ファイルから受信者DBをそれぞれ作成する必要があります。
内部ドメイン設定ファイルを変更した場合は内部ドメインDBを、
宛先ユーザ設定ファイルを変更した場合は受信者DBをそれぞれ作り直す必要があります。
$ makemap -e {hash|btree} DBファイルのパス < ユーザ設定ファイル |
makemapコマンドの-eオプションは空の値を許可する設定です。
3.1節の方法でインストールした場合、
設定ファイルの配置場所として /usr/local/etc/samma ディレクトリが指定されます。
環境に合わせて編集し、
内部ドメインDB(sender.db)・受信者DB(rcpt.db)・暗号化ファイル拡張子DB(extension.db)を作成する必要があります。
$ makemap -e btree /usr/local/etc/samma/sender.db < sender |
$ makemap -e btree /usr/local/etc/samma/rcpt.db < rcpt |
$ makemap -e btree /usr/local/etc/samma/extension.db < extension |
3.5 安全化ポリシーの設定(LDAPを利用したユーザ個別設定を行う場合)
!! 安全化モードのみの機能となります !!
ここでは、postLDAPadminによるLDAPユーザ管理が行えることを前提に解説を行います。
postLDAPadminの設定については、以下を参照してください。
postLDAPadmin http://www.designet.co.jp/open_source/postldapadmin/
3.5.1 samma.confの設定
LDAPを利用したユーザ個別設定を行う場合、 環境設定ファイル(samma.conf)に以下のパラメータを設定する必要があります。
DefaultEncryption=no UserPolicy=yes LdapUri=ldap://127.0.0.1:389/ LdapBaseDn=ou=User,dc=inside,dc=designet,dc=jp LdapBindDn=cn=Manager,dc=designet,dc=jp LdapBindPassword=secret LdapFilter=mail=%s |
DefaultEncryptionの値が「no」の場合でUserPolicyの値が「yes」の場合に、LDAPへ検索を行います。
各項目の詳細は5.2節を参照してください。
3.5.2 LDAPサーバの設定
LDAPによるユーザ個別設定機能を利用する場合、 SaMMAで扱うエントリにはsammaオブジェクトクラスが含まれている必要があります。 SaMMAのアーカイブファイルには、スキーマファイルsamma.ldifが同梱されています。 OpenLDAPの場合は、このsamma.ldifを登録するだけで sammaオブジェクトクラスを利用できるようになります。SaMMAのスキーマファイル(samma.ldif)の登録を行います。
samma.ldifはSaMMAのアーカイブファイルの展開ディレクトリ配下にあります。
(展開ディレクトリ)/SaMMA-version/schema/samma.ldif
次は、SaMMAのアーカイブファイルを/tmpに展開したときの例です。
# ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/SaMMA-version/schema/samma.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=samma,cn=schema,cn=config" |
3.5.3 SaMMAで扱うLDAPデータ
SaMMAのスキーマファイルによって使用できる属性は表![[*]](crossref.png)
項目 | 内容 | 解説 |
オブジェクトクラス | samma | SaMMAが利用する安全化設定を格納する構造型のオブジェクトクラスです。 |
必須属性 | mailEncryptionAddr | 安全化宛先条件を指定します。 |
オプション属性 | mailEncryptionPassword | 安全化処理に利用する固定パスワードを指定します。
なお次の文字は動的に置き換えて設定されます。 %Y 年(2010)
%m 月(01-12)
%d 日(01-31)
|
オブジェクトクラス | sammaAutoBccOption | BCC自動追加機能に関する属性を格納する補助的なオブジェクトクラスです。 |
必須属性 | autoBccConditionString | BCCの追加条件を正規表現で指定します。この条件にマッチしない場合、BCCが追加されます。 |
必須属性 | autoBccMailAddress | BCCとして追加するメールアドレスを指定します。 |
mailEncryptionAddrの宛先条件には、メールアドレス、FQDN、サブドメインが指定できます。
また、先頭に「!」を付加すると、続くメールアドレス、FQDN、サブドメインを安全化非対象とします。
- user@example.com
- @example.com
- com
- !nouser@example.com
- SaMMAの管理WEBインタフェース(SaMMAadmin)を利用して安全化非対象の設定をした場合は、自動で「!」が付与されるため、特に意識する必要はありません。
mailEncryptionPassword属性が存在する場合は、
mailEncryptionAddrのエントリの安全化時に固定パスワードを利用します。
mailEncryptionPassword属性が存在しない場合は、
mailEncryptionAddrのエントリの安全化時に自動生成パスワードを利用します。
宛先ユーザ設定ファイルの安全化非対象条件に一致した場合および、
LDAPにエントリが存在しない場合は安全化を行いません。
BCC自動追加機能でメールアカウント毎に設定を行う際には、sammaAutoBccOptionに autoBccConditionString、autoBccMailAddressを指定します。詳しくは 3.10 を ご覧ください。
3.5.4 安全化ポリシーの登録
LDAPによるユーザ個別設定は、 SaMMAの管理WEBインタフェースであるSaMMAadminを利用して行ってください。SaMMAadminの設定方法、利用方法については、 SaMMAadminのマニュアルページを参考にしてください。
SaMMAadmin https://www.designet.co.jp/open_source/sammaadmin/
主な設定画面イメージは以下のようになっています。
3.6 メールサーバの設定
メールをSaMMAに渡すため、メールサーバの設定を行う必要があります。milterアプリケーションで使用するIPとポートは環境設定ファイルのListenIP、 ListenPortで指定した値にあわせて設定してください。
3.6.1 メールサーバがPostfixの場合の設定
メールサーバがPostfixの場合、設定はmain.cfファイルで行います。下記の例は、SaMMAが127.0.0.1:20026(ListenIP=127.0.0.1、ListenPort=20026と設定) でListenしている場合の設定です。 また、SaMMAと通信できなかったときに一時エラーを返すように設定しています。
smtpd_milters=inet:127.0.0.1:20026 milter_default_action = tempfail milter_connect_timeout = 30s milter_content_timeout = 300s |
smtpd_miltersはmilterとの接続方法を設定します。
milter_default_actionはSaMMAとの通信に失敗した場合の動作設定です。
以下の3つの値を設定することができます。
tempfail(一時エラーにする)
accept(メールを通過させる)
reject(メールを拒否する)
milter_connect_timeoutは connect_callbackに対するタイムアウト時間の設定です。
milter_content_timeoutは header_callback、 eoh_callback、 boby_callback、
eom_callbackのタイムアウト時間の設定です。
3.7 ログ設定
SaMMAのログを出力するにはsyslogの設定が必要です。 環境設定ファイルのSyslogFacilityで指定した値にあわせて設定してください。下記の例は、local1のファシリティを/var/log/samma.logに出力するためのsyslogの設定です。
# SaMMA Log local1.* /var/log/samma.log |
3.8 SaMMAの起動
全ての設定が完了した後、SaMMAを起動します。
3.8.1 安全化モード、削除モード、無害化モードの切り替え
動作モードの切り替えは、sammaプログラムにオプション引数を設定することで行います。※オンラインストレージ連携を利用する場合、安全化モードで起動します。
3.8.2 inittabからの起動
下記の例は、SaMMAをinittabから起動する設定です。
ml:345:respawn:/usr/local/bin/samma |
ml:345:respawn:/usr/local/bin/samma -d |
ml:345:respawn:/usr/local/bin/samma -h |
設定後、init qコマンドで設定を適用してください。 SaMMAが起動します。
3.8.3 systemdからの起動
下記の例は、SaMMAをsystemdから起動する設定です。
systemdの設定ファイルを作成します。
[Unit] Description=SaMMA (SAfety Mail gateway with Milter Api) [Service] ExecStart=/usr/local/bin/samma Restart=always [Install] WantedBy=multi-user.target |
[Unit] Description=SaMMA (SAfety Mail gateway with Milter Api) [Service] ExecStart=/usr/local/bin/samma -d Restart=always [Install] WantedBy=multi-user.target |
[Unit] Description=SaMMA (SAfety Mail gateway with Milter Api) [Service] ExecStart=/usr/local/bin/samma -h Restart=always [Install] WantedBy=multi-user.target |
sammaのサービスを有効化します。
# systemctl enable samma ln -s '/usr/lib/systemd/system/samma.service' '/etc/systemd/system/multi-user.target.wants/samma.service' |
sammaのサービスを起動します。
# systemctl start samma |
3.9 安全化設定の評価基準について
SaMMAの安全化モードでは、送信元と宛先のメールアドレスを検査し次の評価基準で安全化判定を行います。
3.9.1 安全化の前提条件
SaMMAは宛先ユーザが安全化対象の場合でも、 送信アドレスが内部ドメインでない場合は安全化を行いません。 また、設定項目のAllowCharEnvelopeFromで指定されていない文字が送信元メールアドレスに含まれていた場合、 メールの配送が行われません。
3.9.2 設定箇所による優先順位
SaMMAの安全化設定は宛先ユーザ設定ファイル、デフォルト安全化処理及び、 LDAPのユーザ個別設定で行えますが、各設定の優先順位は次の通りです。
- 宛先ユーザ設定ファイル
- デフォルトの安全化処理
- ユーザ個別の安全化設定
3.9.3 安全化条件の優先順位
内部ドメイン設定ファイル、 宛先ユーザ設定ファイル内等で複数の安全化条件と一致した場合は 次の優先順位で動作します。安全化非対象メールアドレス
>
安全化対象メールアドレス >
安全化非対象FQDN >
安全化対象FQDN >
安全化非対象ドメイン(サブドメイン含む) >
安全化対象ドメイン(サブドメイン含む)
3.9.4 設定による安全化のパターン
設定による安全化のパターンは以下のとおりです。
パターン | 送信ユーザ 内部ドメイン である |
宛先ユーザ 安全化対象設定 に一致 |
宛先ユーザ 安全化非対象設定 に一致 |
パスワード設定 | 安全化方法 |
1 | ○ | ○ | × | 有り | 固定パスワード |
2 | ○ | ○ | × | 無し | 自動生成パスワード |
3 | ○ | × | × | ※ | |
4 | 上記以外 | - | 安全化しない |
※送信ユーザが内部ドメインであり、 宛先ユーザが宛先ユーザ設定ファイルのどの項目にも該当しなかった場合、 設定により次のように動作します。
- 設定ファイルのDefaultEncryptionの値がyesの場合は、安全化を行います。
安全化方法は次の条件で変化します。
- 設定ファイルにDefaultPasswordが設定されている場合は、 DefaultPasswordの値で安全化を行います。
- 設定ファイルにDefaultPasswordが設定されていない場合は、 自動生成パスワードで安全化を行います。
- 設定ファイルのDefaultEncryptionの値がnoで
UserPolicyの値がyesの場合はLDAP検索を行います。
- LDAPに送信者のエントリが存在し、安全化条件に一致する場合は、
安全化を行います。
安全化方法は次の条件で変化します。
- mailEncryptionPasswordの値が設定されている場合は、 その固定パスワードで安全化を行います。
- mailEncryptionPasswordの値が設定されていない場合は、 自動生成パスワードで安全化を行います。
- LDAPに送信者のエントリが存在し、非安全化条件に一致する場合は、 安全化を行いません。
- LDAPに送信者のエントリが存在し、安全化条件に一致する場合は、
安全化を行います。
安全化方法は次の条件で変化します。
- 設定ファイルのDefaultEncryptionの値がno、UserPolicyの値がyes、
かつUserDefaultPolicyの値がyesの場合、次のように動作します。
- 受信者が送信者のエントリの条件に一つも合わない場合、 自動生成パスワードで安全化します。
- LDAPに送信者のエントリが存在しない場合、 自動生成パスワードで安全化します。
3.10 削除設定の評価基準について
SaMMAの削除モードでは、宛先のメールアドレスを検査し次の評価基準で添付ファイルの削除判定を行います。送信元のメールアドレスは検査されません。
3.10.1 送信元メールアドレスについて
削除モードは、主に外部からの攻撃対策としての用途を想定されています。そのため、なりすまし可能な送信元メールアドレスの評価を行いません。
3.10.2 設定箇所による優先順位
SaMMAの削除判定設定は宛先ユーザ設定ファイルとデフォルト処理設定で行えます。各設定の優先順位は次の通りです。
- 宛先ユーザ設定ファイル
- デフォルトの安全化処理
3.10.3 添付ファイル削除条件の優先順位
宛先ユーザ設定ファイル内等で複数の条件と一致した場合は、次の優先順位で動作します。非処理対象メールアドレス
>
削除対象メールアドレス >
非処理対象FQDN >
削除対象FQDN >
非処理対象ドメイン(サブドメイン含む) >
削除対象ドメイン(サブドメイン含む)
3.11 無害化設定の評価基準について
SaMMAの無害化モードでは、宛先のメールアドレスを検査し次の評価基準でメールの無害化対象を決定し、無害化対象に対して無害化判定を行います。
3.11.1 送信元メールアドレスについて
無害化モードは、無害化対象の決定には送信元メールアドレスを参照しません。ただし送信元メールアドレスの評価は、無害化判定の際に行います。
3.11.2 設定箇所による優先順位
SaMMAの無害化判定設定は宛先ユーザ設定ファイルとデフォルト処理設定で行えます。各設定の優先順位は次の通りです。
- 宛先ユーザ設定ファイル
- デフォルトの安全化処理
3.11.3 添付ファイル削除条件の優先順位
宛先ユーザ設定ファイル内等で複数の条件と一致した場合は、次の優先順位で動作します。非処理対象メールアドレス
>
無害化対象メールアドレス >
非処理対象FQDN >
無害化対象FQDN >
非処理対象ドメイン(サブドメイン含む) >
無害化対象ドメイン(サブドメイン含む)
3.11.4 無害化判定
無害化対象が決まると、さらに実際に無害化処理を行うかどうかを判定する無害化判定に進みます。無害化判定では、以下の判定方式を利用して無害化実施を判定します。
判定方式 | 説明 |
check-spf | メール送信者のドメイン名からDNSのSPFレコードを参照し、メールの実際の送信元の元IPアドレスと本当に一致するかを調べます。もし一致していなければ、無害化を実施します。 |
check-senderip | メールの送信元IPアドレスをもとにDNSを逆引きし、対応するドメイン名を取得します。このドメイン名が、メールアドレスの@以降のドメインのサブドメインでなければ無害化を実施します。 |
check-senderdomain | メールの送信元アドレスをもとにDNSをAレコード、もしくはMXレコードで正引きし、IPアドレスを取得します。そのIPアドレスがメールの送信元IPアドレスと一致しなければ無害化を実施します。 |
none | 何もチェックをしません。無害化を行いません。 |
これらの判定方式は環境設定ファイル(samma.conf)のSenderCheckの項目に指定します。
SenderCheckの項目には、上記4つの判定方式以外を記述することはできません。
以下はSenderCheckの設定例です。
SenderCheck=check-spf,check-senderip,check-senderdomain,none |
SenderCheckの各項目は「,」区切りで複数指定することができます。
複数の判定方式を指定した場合は、左から順番に無害化判定を行います。
上記4つの判定方式はどのような順番でも設定することが可能です。
上記の例ではまず、check-spf方式で無害化判定を行います。
この時点でメールを無害化しない判定になれば、それ以降の判定方式での無害化判定は行わず、メールを無害化せずに受信者に送信します。
一方、check-spf方式で無害化を行う判定になった場合には、次のcheck-senderip方式での無害化判定に進みます。
この時点でメールを無害化する判定になればさらに次の判定方式で判定し、逆に無害化しない判定になればメールを無害化せずに受信者に送信します。
さらに、check-senderip方式で無害化を行う判定になった場合には、次のcheck-senderdomain方式での無害化判定に進みます。
判定後の処理は、上記のcheck-senderip方式の処理と同じです。
上記の例では、最後の無害化判定方式にnoneが指定されていますので、この時点で無害化を行わないと判定され、メールを無害化せずに受信者に送信します。
どのような順番でも、noneを設定する限り無害化を行わないことに注意してください。
3.12 BCC自動追加機能
!! 安全化モードのみの機能となります !!
samma.confのAutoBccOptionが「yes」の場合、BCC自動追加機能の処理を行います。
BCC自動追加機能とは、宛先メールアドレスがいずれもある正規表現のパターン
にマッチしない場合に、指定したメールアドレスにもメールを送信する機能です。
- すべての宛先メールアドレスについての判定を行います。
- パターンマッチングの条件には正規表現を使用します(例:.*@designet.co.jp)。
- すべて一致しなかった場合、指定したメールアドレスを宛先に追加します。
LDAPのメールアカウントに、autoBccConditionString属性とautoBccMailAddress属性が設定されている場合は、それぞれを条件とメールアドレスとして使用します。
autoBccConditionString属性とautoBccMailAddress属性が設定されていない場合は、
samma.confのDefaultAutoBccConditionStringとDefaultAutoBccMailAddrを、
条件とメールアドレスとして使用します。
なお、autoBccConditionString属性とautoBccMailAddress属性のどちらか一方のみを設定することはできません。
3.13 Whitelist機能
特定のIPアドレスまたはネットワークアドレスから届いたメールについて添付ファイルの安全化を行わないようにするための機能です。 ホワイトリストの設定ファイルはsamma.confのWhiteListPathの項目で指定することができます。
- ホワイトリストファイルを読み込みます。 (例:/usr/local/etc/samma/whitelist)
- ホワイトリストファイルに記述されているIPアドレス(IPv4,IPv6両対応)と送信元アドレスとを比較します。
- ファイル内に記述されているアドレスと送信元アドレスが一致した場合、安全化・削除処理を行わずにメールを送信します。
WhitelistPath=/usr/local/etc/samma/whitelist |
ホワイトリスト設定ファイルにはIPアドレスまたはネットワークアドレスを指定します。IPv4とIPv6に対応しています。
# IPv4 192.168.1.1 # IPv4 Network 192.168.30.0/24 # IPv6 2001:268:35d:2::8 # IPv6 Network 2001:268:35d:30::100/64 |
3.14 変換不可能ファイル名の強制ファイル名設定機能
添付ファイル名に変換不可能文字が含まれていた場合、ファイル名をsamma.conf のAttachmentFileAliasの項目に設定したファイル名に変換します。
AttachmentFileAlias=UnknownFileName |
UnknownFileName
UnknownFileName(1)
UnknownFileName(2)
のようにファイル名が変換されます。
3.15 二重安全化防止機能
ファイルの二重安全化を防ぐための機能です。 この機能を有効にすると、メールヘッダに「X-SaMMA-Enc: YES」が含まれていた 場合、添付ファイルの安全化を行いません。
[二重安全化防止を行う場合] LoopCheck=yes [二重安全化防止を行わない場合] LoopCheck=no |
3.16 削除ファイルリスト添付機能
!! 削除モードのみの機能となります !!
SaMMAの削除モードでは、元の添付ファイルを削除した後に、削除したファイルのファイル名を羅列したテキストファイルを新たに添付します。
作成される削除ファイルリスト名は、samma.confのDeleteListNameの設定に従います。
3.17 NextCloud設定
!! オンラインストレージ連携のみ必要な設定です !!
NextCloudには、最低限次の設定が必要になります。
- ファイルの自動削除の設定
- Retentionアプリの有効化
- Files automated taggingアプリの有効化
- 自動タグ設定で、SaMMAからアップロードされたものに対してのみ自動的にタグを付与する設定
- フィルタリングを工夫して設定します
- たとえば次の方法でフィルタリングします
- 接続元IPアドレスがSaMMAが稼働するサーバからアップロードされたものだけタグ付けする
- SaMMAの添付ファイルの受け渡し専用の、管理者権限を持ったユーザを作成し、この管理者ユーザ領域にアップロードされるファイルすべてにタグ付けする
- 上記タグ付けされたファイルについて、一定期間で削除するようRetention設定
- crontabにcron.phpを登録
- ユーザの作成とメールアドレスの登録
- SaMMAのオンラインストレージ連携のためには、ファイルアップロード先の管理者権限を持ったユーザと、送信者メールアドレスが設定されているユーザが必要です
- 添付ファイルのアップロード先は管理者権限を持ったユーザのファイルスペースで、このユーザが添付ファイルの所有者になります
- 送信者メールアドレスが設定されているユーザは、SaMMAを利用してメールを送信する可能性のあるユーザ全てを登録しておく必要があります
- NextCloud上に登録されていないメールアドレスから送信された添付ファイル付きメールは、エラーにより送信することができません
それぞれの設定方法は、NextCloudのマニュアルを参照してください。




Next: 4. 使い方 Up: SaMMA Previous: 2. 準備
2021年7月8日