Smtp_should_reject 400 bad request em nounces

Olá!

Estou tendo exatamente o mesmo problema descrito aqui: Configure direct-delivery incoming email for self-hosted sites with Mail-Receiver - #482 by Carleas

O problema parece ser que os bounces que estou recebendo não vêm com um from, então quando a chamada da API é feita como https://forum.example.com/admin/email/smtp_should_reject.json?from=&to=replies+verp-326f6e22828d2543ba65497a47608f13@mail.forum.example.com, ela retorna um 400 com:

{"errors":["param is missing or the value is empty or invalid: from"]}

Aqui estão mais alguns logs do mail-receiver:

Nov 03 07:34:53 mail postfix/smtpd[1044]: connect from v-108-120-yyy-74-srvr1.xxx.com[74.91.xxx.108]
<19>Nov  3 07:34:53 discourse-smtp-fast-rejection[1048]: Failed to GET smtp_should_reject answer from https://forum.example.com/admin/email/smtp_should_reject.json: 400<22>Nov  3 07:34:53 policyd-spf[1049]: : prepend Received-SPF: None (no SPF record) identity=helo; client-ip=74.91.xxx.108; helo=v-148-29-xxx-192-srvr1.xxx.com; envelope-from=<> ; receiver=mail.forum.example.com Nov 03 07:34:53 mail postfix/smtpd[1044]: NOQUEUE: reject: RCPT from v-108-120-yyy-74-srvr1.xxx.com[74.91.xxx.108]: 450 4.7.1 <replies+verp-326f6e22828d2543ba65497a47608f13@mail.forum.example.com>: Recipient address rejected: Internal error, API request failed; from=<> to=<replies+verp-326f6e22828d2543ba65497a47608f13@mail.forum.example.com> proto=ESMTP helo=<v-148-29-xxx-192-srvr1.xxx.com>

No entanto, mesmo que viesse com um from correto (colocando meu e-mail lá), retornaria:

{"reject":true,"reason":"Mail to this address is not accepted. Check the address and try to send again?"}

Então, também teria rejeitado…

Estou perdendo alguma coisa na configuração? Não consigo descobrir.

1 curtida

Olá! Desculpe, mas parece que seu tópico não encontrou interessados. Você conseguiu resolver seu problema sozinho?

Qual provedor de e-mail você está usando?

Não, infelizmente não estou recebendo os bounces…

Estou usando um servidor SMTP do CPanel, no entanto.

E quanto ao seu provedor de e-mail de saída? Você está usando o Mailgun ou algum outro provedor de e-mail transacional?

Não. O mesmo SMTP, o de saída está funcionando perfeitamente, e o de entrada para tópicos também está chegando perfeitamente, o problema é que os bounces não são visíveis para o fórum, então ele continua tentando e eu sou repreendido pelo meu provedor de hospedagem.

Estou encaminhando isto para #hosting.

A resposta oficial típica para esse tipo de coisa, infelizmente, é dizer “e-mail é difícil”. Você terá resultados muito melhores se usar um provedor de e-mail transacional.

Se você tiver um orçamento, pode postar em Marketplace ou posso mover este tópico para lá para você.

Obrigado por pelo menos dedicar um tempo para analisar isso comigo!!

1 curtida

Olá DevTeVe,

Revisei o código em questão e acredito que você está certo - acho que o código smtp_should_reject pode estar rejeitando incorretamente mensagens de devolução e respostas.

Estou escalando isso internamente.

Enquanto isso, se você desativar o filtro de política discourse-smtp-fast-rejection, isso permite o fluxo de e-mails?

2 curtidas

Uau! Obrigado por escalar! Eu estava um pouco sem esperança hahaha! Vou tentar desabilitar discourse-smtp-fast-rejection (embora eu não tenha certeza de como fazer isso, mas vou pesquisar e reportar de volta)

1 curtida

Se você puder remover esta linha do arquivo de configuração do postfix mail-receiver:

smtpd_recipient_restrictions = check_policy_service unix:private/policy

Isso deve resolver o problema - eu não testei, mas acho que vai funcionar:

postconf -e "smtpd_recipient_restrictions ="
1 curtida

Sucesso!

Estou configurando meu mail-receiver.yaml assim (enquanto isso ou para sempre? @supermathie)

# este é o template do container receptor de e-mail
##
## Após fazer alterações neste arquivo, VOCÊ DEVE reconstruir
## /var/discourse/launcher rebuild mail-receiver
##
## TENHA MUITO CUIDADO AO EDITAR!
## ARQUIVOS YAML SÃO SUPER SUPER SENSÍVEIS A ERROS DE ESPAÇAMENTO OU ALINHAMENTO!
## visite http://www.yamllint.com/ para validar este arquivo conforme necessário

base_image: discourse/mail-receiver:release
update_pups: false

expose:
  - "25:25"   # SMTP

env:
  LC_ALL: en_US.UTF-8
  LANG: en_US.UTF-8
  LANGUAGE: en_US.UTF-8

  ## Para onde o e-mail para o seu fórum deve ser enviado. Em geral, é perfeitamente aceitável
  ## usar o mesmo domínio do fórum aqui.
  MAIL_DOMAIN: community.example.com
# descomente estas linhas (e o volume abaixo!) para suportar TLS
  POSTCONF_smtpd_tls_key_file:  /letsencrypt/community.example.com/community.example.com.key
  POSTCONF_smtpd_tls_cert_file:  /letsencrypt/community.example.com/community.example.com.crt
  POSTCONF_smtpd_tls_security_level: may
  POSTCONF_myhostname: community.example.com
  POSTCONF_mynetworks: "127.0.0.0/8 [::1]/128 [fe80::]/64 172.17.0.0/16"
  POSTCONF_smtpd_recipient_restrictions: ""
  ## A URL base para esta instância do Discourse.
  ## Será o que quer que seja a URL do seu site Discourse. Por exemplo,
  ## https://discourse.example.com. Se você estiver executando uma configuração de subpasta,
  ## certifique-se de levá-la em conta (ou seja, https://example.com/forum).
  DISCOURSE_BASE_URL: 'https://community.example.com'

  ## A chave API master do seu fórum Discourse. Você pode obtê-la na
  ## aba "API" do seu painel de administração.
  DISCOURSE_API_KEY: <YOURKEY>

  ## O nome de usuário a ser usado para processar e-mails recebidos. A menos que você tenha
  ## renomeado o usuário `system`, você deve deixar isso como está.
  DISCOURSE_API_USERNAME: system

volumes:
  - volume:
      host: /var/discourse/shared/mail-receiver/postfix-spool
      guest: /var/spool/postfix
# descomente para suportar TLS
  - volume:
      host: /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/
      guest: /letsencrypt
1 curtida

Vamos com “por enquanto” e atualizaremos este tópico quando tivermos mais novidades.

3 curtidas

Muito obrigado! Eu realmente não esperava que isso avançasse mais, mas agora está perfeito e estou recebendo todos os outros retornos!

3 curtidas