迷惑メールフィルタの自作プログラムで「spam-blocklists」ライブラリを使っていたが、新しいサーバではうまく動作しなかった。
元々このパッケージはPython3向けに作られたものでなく、今回もパッケージの一部コードを変更しないとエラーとなる。
今回サーバの再構築に合わせて、元のサーバのオリジナルスクリプトなども移植したが、迷惑メールフィルタでスパムでないメールが破棄されてしまう。
spam-blocklistsのソースを見ると、
gethostbyname(送信元ドメイン.multi,surbl.org)が空を返さない限りは、スパム登録されていると判断している。
この処理の部分だけ取り出して、スパム扱いされるドメインとスパムではないドメインを実行すると、スパムの場合は「127.0.0.??」が返され、そうではないドメインの場合は「23.23.86.44」が返される。
surbl.orgの説明(http://www.surbl.org/lists#multi)では最終オクテットの値によって、どのタイプのスパムか決まるらしい。
ちなみに、8ならフィッシング
16ならマルウエア
64ならABUSEリストに登録されている
128ならCRリストに登録されている
これの組み合わせがスパムなので最終オクテットが8,16,24,64,72,80,88,128,136,144,152,192,200,208,216だとスパムということになる。
いつから、仕様が変更されたのか不明だが、スパム扱いされるメールが多くあったということが判明したが、まぁ後の祭り。