オープンソース

一覧へ

3. インストール

3.1. SaMMAの入手と展開

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

https://github.com/designet-inc-oss/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にインストールされます。

必要なソフトウェア( 事前に用意しておくソフトウェア 参照)のライブラリ・ヘッダファイルが規定の場所 (/usr/lib、/usr/include)に無い場合、configureオプションで指定する必要があります。詳細は configure オプション を参照してください。

3.2. libdgライブラリ

SaMMAには以下のlibdgライブラリが付属されています。

  • libdgconfig
  • libdgstr
  • libdgmail
  • libdgnetutil

libdgライブラリはSaMMAの動作に必要なライブラリです。既に導入済みの場合は configureオプションの-with-dgconfig、-with-dgstr、-with-dgmail、 -with-dgnetutilを必要に応じて指定することで導入済みのライブラリをそのま ま利用できます。-with-dgXXXと指定しなかったライブラリはソースアーカイブ にバンドルされているものがインストールされます。 インストール場所はconfigureオプションの-prefixで指定できます。

SaMMAの入手と展開 の方法でインストールした場合、libdgライブラリは/usr/local/libにインストールされます。なお、インストールしたディレクトリにライブラリパスが通っていない場合、ライブラリパスを登録する必要があります。
ライブラリパスの設定例
# echo “/usr/local/lib” > /etc/ld.so.conf.d/libdg.conf
# ldconfig

3.3. SaMMAの環境設定

SaMMAには3つのモードが準備されており、利用するモードによって異なる設定が必要となります。 各モードの設定方法については以下を参照してください。

3.4. 宛先ユーザ設定ファイル(rcpt)の作成

SaMMAの処理設定にはモードに関わらず、宛先ユーザ設定ファイルの作成が必要です。 宛先ユーザ設定ファイルには、宛先ごとの処理方法を設定します。

宛先ユーザ設定ファイルでは、宛先メールアドレス又はドメインを一行に一設定ずつ記載できます。 安全化モードの場合、解凍/ダウンロードパスワードも記述できます。自動生成パスワードで安全化する場合には、メールアドレスのみを設定します。

書式は次のとおりです。

[書式]
設定行 = <シンボル><アドレスパート> <パスワード>
  • <シンボル>には次のものが指定できます。
    • 無し: <シンボル>を指定しない場合、続く<アドレスパート>を安全化対象とします。
    • # : コメントとして扱われ動作には影響しません。
    • @ : 続く<アドレスパート>をFQDNとして扱い受信者アドレスのドメインと比較します。一致した場合に、その受信者を安全化対象とします。
    • ! : 続く<アドレスパート>を安全化非対象として扱います。
    • !@ : 続く<アドレスパート>をFQDNとして扱い受信者アドレスのドメインと比較します。 一致した場合に、その受信者を安全化非対象とします。
  • <アドレスパート>には次のものが記述できます。
    • メールアドレス : メールアドレスを設定すると、受信者アドレスとの完全一致で比較を行います。
    • ドメイン : シンボルが'@'の場合には受信者アドレスのドメインと完全一致で比較を行います。
    • シンボルが無いまたは'!'の場合はサブドメインとして受信者アドレスのドメインと比較を行います。
  • <パスワード>には次のものが指定できます。(削除モードと無害化モードでは、記載されていても利用されません。)
    • 無し : <パスワード>を指定しない場合、ランダムパスワードを自動生成し安全化します。
    • 任意の文字列 : 指定された文字列を固定パスワードとして扱い安全化します。
    • なお、次の文字は動的に置き換えて設定されます。
      • %Y 年(2010)
      • %m 月(01-12)
      • %d 日(01-31)

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

  1. 処理対象とする宛先メールアドレス、ドメインを設定する
  2. 1 に一致したユーザの中でも処理しないユーザ(非処理対象)を設定する

SaMMAの入手と展開 の方法でインストールした場合、宛先ユーザ設定ファイルのサンプル(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.5. ポリシーデータベースの作成

SaMMAの環境設定が完了後、ポリシーデータベースの作成を行います。

SaMMAの入手と展開 の方法でインストールした場合、データベースの作成を行うためのMakefileが/usr/local/etc/samma にインストールされます。

各設定ファイルを/usr/local/etc/sammaに配置し、makeコマンドを実行することでポリシーデータベースを作成することができます。 設定ファイルと適用されるモードは以下の表の通りです。

ポリシーデータベースの種類
設定ファイル 適用されるモード
内部ドメイン設定ファイル(sender) 安全化モード
宛先ユーザ設定ファイル(rcpt) 安全化モード/削除モード/無害化モード
拡張子設定ファイル(extension) 安全化モード

作成されるデータベースの形式は btree です。

makeコマンドによるデータベースの作成例
$ cd /usr/local/etc/samma
$ make

データベースの形式を変更する場合やデータベース名を任意の名前に変更する場合には、makemap コマンドを使用し、データベースに変換してください。データベース形式は hash または btree が指定できます。内部ドメイン設定ファイルから内部ドメインDB、宛先ユーザ設定ファイルから受信者DBをそれぞれ作成する必要があります。

内部ドメイン設定ファイルを変更した場合は内部ドメインDBを、宛先ユーザ設定ファイルを変更した場合は受信者DBをそれぞれ作り直す必要があります。書式は次のとおりです。

$ makemap -e {hash|btree} DBファイルのパス < ユーザ設定ファイル

makemapコマンドの-eオプションは空の値を許可する設定です。

SaMMAの入手と展開 の方法でインストールした場合、 設定ファイルの配置場所として /usr/local/etc/samma ディレクトリが指定されます。 環境に合わせて編集し、 内部ドメインDB(sender.db)・受信者DB(rcpt.db)・暗号化ファイル拡張子DB(extension.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
makemapコマンドによる暗号化ファイル拡張子DB作成例
$ makemap -e btree /usr/local/etc/samma/extension.db < extension

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を起動します。 動作モードの切り替えは、sammaプログラムにオプション引数を設定することで行います。

Note

オンラインストレージ連携を利用する場合、安全化モードで起動します。

SaMMAの起動は以下の2種類の方法があります。

  • inittabからの起動
  • systemdからの起動

各モードのそれぞれの起動については以下を参照してください。

3.8.1. 安全化モードの起動

3.8.1.1. inittabから安全化モードを起動

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

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

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

3.8.1.2. systemdから安全化モードを起動

下記の例は、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
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.8.2. 削除モードの起動

3.8.2.1. inittabから削除モードを起動

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

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

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

3.8.2.2. systemdから削除モードを起動

下記の例は、systemdから起動する設定です。systemdの設定ファイルを作成します。

/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
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.8.3. 無害化モードの起動

3.8.3.1. inittabから無害化モードを起動

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

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

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

3.8.3.2. systemdから無害化モードを起動

下記の例は、systemdから起動する設定です。systemdの設定ファイルを作成します。

/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
一覧へ