sendmail を利用できるユーザーを制限するには、どうしたらよいでしょうか。(メールソフトからの送受信)

出来れば、ユーザーグループ単位で制限したいのですが。

また、ドメイン、IPでの制限でもよいのですが。

A 回答 (2件)

メールソフトの「SMTPサーバ」の所に当該サーバを指定して


メールを「送信」している人がいて、それを止めさせたい
ということですよね?

メールソフトは当該サーバにSMTPで接続し、sendmailに
メールを渡す。sendmailはそのメールを目的地へ中継する。
これを止めさせたいと。

(受信に関してはそのユーザのアカウントを
作らなければ良いわけですから)


これまでsendmailの設定はどうされていたんでしょうか?
デフォルトのままですか?参考URLのCFというツール
を使えば、「比較的」簡単にsendmailの設定ができます。
(sendmail.cfはそのままでは殆んど解読不能ですので…)

それでも設定項目がかなり多岐に亙っていて、
ちょっと失敗するとメールの送受信ができなくなったり、
近所のメールサーバに大迷惑を掛けたりするので、
注意が必要です。(CFのdocのMANUAL.jpnを良く読んで、
末尾に書いてあるテストを必ず実行するようにして下さい)

SMTP接続の制限だから、
CHECK_HOST_DENYに接続を拒否したいドメイン・IPを
書けばいいと思います。[方法1]

もっと複雑な制御も可能です。[方法2]
普通、組織内の端末からのメールは、
宛先が世界中のどこであれ中継が許可されるべきで、
組織外からのメールは、その宛先が組織内であるときだけ中継が
許可されるべきです。そのような制御のために、組織の内外を
定義する
LOCAL_HOST_DOMAIN、CLIENT_HOST_DOMAINがあります。
(後者の方が少し厳しい制御が可能)
それと、組織外からのメールの中継許可条件を指定する、
ALLOW_RECIPIENT_DOMAIN、
ALLOW_RELAY_TO、ALLOW_RELAY_FROM
があります。

[ケース1]
当該サーバが外部からのメールを受け取る際に、
発信元サーバから直接SMTP接続で受け取っている場合、
(SMTPについて上位組織でファイアウォールを設けていない場合)
方法2に紹介した細かい制御が必要です。(さもないと、SPAM
業者に利用される恐れがあり、そのときは管理者の責任を問われる
でしょう)

[ケース2]
そうでない場合、外部からのメールはより上位のメールサーバが
外部からのメールを一括して受け取って、
組織内の下位のメールサーバに配送しているはずです。その場合は、
方法2の細かい制御は特に必要ありません。

どちらのケースに該当するかは、当該サーバで外部から受信したメール
のヘッダの配送記録を見れば分かると思います。ケース2なら、どのメール
を見ても、当該サーバの配送記録のすぐ下の行には上位のメールサーバが
記録されているはずです。

さて、ここまでCFについて述べたんですが、
CFをいじるのはできれば避けたい仕事の一つです。

そこで、方法1と同じことが、inetdを使うことで、
sendmailの設定ファイルを書換えることなく行なえます。

デフォルトでは、sendmailはシステムブート時に起動され、常駐して
いるはずです。これをブート時に起動されないように変更し、
(Linuxの場合、/etc/rc.d/rc3.d, /etc/rc.d/rc5.d の中のS??sendmailを
削除または移動)/etc/inetd.confに、以下のような行を、無ければ
挿入します。

smtp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/sendmail -bs -oq

ただし、sendmailとtcpdのパスと、sendmailのオプションは自分の環境に
合わせてください。

こうすると、smtp接続要求があったときだけ、inetdデーモンがsendmailを
立ち上げてくれます。で、このinetdデーモンのアクセス制御ファイルが、
/etc/hosts.allowと/etc/hosts.denyなので、これをmanページを見て編集して
ください。

今気付いたんですが、メールの受信をさせたくないというのは、
ユーザアカウントは作っておきたいけど、POPでの受信はさせたく
ないということでしょうか?それなら、同様に、POPデーモンを
inetd経由で立ち上がるように設定して、/etc/hosts.denyで制御可能です。

この回答への補足

inetd で、うまくいきました。
詳しい説明、非常に助かりました。
どうも、ありがとうございました。

補足日時:2001/06/17 07:03
    • good
    • 0

単純にドメインを指定するのでよければ、sendmail.cfの最初の方に以下の項目が見付かると思いますので、そこを書き換えます。



# address which should be accepted
CZ XXXX.XX.jp YYYY.YY.jp
~~~~~~~~~~ ~~~~~~~~~~

ただしこれだけではSPAM中継基地に悪用される事もありますので、

##
## upon SMTP authentication
##

セクションの

C{HostAllow}

から

F{RoamDom}

までの記述を環境に合わせて便宜書き換えます。

その他にも POP before SMTP を組み合わせると、更にセキュリティが向上するかと思います。
導入について解かりやすい解説をされている個人のWebPageを紹介しておきます。

参考URL:http://www.yy.cs.keio.ac.jp/~hiroaki/
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QSendmailで送受信メールを数えたい

Solaris 7(Sparc) + Sendmail です。1日当たり何通のメールが
送受信されているか知りたいのですが:

Jul 7 03:22:13 mail sendmail[12119]: DAA12119: ===以下略===

syslogの第6フィールド「DAA12119」の部分で、一意なものだけ
の数が、送受信されたメールの数に一致するのでしょうか?
また、第5(sendmail[12119]:)、第6フィールド(DAA12119)
の意味の違いは何でしょうか?

もしくは、他にメール数をカウントするより良い手段がある場合
ご教授願います(root権限使用可能)。

Aベストアンサー

>実は私もfrom/toから、社内間、社内->社外、社外->社内ごとに
>集計したくてsyslogを見ていました。
>kanop_98さんは、そのような集計をやられていますか?
>
自分はfromとtoそれぞれ集計してます。
なのでfromとtoを連携させた「社内間」と「社外→社内」の区別はしてません。
「どこから何通受信」「どこに何通送信」がわかれば
ある程度は見えてくると思います。

で、貧弱な方法なのであまり参考にしてほしくないですが...^ ^;;
昔は単にgrep -cでカウントしてましたが、よけいな部分までカウントする事があったので、
今はperl使って集計してます。

syslogのfromとtoの部分のみをそれぞれ一時ファイルとして抽出し、
それらのファイルから内部ドメインとそれ以外(外部)の単語数を集計しているだけです。
キューIDやPIDは一切無視です。

perlのfrom,toの抽出部分は以下のような感じです。
---------------------------------------------
 open(OUT1,"> to.tmp");
 open(OUT2,"> from.tmp");
 open(IN,"< /var/log/syslog");
 foreach $buffer (<IN>) {
  ($tmp) = split(/,/,$buffer);
  if ($tmp =~ /.*to=</) { print OUT1 "$tmp\n"; }
  if ($tmp =~ /.*from=</) { print OUT2 "$tmp\n"; }
 }
---------------------------------------------


perlの集計部分は以下のような感じです。(to部分)
---------------------------------------------
 open(IN,"< to.tmp");
 open(OUT,"> syukei_to.txt");
 foreach (<IN>) {
  foreach $address (@address) {
   $count{$address}+= /$address/g;
  }
 }
 print OUT "naibu-1 = $count{$naibu-1}\n";
 print OUT "naibu-2 = $count{$naibu-2}\n";
---------------------------------------------
@addressには参照するドメインの一覧($naibu-1="@hoge.com"とか)を入れておきます。

思いつきでつくったので、問題もあるでしょうし、もっとスマートな方法もあるかとは思います。
自分のこの貧弱スクリプトを見て専門家の方がコメントしてくれたらいいのですが...。

>実は私もfrom/toから、社内間、社内->社外、社外->社内ごとに
>集計したくてsyslogを見ていました。
>kanop_98さんは、そのような集計をやられていますか?
>
自分はfromとtoそれぞれ集計してます。
なのでfromとtoを連携させた「社内間」と「社外→社内」の区別はしてません。
「どこから何通受信」「どこに何通送信」がわかれば
ある程度は見えてくると思います。

で、貧弱な方法なのであまり参考にしてほしくないですが...^ ^;;
昔は単にgrep -cでカウントしてましたが、よけいな部分までカウントす...続きを読む

Qsendmailで他ドメインのアドレスに送信できません。

LinuxWorld1月号に付いていたRHL8.0で7.3からアップグレードしました。sendmailはrpmで8.12.5-7にアップグレードしました。以前のsendmail.mcを使ってもう一度sendmail.cfを作成したところローカルドメインのユーザー間ではメールの送信は可能なのですが、他ドメインのメールアドレスにはメール送信ができなくなりました。また、sendmail.cfを作成する際
*** WARNING: missing -T<TMPF> in argument of FEATURE('access_db',hash -o /etc/mail/access.db)という警告が出ますが何のことなのでしょうか。参考にしたsendmail.mc の内容は以下のページのものです。
http://www.geocities.co.jp/SiliconValley-Cupertino/1049/inst_mail.html

Aベストアンサー

補足を読んで回答しています。
/etc/mail/access に
(メールを送るクライアントのIP)RELAY
という行を書いて、
# cd /etc/mail
# makemap hash access < access
とかやってみると、送信できるでしょう。
この設定の意味は、特定のクライアントから送信されるメールは、
どの宛先にも送ることができる、というものです。

Qsendmailのバーチャルドメイン設定

linux7にapache、sendmailを入れています。www.aaa.comというドメインで動かしていたんですが、このたびwww.xxx.comというドメインを新たに取得したのでこのサーバで動かそうと思い、ここで教えてもらってバーチャルドメインの設定をしたんですが、apacheはどうやらうまく動いているようなのですが、メールが届かなくて困っています。
Relay operation rejected Giving up on xxx.xxx.xx.xxというメッセージとともにメールが帰ってきます。nslookupで調べてみると、set type=mxで検索したときにAuthoritative answers can be found fromのあとに20行ほど出てきて、どうもおかしいようです。
sendmail.defの末尾にUSERTABLE_MAPS='xxx.com=hash:/etc/mail/dddddd'を追加してCFを使ってcfを作りました。
ddddddには webmaster:maildrop webmaster と書き、makemapでdbファイルを作りました。
/etc/namedb/の中のxxx.com.zoneにはaaa.comの正引きゾーンファイルを真似て書きました。mx関連で言えば
xxx.com. IN MX 10 www.aaa.com.

www IN A xxx.xxx.xx.xx(aaa.comのIP)
IN MX 10 www.aaa.com.
smtp IN CNAME www.aaa.com.
pop IN CNAME www.aaa.com.
とか書いてみました。あんまり自信ないです。

どこか間違っているところはないでしょうか。
教えてください。お願いします。

linux7にapache、sendmailを入れています。www.aaa.comというドメインで動かしていたんですが、このたびwww.xxx.comというドメインを新たに取得したのでこのサーバで動かそうと思い、ここで教えてもらってバーチャルドメインの設定をしたんですが、apacheはどうやらうまく動いているようなのですが、メールが届かなくて困っています。
Relay operation rejected Giving up on xxx.xxx.xx.xxというメッセージとともにメールが帰ってきます。nslookupで調べてみると、set type=mxで検索したときにAuthoritative ans...続きを読む

Aベストアンサー

まず、確認すべきこと

・comのサーバにxxx.comはすでに登録されていますか?
・sendmail.cfの設定でアクセプトアドレスのところでwww.xxx.comをいれましたか?

まず、nslookupでMXがちゃんと引けない時点で問題だと思います。

nslookupでルートサーバかどこか適当な外部のサーバに対してtype=NSでxxx.comが検索できるかどうか確かめ、次にMXを確かめてみてください。

QLinux 複数ドメインのSendmailの設定について

現在、バーチャルドメインにおいてのsendmailの設定で
非常に困っています。
どなたか教えていただけませんでしょうか(;_;)
-------------------------------------------
複数ドメインの場合
ドメイン違い同じアカウント名が発生します。
例えば *a*という会社のドメインと*b*という会社のドメインの管理
をしている場合に、*a*という会社にも*b*という会社にも
userさんという人がいて
内部的にはユーザー管理を番号などでしているとしても
外部的には同じアカウントをドメイン違いで使用したいのです。

【例】
ユーザー:User1  ドメイン:*a*.co.jp
ユーザー:User2  ドメイン:*b*.co.jp
user@*a*.co.jp は user1のmailboxへ配信
user@*b*.co.jp は user2のmailboxへ配信

【現在設定内容】
Sendmail.defファイルの[usertable]にて
以下のように設定しております。

((sendmail.def))

USERTABLE_MAPS='*a*.co.jp=hash:/etc/mail/mail.*a*.db \
*b*.co.jp=hash:/etc/mail/mail.*b*.db'


((dbの内容))
(1)mail.*a*.dbの内容
user:maildropuser1@*a*.co.jp


(2)mail.*b*.dbの内容
user:maildropuser2@*b*.co.jp

※Sendmail.defはCfファイルに変換し、dbファイルも hashをかけて
・・・というような処理は必ず実行しているものとします。

OFFICIAL_NAMEには*a*.co.jp
MY_ALIASには*b*.co.jp
ALIAS_REWRITE=no
ACCEPT_ADDRには*b*.co.jpと設定しています。

いろんな方のHP等をご拝見させていただいたのですが
なんだか上手く行かなくって・・・
上手く行かないというのは
どちらのドメインでテストしても
結局Official_Nameに設定している*a*のuser1のmailboxに
いっちゃうのです。
Procmail?の設定は全くしていません。
もしかして必要なのでしょうか。。。

現在、バーチャルドメインにおいてのsendmailの設定で
非常に困っています。
どなたか教えていただけませんでしょうか(;_;)
-------------------------------------------
複数ドメインの場合
ドメイン違い同じアカウント名が発生します。
例えば *a*という会社のドメインと*b*という会社のドメインの管理
をしている場合に、*a*という会社にも*b*という会社にも
userさんという人がいて
内部的にはユーザー管理を番号などでしているとしても
外部的には同じアカウントをドメイン違いで使用したい...続きを読む

Aベストアンサー

Wide-CF ではなく、m4 の cf であれば、実績があります。
現在 CFの方のメンテナンスもないようなので、m4の方に
移行してみてはいかがでしょうか。
m4 の mc ファイル中に
VIRTUSER_DOMAIN_FILE(`-o /etc/mail/virtuser-domain')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtual-user-table')dnl
と定義しておいて、make なんとか,cf でsendmail.cf を作成して
おいて、
--- /etc/mail/virtuser-domain
*a*.co.jp
*b*.co.jp
--- /etc/mail/virtual-user-table
user@*a*.co.jp user1
user@*b*.co.jp user2
-------------------------------------------
というファイルを作って、
virtual-user-table は、makemap で hash しておけば
望みの動作をすることができるかと思います。

virtual-user-table の方に
@*b*.co.jp error:5.1.1:Unknown user

というのを追加しておくと、相手に unknown user
としてエラーを明示的に返すこともできます。

Wide-CF ではなく、m4 の cf であれば、実績があります。
現在 CFの方のメンテナンスもないようなので、m4の方に
移行してみてはいかがでしょうか。
m4 の mc ファイル中に
VIRTUSER_DOMAIN_FILE(`-o /etc/mail/virtuser-domain')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtual-user-table')dnl
と定義しておいて、make なんとか,cf でsendmail.cf を作成して
おいて、
--- /etc/mail/virtuser-domain
*a*.co.jp
*b*.co.jp
--- /etc/mail/virtual-user-table
user@*a*.co.jp use...続きを読む

Qワークグループ or ドメイン

WinXPでドメインネットワークを構築するのと、
ワークグループでは、どちらがセキュリティの面で安心できますか?

ワークグループに属しているとき、
ドメインに属してるとき、

それぞれどのようなことになるんでしょうか?


ただプリンタを共有したいだけなのですが、この場合
どちらがいいといえるでしょうか?

なんでもいいので回答お願いします

Aベストアンサー

>WinXPでドメインネットワークを構築するのと、
>ワークグループでは、どちらがセキュリティの面で安心できますか?

どちらも大して変わりません。どちらもIDとパスワードが分
かってしまえばネットワークリソースにアクセスできること
に変わりはありません。
ドメインの利点は、ユーザー情報(特にIDとパスワード)を一ヶ
所(ドメインコントローラ)で管理できることです。セキュリ
ティ的な利点はありません。

何か素晴らしい技術で、アクセス制御出来る様な印象を持たれ
ているのかもしれませんが、そんな物はありませんので、ド
メイン、ワークグループどちらを選んでも一緒です。

また、ドメインを構成するには、サーバーOSが必要です。
普通のWinXP ProやHomeだけではドメインに出来ませんの
で、そうしたOSが無ければ選択肢はワークグループしかあり
ません。念のため。


このカテゴリの人気Q&Aランキング

おすすめ情報