SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
milter-managerが便利な話milter-managerが便利な話2019/8/10
さとうきよし
milterとはmilterとは(m)ail f(ilter)でmilter
元々sendmailで実装されたフィルタする仕組み
post xの lterやpolicy委譲などに類するもの
SMTPセッションのRCPT等コマンド毎に動作を規定可
milterどんなものがあるかmilterどんなものがあるかclamav-milter
ウイルス対策フィルタ
spamass-milter
spamassassinのmilter版
milter-greylist
greylisting⽤milter
Rspamd
スパム対策フィルタ
milter-managerとはmilter-managerとはmilterを組み合わせて使えるようにする
条件に応じてmilterを適⽤といった設定が可能に
rubyで簡単にmilterを書けるライブラリも提供
オープンソース
milterのためのフレームワークmilterのためのフレームワークmilter-managerだけだと単にツールだが
milter/clientライブラリで簡単にmilter作れる
milterを使うためのフレームワークへと昇華されてる
条件を絞ってmilterを当てる条件を絞ってmilterを当てる例)特定のSASLユーザ名のみチェックを掛ける
defile_milter("viruscheck-milter") do |milter|
milter.connection_spec = "inet:8025@localhost" # ウイルスチェック⽤milter
milter.add_applicable_condition("sasl-username-check")
end
define_applicable_condition("sasl-username-check") do |condition|
condition.define_envelope_from_stopper do |context, from|
if context.authenticated? and context["auth_authen"] == "testuser" th
false
else
true
end
end
end
auth名取得のためにpost x側の設定も必要
true/false 返す場合に、milter掛けるほうがfalse であると
ころに注意
milterを作ってみるmilterを作ってみるこれだけでmilterが作れる
require 'milter/client'
class MilterClient < Milter::ClientSession
def initialize(context)
super(context)
end
def header(name, value)
@headers << [name, value]
end
def body(chunk)
@body << chunk
end
def end_of_message
@headers.each do |name, value|
case name
MailParserMailParser
MIMEのメールをパート毎にパースしたい
パースだけしたかったので利⽤
「ruby mime parse」で検索するとトップに
MailParser - tmtm.org
実⽤的なmilterを作る実⽤的なmilterを作る例)ウイルスチェックで引っかかったパートのみを削除
require 'milter/client'
require 'mailparser'
class MilterCutThreat < Milter::ClientSession
def initialize(context)
super(context)
@header_raw = ""
@body_raw = ""
end
def header(name, value)
@headers << [name, value]
@header_raw += name + ": " + value + "n"
end
def body(chunk)
@body << chunk
@body raw += chunk + "n"
情報が少ない情報が少ないそもそもmilterの情報がない。 は消えてる…
milter-managerについて実際の設定例が少ない
milter-managerの公式サイトの情報が頼り
ソース読んだり@ktouさんに直接教えてもらうなど
milter.org
milter-manager使うための情報milter-manager使うための情報設定: milter managerリファレンスマニュアル
Rubyでmilter開発: milter managerリファレンスマニュアル
githubのrubyバインディング⽤ソース
https://milter-
manager.osdn.jp/reference/ja/con guration.html
https://milter-manager.osdn.jp/reference/ja/ruby-milter-
tutorial.html
https://github.com/milter-manager/milter-
manager/blob/master/binding/ruby/lib/milter/client/session.rb
milterを作るための雛形milterを作るための雛形github のmilter-manager/binding/ruby/sample/ 以下にい
くつかサンプルがある
milter-test-client.rb
各種パラメータの取得⽅法がわかる
milter-replace.rb
本⽂の書き換え⽅法がわかる
https://github.com/milter-manager/milter-
manager/blob/master/binding/ruby/sample/
milter-manager便利だよmilter-manager便利だよと⾔ってる僕も仕事で使うの初だった
でもほんと便利だったからみんな使おう

Contenu connexe

Tendances

Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
基礎から学ぶ? EC2マルチキャスト
基礎から学ぶ? EC2マルチキャスト基礎から学ぶ? EC2マルチキャスト
基礎から学ぶ? EC2マルチキャストNoritaka Sekiyama
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話Yoshinori Matsunobu
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
AWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグAWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグAmazon Web Services Japan
 
Rusotoからaws-sdk-rustへ
Rusotoからaws-sdk-rustへRusotoからaws-sdk-rustへ
Rusotoからaws-sdk-rustへYusuke Mori
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことyoku0825
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようShohei Okada
 
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題Hiroshi Tokumaru
 
[CB16] WireGuard:次世代耐乱用性カーネルネットワークトンネル by Jason Donenfeld
[CB16] WireGuard:次世代耐乱用性カーネルネットワークトンネル by Jason Donenfeld[CB16] WireGuard:次世代耐乱用性カーネルネットワークトンネル by Jason Donenfeld
[CB16] WireGuard:次世代耐乱用性カーネルネットワークトンネル by Jason DonenfeldCODE BLUE
 
脱 Excel設計書
脱 Excel設計書脱 Excel設計書
脱 Excel設計書rai
 
ASP.NET Core の ​ パフォーマンスを支える ​ I/O Pipeline と Channel
ASP.NET Core の ​ パフォーマンスを支える ​ I/O Pipeline と ChannelASP.NET Core の ​ パフォーマンスを支える ​ I/O Pipeline と Channel
ASP.NET Core の ​ パフォーマンスを支える ​ I/O Pipeline と ChannelJoni
 
カジュアルにVPC作った結果がこれだよ!
カジュアルにVPC作った結果がこれだよ!カジュアルにVPC作った結果がこれだよ!
カジュアルにVPC作った結果がこれだよ!Emma Haruka Iwao
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8sHyoungjun Kim
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本kazuki kumagai
 
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/SpringPacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/SpringTakatoshi Matsuo
 
コンテナ時代のOpenStack
コンテナ時代のOpenStackコンテナ時代のOpenStack
コンテナ時代のOpenStackAkira Yoshiyama
 
API Gateway를 이용한 토큰 기반 인증 아키텍처
API Gateway를 이용한 토큰 기반 인증 아키텍처API Gateway를 이용한 토큰 기반 인증 아키텍처
API Gateway를 이용한 토큰 기반 인증 아키텍처Yoonjeong Kwon
 
Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!
Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!
Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!Masataka Tsukamoto
 
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.jsAmazon Web Services Japan
 

Tendances (20)

Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
基礎から学ぶ? EC2マルチキャスト
基礎から学ぶ? EC2マルチキャスト基礎から学ぶ? EC2マルチキャスト
基礎から学ぶ? EC2マルチキャスト
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
AWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグAWS X-Rayによるアプリケーションの分析とデバッグ
AWS X-Rayによるアプリケーションの分析とデバッグ
 
Rusotoからaws-sdk-rustへ
Rusotoからaws-sdk-rustへRusotoからaws-sdk-rustへ
Rusotoからaws-sdk-rustへ
 
MySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいことMySQL 5.7にやられないためにおぼえておいてほしいこと
MySQL 5.7にやられないためにおぼえておいてほしいこと
 
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしようPHP-FPM の子プロセス制御方法と設定をおさらいしよう
PHP-FPM の子プロセス制御方法と設定をおさらいしよう
 
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
ウェブ・セキュリティ基礎試験(徳丸基礎試験)の模擬試験問題
 
[CB16] WireGuard:次世代耐乱用性カーネルネットワークトンネル by Jason Donenfeld
[CB16] WireGuard:次世代耐乱用性カーネルネットワークトンネル by Jason Donenfeld[CB16] WireGuard:次世代耐乱用性カーネルネットワークトンネル by Jason Donenfeld
[CB16] WireGuard:次世代耐乱用性カーネルネットワークトンネル by Jason Donenfeld
 
脱 Excel設計書
脱 Excel設計書脱 Excel設計書
脱 Excel設計書
 
ASP.NET Core の ​ パフォーマンスを支える ​ I/O Pipeline と Channel
ASP.NET Core の ​ パフォーマンスを支える ​ I/O Pipeline と ChannelASP.NET Core の ​ パフォーマンスを支える ​ I/O Pipeline と Channel
ASP.NET Core の ​ パフォーマンスを支える ​ I/O Pipeline と Channel
 
カジュアルにVPC作った結果がこれだよ!
カジュアルにVPC作った結果がこれだよ!カジュアルにVPC作った結果がこれだよ!
カジュアルにVPC作った結果がこれだよ!
 
Open infradays 2019_msa_k8s
Open infradays 2019_msa_k8sOpen infradays 2019_msa_k8s
Open infradays 2019_msa_k8s
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/SpringPacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
Pacemaker+PostgreSQLレプリケーションで共有ディスクレス高信頼クラスタの構築@OSC 2013 Tokyo/Spring
 
コンテナ時代のOpenStack
コンテナ時代のOpenStackコンテナ時代のOpenStack
コンテナ時代のOpenStack
 
API Gateway를 이용한 토큰 기반 인증 아키텍처
API Gateway를 이용한 토큰 기반 인증 아키텍처API Gateway를 이용한 토큰 기반 인증 아키텍처
API Gateway를 이용한 토큰 기반 인증 아키텍처
 
Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!
Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!
Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!
 
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
[AWSマイスターシリーズ] AWS SDK for PHP / Ruby / boto(Python) / JavaScript in Node.js
 

Plus de Kiyoshi SATOH

Colabをshellから使う
Colabをshellから使うColabをshellから使う
Colabをshellから使うKiyoshi SATOH
 
えせソアリンを作る
えせソアリンを作るえせソアリンを作る
えせソアリンを作るKiyoshi SATOH
 
ディープラーニングブームは続くのか
ディープラーニングブームは続くのかディープラーニングブームは続くのか
ディープラーニングブームは続くのかKiyoshi SATOH
 
スパム対策お焚き上げ
スパム対策お焚き上げスパム対策お焚き上げ
スパム対策お焚き上げKiyoshi SATOH
 
ディープラーニング概要
ディープラーニング概要ディープラーニング概要
ディープラーニング概要Kiyoshi SATOH
 
シンギュラリティはくるの?
シンギュラリティはくるの?シンギュラリティはくるの?
シンギュラリティはくるの?Kiyoshi SATOH
 
ディープラーニングハンズオンを準備して学んだこと
ディープラーニングハンズオンを準備して学んだことディープラーニングハンズオンを準備して学んだこと
ディープラーニングハンズオンを準備して学んだことKiyoshi SATOH
 
GCEをTensorFlowの「計算エンジン」にする
GCEをTensorFlowの「計算エンジン」にするGCEをTensorFlowの「計算エンジン」にする
GCEをTensorFlowの「計算エンジン」にするKiyoshi SATOH
 
SNS時代のスパム手法
SNS時代のスパム手法SNS時代のスパム手法
SNS時代のスパム手法Kiyoshi SATOH
 
ニューロンになってみる
ニューロンになってみるニューロンになってみる
ニューロンになってみるKiyoshi SATOH
 
Web開発用ツール導入のすすめ
Web開発用ツール導入のすすめWeb開発用ツール導入のすすめ
Web開発用ツール導入のすすめKiyoshi SATOH
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るKiyoshi SATOH
 
Gitoriousをubuntu 10.04 LTSへインストール
Gitoriousをubuntu 10.04 LTSへインストールGitoriousをubuntu 10.04 LTSへインストール
Gitoriousをubuntu 10.04 LTSへインストールKiyoshi SATOH
 
IPフォンから国際電話を掛けることで金をかすめとる攻撃手法
IPフォンから国際電話を掛けることで金をかすめとる攻撃手法IPフォンから国際電話を掛けることで金をかすめとる攻撃手法
IPフォンから国際電話を掛けることで金をかすめとる攻撃手法Kiyoshi SATOH
 
普通の人のパソコン向け最低限のセキュリティ対策
普通の人のパソコン向け最低限のセキュリティ対策普通の人のパソコン向け最低限のセキュリティ対策
普通の人のパソコン向け最低限のセキュリティ対策Kiyoshi SATOH
 
taRgreyでコストを掛けずにスパム削減
taRgreyでコストを掛けずにスパム削減taRgreyでコストを掛けずにスパム削減
taRgreyでコストを掛けずにスパム削減Kiyoshi SATOH
 
Tortoise gitで日本語ファイル名を使うときのgitの選択について
Tortoise gitで日本語ファイル名を使うときのgitの選択についてTortoise gitで日本語ファイル名を使うときのgitの選択について
Tortoise gitで日本語ファイル名を使うときのgitの選択についてKiyoshi SATOH
 
なんで迷惑メールはなくならないの?
なんで迷惑メールはなくならないの?なんで迷惑メールはなくならないの?
なんで迷惑メールはなくならないの?Kiyoshi SATOH
 

Plus de Kiyoshi SATOH (18)

Colabをshellから使う
Colabをshellから使うColabをshellから使う
Colabをshellから使う
 
えせソアリンを作る
えせソアリンを作るえせソアリンを作る
えせソアリンを作る
 
ディープラーニングブームは続くのか
ディープラーニングブームは続くのかディープラーニングブームは続くのか
ディープラーニングブームは続くのか
 
スパム対策お焚き上げ
スパム対策お焚き上げスパム対策お焚き上げ
スパム対策お焚き上げ
 
ディープラーニング概要
ディープラーニング概要ディープラーニング概要
ディープラーニング概要
 
シンギュラリティはくるの?
シンギュラリティはくるの?シンギュラリティはくるの?
シンギュラリティはくるの?
 
ディープラーニングハンズオンを準備して学んだこと
ディープラーニングハンズオンを準備して学んだことディープラーニングハンズオンを準備して学んだこと
ディープラーニングハンズオンを準備して学んだこと
 
GCEをTensorFlowの「計算エンジン」にする
GCEをTensorFlowの「計算エンジン」にするGCEをTensorFlowの「計算エンジン」にする
GCEをTensorFlowの「計算エンジン」にする
 
SNS時代のスパム手法
SNS時代のスパム手法SNS時代のスパム手法
SNS時代のスパム手法
 
ニューロンになってみる
ニューロンになってみるニューロンになってみる
ニューロンになってみる
 
Web開発用ツール導入のすすめ
Web開発用ツール導入のすすめWeb開発用ツール導入のすすめ
Web開発用ツール導入のすすめ
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作る
 
Gitoriousをubuntu 10.04 LTSへインストール
Gitoriousをubuntu 10.04 LTSへインストールGitoriousをubuntu 10.04 LTSへインストール
Gitoriousをubuntu 10.04 LTSへインストール
 
IPフォンから国際電話を掛けることで金をかすめとる攻撃手法
IPフォンから国際電話を掛けることで金をかすめとる攻撃手法IPフォンから国際電話を掛けることで金をかすめとる攻撃手法
IPフォンから国際電話を掛けることで金をかすめとる攻撃手法
 
普通の人のパソコン向け最低限のセキュリティ対策
普通の人のパソコン向け最低限のセキュリティ対策普通の人のパソコン向け最低限のセキュリティ対策
普通の人のパソコン向け最低限のセキュリティ対策
 
taRgreyでコストを掛けずにスパム削減
taRgreyでコストを掛けずにスパム削減taRgreyでコストを掛けずにスパム削減
taRgreyでコストを掛けずにスパム削減
 
Tortoise gitで日本語ファイル名を使うときのgitの選択について
Tortoise gitで日本語ファイル名を使うときのgitの選択についてTortoise gitで日本語ファイル名を使うときのgitの選択について
Tortoise gitで日本語ファイル名を使うときのgitの選択について
 
なんで迷惑メールはなくならないの?
なんで迷惑メールはなくならないの?なんで迷惑メールはなくならないの?
なんで迷惑メールはなくならないの?
 

milter-managerが便利な話