web-dev-qa-db-ja.com

自分のメールアドレスからスパムを受信して​​います。後置

今から2週間、自分のアドレスから送信されたスパムメールを受信し続けます。

次に例を示します。

Apr  2 10:15:13 hostname postfix/smtpd[28874]: warning: hostname 212.156.246.74.static.turktelekom.com.tr does not resolve to address 212.156.246.74
Apr  2 10:15:13 hostname postfix/smtpd[28874]: connect from unknown[212.156.246.74]
Apr  2 10:15:14 hostname postfix/smtpd[28874]: 750991E018: client=unknown[212.156.246.74]
Apr  2 10:15:16 hostname postfix/cleanup[28880]: 750991E018: message-id=<[email protected]>
Apr  2 10:15:17 hostname opendkim[14624]: 750991E018: [212.156.246.74] [212.156.246.74] not internal
Apr  2 10:15:17 hostname opendkim[14624]: 750991E018: not authenticated
Apr  2 10:15:17 hostname opendkim[14624]: 750991E018: no signature data
Apr  2 10:15:17 hostname postfix/qmgr[19733]: 750991E018: from=<[email protected]>, size=3207, nrcpt=1 (queue active)
Apr  2 10:15:17 hostname dovecot: lda([email protected]): msgid=<[email protected]>: saved mail to INBOX
Apr  2 10:15:17 hostname postfix/pipe[28882]: 750991E018: to=<[email protected]>, relay=dovecot, delay=2.7, delays=2.7/0.01/0/0.05, dsn=2.0.0, status=sent (delivered via dovecot service)
Apr  2 10:15:17 hostname postfix/qmgr[19733]: 750991E018: removed
Apr  2 10:15:18 hostname postfix/smtpd[28874]: disconnect from unknown[212.156.246.74]

私はこれらの制限を持っています:

smtpd_helo_required = yes
smtpd_client_restrictions = reject_rbl_client all.spam-rbl.fr
smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated
smtpd_recipient_restrictions =
    reject_unknown_recipient_domain
    reject_non_fqdn_recipient
    reject_unlisted_sender
    permit_mynetworks
    reject_authenticated_sender_login_mismatch
    permit_sasl_authenticated
    reject_unauth_destination
    reject_unauth_pipelining
    reject_non_fqdn_sender
    reject_unknown_sender_domain
    reject_invalid_hostname

これらのメールをブロックするには、何を追加すればよいですか?

不明なホスト名からのメールをブロックしても安全ですか?

もう1つ目にしたのは、私の受信トレイによると、上記の電子メールは午前10時15分に受信したにもかかわらず、本日午後12時40分に受信されたということです。メールで受信時刻を偽造することも可能ですか?

回答ありがとうございます!

3
Nael

ご覧のとおり、このメッセージはあなたのアドレスをenvelope senderとして使用しています:

postfix/qmgr[19733]: 750991E018: from=<[email protected]>, size=3207, nrcpt=1 (queue active)

つまり、MAIL FROM(またはRCPT TO)の直後にそのようなメッセージを拒否するメソッドがあるということです。 From:Date:のようなヘッダーに関しては、それらは偽装され、何でも含むことができます。 Spamassassinのような追加のスパムフィルターはこれらに対してテストを実行できますが、それは別の話です。

メールクライアントが、サーバーが実際にメールを受信した時刻ではなく、Date:ヘッダーによって提供された日時を表示しています。 Receivedヘッダーを見て、メッセージが通過したサーバーによって追加された日付を確認できますが、電子メールクライアントはDate:ヘッダーを信頼しています。


方法1:外部ソースからドメインをブラックリストに登録する

メソッドは順番ではありません:最初のメソッドは簡単に追加できますが、2番目のメソッドはあらゆる点で優れています。

このサーバーがドメインexample.comからのメールの唯一の正当な送信元である場合は、ドメインからのすべてのメッセージをブロックできます。ただし、独自のネットワークまたは認証されたユーザーからの場合を除き、 check_sender_access を使用します。個人的にすべてをsmtpd_recipient_restrictionsに入れて、接続を拒否する前にログで詳細を取得します。 main.cfの場合:

smtpd_recipient_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    . . .
    check_sender_access hash:/etc/postfix/access/sender_access,
    . . .

/etc/postfix/access/sender_accessは、ホワイトリストおよびブラックリストに登録されたMAIL FROMアドレス、ドメインなどのルックアップテーブル(postmapを忘れないでください)です。このドメインからのメールをブラックリストに登録するには、たとえば、.

example.com   550 YOU ARE NOT ME.

方法2:ドメインにSPFを実装し、Postfixで送信者SPFをテストする

メールの他のソースがある場合、前の方法は使用できません。また、SPFは、ドメインがスパムの送信に使用されるのを防ぐために実際に実装する必要があるものです。まず、ドメインのTXTレコードを追加して、承認されたすべての送信者をリストします。 SPF Introduction および Record Syntax を参照してください。

その後、Postfixを設定してSPFをチェックします( SPFをPostfixに実装する方法 を参照)。例えば。

  • Mail::SPFおよびNetAddr::IPモジュールを使用してPerlをインストールします。
  • postfix-policyd-spf-Perlをインストールする

  • main.cf

    smtpd_recipient_restrictions =
        . . .
        reject_unauth_destination,
        check_policy_service unix:private/policy-spf,
        . . .
    
  • master.cf

    policy-spf  unix  -       n       n       -       -       spawn
        user=nobody argv=/usr/bin/policyd-spf
    
3
Esa Jokinen

私の環境には、受信メール用の外向きポート(25)と認証済み送信用の別のポート(587)がすでにあります。

main.cfでは

smtpd_sender_restrictions = check_sender_access pcre:/etc/postfix/sender-access

(私はpcreを使用するので、正規表現を使用できます)

次に、私の/etc/postfix/sender-accessには

/@example.com$/ REJECT 554 You may not send as example.com without authenticating.

example.comを独自のドメインに置き換えます。)

しかし、フィルタリングを行わないように587をオーバーライドする必要がありました。そのため、それをクリアするために-o smtpd_sender_restrictions=を追加しました。

したがって、master.cfでは、次のようになります。

# Incoming
25                        inet  n       -       n       -       -       smtpd
    -o mynetworks_style=Host
    -o mynetworks=10.0.0.0/8
    -o milter_macro_daemon_name=Origin_EXTERNAL

# TLS + authenticated submissions
587                       inet  n       -       n       -       -       smtpd
  -o smtpd_sender_restrictions=
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,defer
  -o milter_macro_daemon_name=Origin_AUTH

(逆を行ってmain.cfでクリアしてmaster.cfに設定できたと思います。)

テストするには、587を使用してドメイン内の誰かに電子メールを送信し、ポート25にtelnetで接続して、なりすましが可能かどうかを確認します。

$ telnet smtp.example.com 25
Trying 1.2.3.4...
Connected to smtp.example.com.
Escape character is '^]'.
220 smtp.example.com ESMTP Postfix
helo example.com
250 example.com
mail from: [email protected]
250 2.1.0 Ok
rcpt to: [email protected]
554 5.7.1 <[email protected]>: Sender address rejected: 554 You may not send as example.com without authenticating.
1
rrauenza

それはかなり一般的なスパマーの戦術です。すべての送信者にpermit_mynetworkspermit_sasl_authenticatedを要求することで制限できます。これはsmtpd_sender_restrictionsで設定されます

以下はiRedMailプロジェクトの例です。

# HELO restriction
smtpd_helo_required = yes
smtpd_helo_restrictions =
permit_mynetworks
permit_sasl_authenticated
check_helo_access pcre:/etc/postfix/helo_access.pcre
reject_non_fqdn_helo_hostname
reject_unknown_helo_hostname

# Sender restrictions
smtpd_sender_restrictions =
reject_unknown_sender_domain
reject_non_fqdn_sender
reject_unlisted_sender
permit_mynetworks
permit_sasl_authenticated
check_sender_access pcre:/etc/postfix/sender_access.pcre

# Recipient restrictions
smtpd_recipient_restrictions =
reject_unknown_recipient_domain
reject_non_fqdn_recipient
reject_unlisted_recipient
check_policy_service inet:127.0.0.1:7777
permit_mynetworks
permit_sasl_authenticated
reject_unauth_destination

ポリシーサーバーを実行していない場合は、check_policyを削除する必要があります。

0
Daniel