Postfix + LDAP でサイト外からのメールを全弾きしてみる

quick hack、大した事やってない。 これから設計するって人は真似しちゃダメ

example.com には、外部にMXとして公開されているメールサーバ takoyaki と 内部配送用の udon, soba, kishimen があって 同一のLDAPデータベースを aliases として利用しています、はい。

tarou@example.com が 「社内のは良いんだけど、社外から来るの全部スパムなんだよね、なんとかしてちょ」

はいはい、やりますよ、takotyakiで弾きゃいいんで でも特別な対応はしたくないし、内部用と外部用のaliases DBを分けるのもなぁ

つー事で、Postfixldap-aliases 設定で何とかしましょう。

Postfix のサンプル通りにやると、たぶん

query_filter = (&(objectClass=nisMailAlias)(cn=%s))
result_attribute = rfc822MailMember

みたいな、設定してるはずなんだけど takoyakiの設定を以下のように

query_filter = (&(objectClass=nisMailAlias)(cn=%s)(!(info=innerOnly)))

追加のフィールドを使って、takoyakiで有効か否かを判断。 んで、追加のフィールドを指定しておこう。 # インチキにextensibleObjectですます

cn=tarou,ou=Aliases,dc=example,dc=com
changetype: modify
add: objectClass
objectClass: extensibleObject
-
add: info
info: innerOnly

後は、社外が全く使えなくなるとたぶんtarouは困るんで tarou2007@example.com → tarou@udon.example.com みたいな(spamに汚染されてない)逃げ道を作っておわり。

良い子はextensibleObject とかでインチキにやらず、もっと良いオブジェクト設計してね

まぁ、追加フィールドにパラメータを持たせれば色々と応用は利く