/etc/mail/accessで完結すると嬉しいです。
/etc/hosts.allowを使わないとできない場合は、そちらでも構いません。
「特定のホストからの受信」の方法です。スパムホストの拒否の方法はググるとアホほど出てきますので不要です。
/etc/mail/access か /etc/hosts.allow で設定したいとのことですので、FEATURE(`access_db') とか tcpwrapper がきちんと導入されていることを前提として回答します。
# 192.0.2.1 のみRELAY許可
Connect:192.0.2.1 RELAY
# 192.0.2.0/24 をRELAY許可
Connect:192.0.2 RELAY
# 192.0.2.1 のみRELAY許可
sendmail:192.0.2.1
# 192.0.2.0/24 をRELAY許可
sendmail:192.0.2.0/255.255.255.0
hosts.allow で設定する場合、設定を変更する際にsendmailをkill -HUPしないといけないので、運用を考えると、hosts.allowでは全ての接続を受け付けるようにして、個別のホストからの接続可否はaccess.dbでやった方がよろしいかと。
sendmail:ALL
Connect:192.0.2.1 RELAY
という感じ。
access.db への設定について詳しくは、cf/README http://www.sendmail.org/doc/sendmail-current/cf/READMEを参照してみてください。
sendmail で /etc/hosts.allow(と /etc/hosts.deny) を使ったアクセス制限を可能にするためには、tcpwrapper と連携するように sendmail がコンパイルされている必要があります。
# sendmail -d0.1 < /dev/null
を実行して、
Compliled with: ...
のところに、TCPWRAPPERS が表示されていれば問題ありません。
sendmail は sendmail.cf という設定ファイルを読み込んで起動するのですが、 sendmail.cf は非常に複雑ですので通常は直接編集はせず、mc という雛形となる設定ファイルを作成して、m4 というプログラムを使って sendmail.cf を生成するのが一般的だと思います。で、その XXX.mc ファイルの中に FEATURE(`access_db') と書くことによって、/etc/mail/access を使ったアクセスコントロールが可能になるというわけです。
FreeBSD はまったく触ったことがないのでアレですが、"sendmail FreeBSD" で検索すればグーグル先生が教えてくれそうな気もします。答えになってないですね。すみません。
「FEATURE(`access_db') とか tcpwrapper がきちんと導入されていること」がわからないので、参考にしたらいいことを教えていただけますか。
メールサーバは初めてで、qmailでつまづいてとりあえず的にsendmailを使った感じです。
OSはFreeBSDです。