web-dev-qa-db-ja.com

メール、procmailで転送、Gmailで拒否

編集

以下に書いたことをしばらく無視して、質問を言い換えましょう。自分のドメイン名を持っていて、そのドメインのメールを(Google Appsではなく)Gmailの受信トレイに入れたい場合、どうしますか[〜#〜]あなた[〜#〜]やる? POP3を使用せず、SMTPのみが望ましい。

元の質問:

  • 私はいくつかのバニティドメイン名を持っています。そのうちの1つはamedee.beです。
  • Postfixを使用してAmazonAWSホストでDebianサーバーを実行しています。
  • また、SpamAssassinをインストールし、最も明白なスパムを処理することを確認しました。
  • Procmailを使用してメールをGmailに転送しています。
  • Googleが説明するベストプラクティスを使用しています: https://support.google.com/a/answer/175365?hl=en

ほとんどの電子メールは問題なく到着します。これは、ServerFaultが提案する同様の質問とは異なり、すべてまたはまったくありません。しかし、私が望むよりも頻繁に(20人に1人)、これは/var/log/mail.logで取得します。

Nov 30 15:01:39 ip-172-31-51-67 postfix/smtp[29724]: 4B72563149: 
  to=<[email protected]>, 
  relay=gmail-smtp-in.l.google.com[74.125.22.26]:25, 
  delay=2657, 
  delays=2657/0.2/0.07/0.18, 
  dsn=5.7.1, 
  status=bounced (Host gmail-smtp-in.l.google.com[74.125.22.26] said: 
    550-5.7.1 [52.0.177.1037] Our system has detected that this message is 
    550-5.7.1 likely unsolicited mail. To reduce the amount of spam sent to Gmail, 
    550-5.7.1 this message has been blocked. Please visit 
    550 5.7.1 https://support.google.com/mail/answer/188131 for more information. 
  y66si45484104qhc.73 - gsmtp (in reply to end of DATA command))

私はそれが間違いなくスパムではないことを確認しました。同じメールをGmailに直接送信すると、メールが届きます。

偶然かどうかはわかりませんが、サーバーをHetznerからAWSに移動した頃から気づき始めました。私はこの設定を数年間使用していますが、電子メールが失われるのは過去2か月間だけです。奇妙なことに、古いサーバーと新しいサーバーのPostfixとProcmailの設定は同じです。

他の関連する質問では、DKIMとSPFについて言及しています。これらの文字の意味を調査する必要がありますが、これまで使用したことがなく、機能するため、最初に他の明らかな原因を除外したいと思います。

/etc/postfix/main.cf

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
append_dot_mydomain = no
biff = no
body_checks = regexp:/etc/postfix/checks/body_checks
broken_sasl_auth_clients = yes
disable_vrfy_command = yes
header_checks = regexp:/etc/postfix/checks/header_checks
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = ipv4
local_destination_concurrency_limit = 1
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0

# If you can't deliver it in two hours - it can't be delivered!
#bounce_queue_lifetime = 2h
#maximal_queue_lifetime = 3h
#queue_run_delay = 3m
#minimal_backoff_time = 5m
#maximal_backoff_time = 10m

message_size_limit = 0
mime_header_checks = regexp:/etc/postfix/checks/mime_header_checks
mydestination =
        styx,
        styx.amedee.be,
        ip-172-31-51-67.ec2.internal,
        localhost.ec2.internal,
        localhost,
        intrepid,
        intrepid.exabyte.be,
        intrepid.amedee.be,
        mail.amedee.be,
        mx.amedee.be,
        localhost.localdomain,
        localhost.amedee.be,
        amedee.be,
        amed.ee,
        vangasse.eu,
        vangas.se,
        dhertefelt.be,
        dhertefe.lt,
        pcrobots.amedee.be,
        nowww.be
mydomain = amedee.be
myhostname = styx.amedee.be
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 10.0.0.0/8
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = -
relayhost =
smtp_destination_concurrency_limit = 1
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name. All Your Spam Are Belong To Us!
smtpd_client_connection_count_limit = 5
smtpd_client_restrictions =
#       reject_invalid_hostname,
        permit
smtpd_error_sleep_time = 10
smtpd_hard_error_limit = 5
smtpd_helo_required = yes
smtpd_helo_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
#       reject_invalid_hostname,
        permit
smtpd_junk_command_limit = 3
smtpd_recipient_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
#       reject_invalid_hostname,
        reject_multi_recipient_bounce,
        reject_non_fqdn_recipient,
#       reject_non_fqdn_sender,
        reject_unauth_destination,
        reject_unauth_pipelining,
        reject_unknown_recipient_domain,
        reject_unlisted_recipient,
        permit
smtpd_relay_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        defer_unauth_destination
#smtpd_sasl_auth_enable = yes
#smtpd_sasl_local_domain = $myhostname
#smtpd_sasl_path = private/auth
#smtpd_sasl_security_options = noanonymous
#smtpd_sasl_type = dovecot
smtpd_sender_restrictions =
#       reject_unknown_sender_domain,
        permit
smtpd_soft_error_limit = 2
smtpd_timeout = 120
smtpd_tls_cert_file = /etc/postfix/tls/mail.cert
smtpd_tls_key_file = /etc/postfix/tls/mail.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
#virtual_alias_domains = /etc/postfix/maps/virtual_alias_domains
virtual_alias_maps = hash:/etc/postfix/maps/virtual_alias_maps

/etc/postfix/master.cf

smtp      inet  n       -       -       -       -       smtpd
  -o content_filter=spamassassin
submission inet n       -       -       -       -       smtpd
  -o content_filter=spamassassin
pickup    unix  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       -       -       -       smtp
relay     unix  -       -       -       -       -       smtp
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
retry     unix  -       -       -       -       -       error
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       -       -       -       lmtp
anvil     unix  -       -       -       -       1       anvil
scache    unix  -       -       -       -       1       scache
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix  -       n       n       -       2       pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman   unix  -       n       n       -       -       pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}
spamassassin unix -     n       n       -       -       pipe
  user=debian-spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

/home/amedee/.procmailrc

UMASK=007
PATH=/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir
LOGFILE=$HOME/log/procmail.log
Shell=/bin/bash
VERBOSE=no
SED=/bin/sed

SENDER=`formail -c -x Return-Path`
SENDMAILFLAGS="-oi -f $SENDER"

[email protected]

#From the manpages: prevent duplicate mails
:0 Wh: msgid.lock
| formail -D 8192 msgid.cache

:0
* ^Subject: Undelivered Mail Returned to Sender
/dev/null

:0
* .*
! $GMAIL

私の質問:Gmailが転送した正当なメールをこれ以上バウンスしないようにするにはどうすればよいですか?

編集:誰かが私の質問にこの質問の重複としてフラグを立てました: メールを送信してスパムとして分類されないようにする方法は?[〜#〜]ただし[〜# 〜]私の質問は、元の送信者として電子メールを送信することではなく、他の誰かによって送信された電子メールを転送することに関するものです。質問を投稿してから2分後にフラグが立てられましたが、完全に読むには時間が足りないので、斜めに読んだ場合だと思います。気分が悪くなることはありません。StackExchangeの評判を獲得したいと思っています。

重複の疑いがある各ポイントに対処しながら、合理的な疑いなく重複ではないことが証明されるまで、この質問を編集し続けます。

編集:DNS構成:

* 300 IN A 52.0.177.103
@ 300 IN A 52.0.177.103
styx 300 IN A 52.0.177.103
@ 300 IN MX 1 styx.amedee.be.
@ 300 IN SPF "v=spf1 ip4:52.0.177.103 ptr ?all"
@ 300 IN TXT "v=spf1 ip4:52.0.177.103 ptr ?all"

編集:mxtoolbox.comによると、逆引きDNSがSMTPバナーと一致しません。そこで、SMTPバナーを/etc/postfix/main.cfで変更しました。

#smtpd_banner = $myhostname ESMTP $mail_name. All Your Spam Are Belong To Us!
smtpd_banner = ec2-52-0-177-103.compute-1.amazonaws.com

postfixのリロード後に変更を確認しました:

admin@ip-172-31-51-67:~$ telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 ec2-52-0-177-103.compute-1.amazonaws.com
quit
221 2.0.0 Bye
Connection closed by foreign Host.

したがって、私が知る限り、52.0.177.103の逆引きDNSはec2-52-0-177-103.compute-1.amazonaws.comであり、ec2-52-0-177-103.compute-1.amazonaws.comのIPアドレスは52.0.177.103です。むしろ残念なことに、ホスト名styx.amedee.beと逆引きDNSが同じである方がはるかに望ましいのですが、これは私の制御が及ばないと思います。

3

これはSMTPだけでは不可能です。個人のメールサーバー(Dovecotなど)でPOP3サービスを構成してから、POP3を使用してメールを取得するようにGmailを構成する必要があります。他の方法では、電子メールを失うリスクがあります。

1