3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PPAPを拒否するMilterを作ってみました

Last updated at Posted at 2022-04-04

PPAPを拒否するMilterを作ってみました

はじめに

PPAPなメール、つまり、暗号化されたパスワード付きzipが添付ファイルに含まれているメールを拒否するMilterを作ってみました。

今回は、使い方を簡単に説明します。
環境は、手元にあったCentOS7ですが、どの環境でも大して変わらないと思います。

事前準備

使用しているライブラリpymilterがCのmilterとリンクしますので、gccとpython, sendmailそれぞれの開発用ライブラリが必要です。

yum install -y python3-devel gcc sendmail-devel

Ubuntuの場合は、

apt-get install -y gcc python3-dev python3-pip libmilter-dev

です。

No-PPAP-Milterのインストール

pip3 install no-ppap-milter

no-ppap-milter というコマンドがインストールされます。

Postfixの設定

main.cfに以下のように追加します。

main.cf
milter_protocol=6
milter_default_action=accept
smtpd_milters=inet:localhost:9201

unix domain socketを使う場合は、smtpd_miltersのところを

main.cf
smtpd_milters=unix:/var/run/milter.sock

のようにします。

No-PPAP-Milterの起動

no-ppap-milterコマンドを実行します。

no-ppap-milter

unix domain socketを使う場合は、--socket-nameオプションで指定できます。
postfixユーザーが読み込めるようにpostfixユーザーで実行するのがいいでしょう。

sudo -u postfix /usr/local/bin/no-ppap-milter --socket-name unix:/tmp/milter.sock

確認

普通の添付ファイルのあるメールの場合

# telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 example.com ESMTP Postfix
HELO localhost
250 example.com
MAIL FROM: hirano@example.com
250 2.1.0 Ok
RCPT TO: hirano@example.com
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
MIME-Version: 1.0
... 省略 ...

--00000000000075672405db1ef6ff--
.
250 2.0.0 Ok: queued as 321E421CBB

ちゃんと届いたようです。
では、PPAPなパスワード付きZIPファイルの添付されたメールではどうでしょうか。

パスワード付きZIPな添付ファイルのあるメールの場合

... 省略 ...
DATA
354 End data with <CR><LF>.<CR><LF>
... 省略 ...
.
550 5.7.1 We do not accpet encrypted zip.

いい感じですね。拒否されました。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?