sendmailで良く使う"makemap"コマンドについてメモ。aliasとかvirtusertableとかで良く使います。
もともと、makemap は sendmail に含まれるプログラムみたいです。ヘルプを読むとこんな風に使うようです。
$ makemap type mapname
"type" には hash や b-tree という内部データ構造の名前を指定します。大抵は"hash"を指定します。
"mapname" ですが、これはファイル名ではない点に注意です。
# makemap hash /etc/mail/virtusertable < /etc/mail/virtusertable
virtusertableの操作では上記のようなコマンドを実行しますが、ぱっと見、「virtusertableに上書きしてるのかな?」と思ってしまいます。
実際は "mapname" が "/etc/mail/virtusertable" で、makemapの方でお尻に".db"を付けて実際のファイル名にしています。つまり"/etc/mail/virtusertable.db" が実際に書き込まれるファイルになります。
makemapは標準入力からキー値(スペース)対応値を一行ずつ読み込んでって、「(mapname).db」というファイルにtypeで指定された形式で出力するプログラムです。
試しにファイル入力無しで動かしてみると、「入力してね」という内容のプロンプトが表示されます。
ダンプも用意されてます。
$ makemap type -u mapname
これで、undump できます。
# makemap hash -u /etc/mail/virtusertable
"mapname"ですので、間違っても "-u /etc/mail/virtusertable.db" とはなりません。(".../virtusertable.db.db" を読みに行ってしまいます)
以上。
コメント