オープンソース

サーバー構築のデージーネットTOP > OSS情報 > デージーネットのOSS > SaMMA

next up previous contents
Next: 4. 使い方 Up: SaMMA Previous: 2. 準備


3. インストール

3.1 SaMMAの入手と展開

SaMMAソフトウェアは、SaMMAプロジェクトのダウンロードページから入手することができます。

https://osdn.jp/projects/samma/

SaMMAソフトウェアをダウンロードしたら、圧縮されたアーカイブファイルを展開します。

$ tar xvzf SaMMA-version.tar.gz

SaMMAソフトウェアのインストール
$ 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 暗号化モード

samma.confの設定例(暗号化モード)
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
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`~!@#$%^&*()_+-={}|[]:";'<>?,./

SenderDB、RcptDB、TemplatePathで指定したファイルは個別に作成する必要があります。
SenderDB、RcptDBの設定は3.4節で行います。
TemplatePathの設定は3.3.2節で行います。
ErrorMessageTemplatePathの設定は3.3.3節で行います。
LdapUri、LdapBaseDn、LdapBindDn、LdapBindPassword、LDAPFilterの設定は3.5節で行います。

3.3.1.2 削除モード

samma.confの設定例(削除モード)
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

RcptDBで指定したファイルは個別に作成する必要があります。 RcptDBの設定は3.4節で行います。

3.3.1.3 無害化モード

samma.confの設定例(無害化モード)
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

RcptDBで指定したファイルは個別に作成する必要があります。 RcptDBの設定は3.4節で行います。

SenderCheckの設定は3.11節で行います。

HarmlessConfで指定したファイルは個別に作成する必要があります。 HarmlessConfの設定は5.3節で行います。

3.3.2 パスワード通知書式ファイル(samma.tmpl)

!! 暗号化モードのみの機能となります !!

暗号化モードで利用される、 パスワード通知メールの書式を設定します。
パスワード通知書式ファイルにはメールヘッダ部分も合わせて記載します。
(ファイル内の最初の空行までがヘッダとして認識されます)
次の表[*]のタグが設定でき、送信する時に置き換わります。


表: パスワード通知メールに設定できるタグ
タグ名 説明
<@@TOADDR@@> パスワード通知メールに付加する宛先ヘッダ
<@@SUBJECT@@> 暗号化ZIP変換されたメールの件名
<@@PASSWORD@@> 自動生成パスワード
※暗号化ZIP変換されたメールを解凍できなくなるため必ず指定してください。
<@@RCPTLIST@@> 自動生成パスワードで暗号化されたメールの受信者リスト
<@@FILENAME@@> 暗号化ZIP変換後のZIPファイルに含まれるファイル名
<@@DATE@@> 暗号化ZIP変換されたメールの日付

<@@DATE@@>は、オリジナルメールの日付(Dateヘッダ)を取得し、設定ファイルの「SetTimeZone」で指定したタイムゾーンに変換を行った文字列に置換されます。 タイムゾーンを指定していない場合はオリジナルメールの日付をそのまま置換します。

3.1節の方法でインストールした場合、パスワード通知書式ファイルのサンプル(samma.tmpl.default)が/usr/local/etc/samma/にインストールされます。環境に合わせて編集し、パスワード通知書式ファイル(samma.tmpl)を作成する必要があります
MIMEエンコードされた件名もSubjectヘッダに記入することが可能です。

samma.tmplの設定例
To: <@@TOADDR@@>
Subject: パスワード通知メール

以下のメールに添付されたファイルの解凍パスワードをお知らせします。

件名: <@@SUBJECT@@>
日付: <@@DATE@@>
パスワード: <@@PASSWORD@@>

受信者:
<@@RCPTLIST@@>

添付ファイル名:
<@@FILENAME@@>

3.3.3 文字コード変換失敗用パスワード通知書式ファイル(errmsg.tmpl)

!! 暗号化モードのみの機能となります !!

暗号化モードで利用される、 文字コード変換失敗用パスワード通知メールの書式を設定します。
パスワード通知メールの文字コード変換に失敗した際に、代わりにこのテンプレートが使用されます。
通常のパスワード通知書式ファイルと同じく、メールヘッダ部分も合わせて記載します。
また、使用するタグも同じものを使用します。
MIMEエンコードを行わなずに送信するため、あらかじめエンコードされた件名が記載されています。

次の表[*]のタグが設定でき、送信する時に置き換わります。


表: 文字コード変換失敗用パスワード通知メールに設定できるタグ
タグ名 説明
<@@TOADDR@@> パスワード通知メールに付加する宛先ヘッダ
<@@SUBJECT@@> 暗号化ZIP変換されたメールの件名
<@@PASSWORD@@> 自動生成パスワード
※暗号化ZIP変換されたメールを解凍できなくなるため必ず指定してください。
<@@RCPTLIST@@> 自動生成パスワードで暗号化されたメールの受信者リスト
<@@FILENAME@@> 暗号化ZIP変換後のZIPファイルに含まれるファイル名
<@@DATE@@> 暗号化ZIP変換されたメールの日付

<@@DATE@@>は、オリジナルメールの日付(Dateヘッダ)を取得し、設定ファイルの「SetTimeZone」で指定したタイムゾーンに変換を行った文字列に置換されます。 タイムゾーンを指定していない場合はオリジナルメールの日付をそのまま置換します。

${sysconfdir}/samma/errmsg.tmplを作成してください。3.1節の方法でインストールした場合、/usr/local/etc/sammaの配下となります。
MIMEエンコードされていない件名も記入することは可能ですが、エンコードされないまま送信されてしまいます。
件名を設定する場合はMIMEエンコードしたものを記述してください。

errmsg.tmplの設定例
To: <@@TOADDR@@>
Subject: パスワード通知メール

以下のメールに添付されたファイルの解凍パスワードをお知らせします。

件名: <@@SUBJECT@@>
日付: <@@DATE@@>
パスワード: <@@PASSWORD@@>

受信者:
<@@RCPTLIST@@>

添付ファイル名:
<@@FILENAME@@>

*********************************
扱えない文字が入っており、文字化けを起こしている可能性があります。

There is a possibility that garbled characters are occurring.
*********************************

3.4 暗号化ポリシーの設定(LDAPを利用したユーザ個別設定を行わない場合)

!! ユーザ個別設定を行う場合は3.5節へ進んでください !!

SaMMAの暗号化設定には内部ドメイン設定ファイルと宛先ユーザ設定ファイルの作成が必要です。
SaMMAの削除処理設定には宛先ユーザ設定ファイルの作成が必要です。

内部ドメイン設定ファイルには、SaMMAに内部ドメインとして認識させるメールアドレス、ドメインを設定します。(※)
宛先ユーザ設定ファイルには、宛先ごとの処理方法を設定します。

※ SaMMAの暗号化モードは、内部ドメイン以外からのメールを処理しません。

※ 暗号化モードにて、LDAPを利用したユーザ個別設定を行わない場合、 環境設定ファイル(samma.conf)のUserPolicyのパラメータは「no」に設定してください。

samma.confの設定例
UserPolicy=no

3.4.1 内部ドメイン設定ファイルの作成

!! 暗号化モードのみの機能となります !!

メールアドレス又はドメインを一行に一設定ずつ記載します。
書式は次のとおりです。

[書式]
設定行 = <シンボル><内部ドメインパート>

<シンボル>には次のものが指定できます。
無し: <シンボル>を指定しない場合、続く<内部ドメインパート>を内部ドメインとします。
# : コメントとして扱われ動作には影響しません。
@ : 続く<内部ドメインパート>をFQDNとして扱い、送信者アドレスのドメインと比較します。
一致した場合に、その送信者を内部ドメインとします。
! : 続く<内部ドメインパート>を非内部ドメインとします。
!@ : 続く<内部ドメインパート>をFQDNとして扱い、送信者アドレスのドメインと比較します。
一致した場合に、その送信者を非内部ドメインとします。

<内部ドメインパート>には次のものが記述できます。
メールアドレス : メールアドレスを設定すると、送信者アドレスとの完全一致で比較を行います。
ドメイン : シンボルが'@'の場合には送信者アドレスのドメインパートと完全一致で比較を行います。
シンボルが無いまたは'!'の場合はサブドメインとして送信者アドレスのドメインパートと比較を行います。

設定の種類は次の二つがあります。

  1. 内部ドメインとする送信アドレス、ドメイン(暗号化対象)を設定する
  2. 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. 処理対象とする宛先メールアドレス、ドメインを設定する
  2. 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 データベースの作成

3.1節の方法でインストールした場合、 データベースの作成を行うためのMakefileが/usr/local/etc/sammaにインストールされます。
内部ドメイン設定ファイル(sender)と宛先ユーザ設定ファイル(rcpt)を/usr/local/etc/sammaに配置し、 makeコマンドを実行することで内部ドメインDB(sender.db)・受信者DB(rcpt.db)を作成します。
削除モードおよび無害化モードではsender.dbを利用しないため、作成する必要はありません。
作成されるデータベースの形式はbtreeです。

makeコマンドによるデータベースの作成例
$ 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)を作成する必要があります。

makemapコマンドによる内部ドメインDB作成例
$ makemap -e btree /usr/local/etc/samma/sender.db < sender

makemapコマンドによる受信者DB作成例
$ makemap -e btree /usr/local/etc/samma/rcpt.db < rcpt

3.5 暗号化ポリシーの設定(LDAPを利用したユーザ個別設定を行う場合)

!! 暗号化モードのみの機能となります !!

ここでは、postLDAPadminによるLDAPユーザ管理が行えることを前提に解説を行います。
postLDAPadminの設定については、以下を参照してください。

postLDAPadmin
http://www.designet.co.jp/open_source/postldapadmin/

3.5.1 samma.confの設定

LDAPを利用したユーザ個別設定を行う場合、 環境設定ファイル(samma.conf)に以下のパラメータを設定する必要があります。

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のスキーマファイルによって使用できる属性は表[*]のとおりです。

表: SaMMAのスキーマ
項目 内容 解説
オブジェクトクラス 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 を ご覧ください。

ユーザごとの宛先条件のエントリは、図[*]のように登録されます。

図: LDAPデータ構造
Image ldaptree_new

3.5.4 暗号化ポリシーの登録

LDAPによるユーザ個別設定は、 SaMMAの管理WEBインタフェースであるSaMMAadminを利用して行ってください。
SaMMAadminの設定方法、利用方法については、 SaMMAadminのマニュアルページを参考にしてください。

  • SaMMAadmin
    http://www.designet.co.jp/seihin/sammaadmin/index/index.php
主な設定画面イメージは以下のようになっています。

図: 内部ドメイン設定一覧画面
Image naibudomain

図: 受信者設定変更画面
Image jusinsyasettei

図: 設定ファイル編集画面
Image samma

図: ユーザ用暗号化設定一覧画面
Image userpolicy

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と通信できなかったときに一時エラーを返すように設定しています。

main.cfの設定例
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の設定です。

/etc/syslog.confの設定例
# SaMMA Log
local1.* /var/log/samma.log

3.8 SaMMAの起動

全ての設定が完了した後、SaMMAを起動します。

3.8.1 暗号化モード、削除モード、無害化モードの切り替え

動作モードの切り替えは、sammaプログラムにオプション引数を設定することで行います。

3.8.2 inittabからの起動

下記の例は、SaMMAをinittabから起動する設定です。

/etc/inittabの設定例(暗号化モード)
ml:345:respawn:/usr/local/bin/samma

/etc/inittabの設定例(削除モード)
ml:345:respawn:/usr/local/bin/samma -d

/etc/inittabの設定例(無害化モード)
ml:345:respawn:/usr/local/bin/samma -h

設定後、init qコマンドで設定を適用してください。 SaMMAが起動します。

3.8.3 systemdからの起動

下記の例は、SaMMAをsystemdから起動する設定です。

systemdの設定ファイルを作成します。

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

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

[Install]
WantedBy=multi-user.target

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

[Service]
ExecStart=/usr/local/bin/samma -d
Restart=always

[Install]
WantedBy=multi-user.target

/usr/lib/systemd/system/samma.serviceの設定例(無害化モード)
[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のユーザ個別設定で行えますが、各設定の優先順位は次の通りです。

  1. 宛先ユーザ設定ファイル
  2. デフォルトの暗号化処理
  3. ユーザ個別の暗号化設定

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の値が設定されていない場合は、自動生成パスワードで暗号化を行います。
設定ファイルのDefaultEncryptionの値がnoでUserPolicyの値もnoの場合は暗号化を行いません。

3.10 削除設定の評価基準について

SaMMAの削除モードでは、宛先のメールアドレスを検査し次の評価基準で添付ファイルの削除判定を行います。
送信元のメールアドレスは検査されません。

3.10.1 送信元メールアドレスについて

削除モードは、主に外部からの攻撃対策としての用途を想定されています。
そのため、なりすまし可能な送信元メールアドレスの評価を行いません。

3.10.2 設定箇所による優先順位

SaMMAの削除判定設定は宛先ユーザ設定ファイルとデフォルト処理設定で行えます。各設定の優先順位は次の通りです。

  1. 宛先ユーザ設定ファイル
  2. デフォルトの暗号化処理

3.10.3 添付ファイル削除条件の優先順位

宛先ユーザ設定ファイル内等で複数の条件と一致した場合は、次の優先順位で動作します。
非処理対象メールアドレス > 削除対象メールアドレス > 非処理対象FQDN > 削除対象FQDN > 非処理対象ドメイン(サブドメイン含む) > 削除対象ドメイン(サブドメイン含む)

3.11 無害化設定の評価基準について

SaMMAの無害化モードでは、宛先のメールアドレスを検査し次の評価基準でメールの無害化対象を決定し、無害化対象に対して無害化判定を行います。

3.11.1 送信元メールアドレスについて

無害化モードは、無害化対象の決定には送信元メールアドレスを参照しません。ただし送信元メールアドレスの評価は、無害化判定の際に行います。

3.11.2 設定箇所による優先順位

SaMMAの無害化判定設定は宛先ユーザ設定ファイルとデフォルト処理設定で行えます。各設定の優先順位は次の通りです。

  1. 宛先ユーザ設定ファイル
  2. デフォルトの暗号化処理

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自動追加機能とは、宛先メールアドレスがいずれもある正規表現のパターン にマッチしない場合に、指定したメールアドレスにもメールを送信する機能です。

  1. すべての宛先メールアドレスについての判定を行います。
  2. パターンマッチングの条件には正規表現を使用します(例:.*@designet.co.jp)。
  3. すべて一致しなかった場合、指定したメールアドレスを宛先に追加します。

LDAPのメールアカウントに、autoBccConditionString属性とautoBccMailAddress属性が設定されている場合は、それぞれを条件とメールアドレスとして使用します。 autoBccConditionString属性とautoBccMailAddress属性が設定されていない場合は、 samma.confのDefaultAutoBccConditionStringとDefaultAutoBccMailAddrを、 条件とメールアドレスとして使用します。
なお、autoBccConditionString属性とautoBccMailAddress属性のどちらか一方のみを設定することはできません。

3.13 Whitelist機能

特定のIPアドレスまたはネットワークアドレスから届いたメールについて添付 ファイルの暗号化を行わないようにするための機能です。 ホワイトリストの設定ファイルはsamma.confのWhiteListPathの項目で指定することができます。

  1. ホワイトリストファイルを読み込みます。 (例:/usr/local/etc/samma/whitelist)
  2. ホワイトリストファイルに記述されているIPアドレス(IPv4,IPv6両対応)と送信元アドレスとを比較します。
  3. ファイル内に記述されているアドレスと送信元アドレスが一致した場合、暗号化・削除処理を行わずにメールを送信します。

samma.confの設定例
WhitelistPath=/usr/local/etc/samma/whitelist

ホワイトリスト設定ファイルにはIPアドレスまたはネットワークアドレスを指定します。IPv4とIPv6に対応しています。

whitelistの設定例
# 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の項目に設定したファイル名に変換します。

samma.confの設定例
AttachmentFileAlias=UnknownFileName
上記の設定例の場合、添付ファイル名に変換不可能文字が含まれていた場合に ファイル名を「UnknownFileName」に変換し、暗号化を行います。 複数ファイルが添付されていた場合

UnknownFileName
UnknownFileName(1)
UnknownFileName(2)

のようにファイル名が変換されます。

3.15 二重暗号化防止機能

ファイルの二重暗号化を防ぐための機能です。 この機能を有効にすると、メールヘッダに「X-SaMMA-Enc: YES」が含まれていた 場合、添付ファイルの暗号化を行いません。

samma.confの設定例
[二重暗号化防止を行う場合]
LoopCheck=yes

[二重暗号化防止を行わない場合]
LoopCheck=no

3.16 削除ファイルリスト添付機能

!! 削除モードのみの機能となります !!

SaMMAの削除モードでは、元の添付ファイルを削除した後に、削除したファイルのファイル名を羅列したテキストファイルを新たに添付します。
作成される削除ファイルリスト名は、samma.confのDeleteListNameの設定に従います。


next up previous contents
Next: 4. 使い方 Up: SaMMA Previous: 2. 準備

2017年3月28日