Como configuro o sendmail para enviar e-mails via registro MX e não para localhost?

Como configuro o sendmail para enviar e-mails via registro MX e não para localhost?

Estou tentando fazer com que o sendmail transfira e-mails para os servidores especificados nos registros MX, para que quando o servidor enviar um e-mail para[e-mail protegido]Quero que pule o localhost e vá direto para o Gmail.

Examinei os documentos do sendmail, mas não entendo muito bem como explicar minha situação. Essencialmente, o nome do host do meu servidor é 'www.domain.com', mas quando envio um e-mail para '[e-mail protegido]'acaba no spool de correio local.

Quando executo o sendmail no modo de depuração:

sendmail -bt
> $=w

Eu recebo:

www.domain.com
www.domain.com.
domain.com
localhost
[54.245.___.___] 

Portanto, ele está interceptando todas as mensagens enviadas para domain.com. Eu não quero que isso chegue localhost. Quero que vá para os servidores do Gmail.

Todas as correspondências destinadas a outros endereços funcionam bem. Também tenho o sendmail configurado para usar DKIM.

Adicionei um registro ao mailertable (reconstruí o mailertable.db e recompilei o arquivo mc>cf), mas não tenho certeza se é isso que preciso fazer ou se estou fazendo corretamente.

domain.com esmtp:[aspmx.l.google.com]

Como faço para permitir correspondência destinada a[e-mail protegido]sair do servidor?

INFORMAÇÕES ADICIONAIS: Aqui está meu arquivo sendmail.mc:

divert(-1)dnl

include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for linux')dnl
OSTYPE(`linux')dnl

define(`confDEF_USER_ID', ``8:12'')dnl

define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST', `True')dnl
define(`confDONT_PROBE_INTERFACES', `True')dnl
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl

define(`confTO_IDENT', `0')dnl

FEATURE(`no_default_msa', `dnl')dnl
FEATURE(`smrsh', `/usr/sbin/smrsh')dnl
FEATURE(`mailertable', `hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl

FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

FEATURE(`accept_unresolvable_domains')dnl
FEATURE(`relay_based_on_MX')dnl
FEATURE(`relay_entire_domain')dnl

LOCAL_DOMAIN(`localhost.localdomain')dnl

MASQUERADE_AS(`domain.com')dnl
MASQUERADE_DOMAIN(`localhost.localdomain')dnl

EXPOSED_USER(`root')dnl

FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl

INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')

MAILER(smtp)dnl
MAILER(procmail)dnl

Responder1

Finalmente encontrei uma solução bastante abrangenteaqui. Para resumir, há uma série de opções (a maioria das quais foi mencionada em outras respostas, mas por alguma razão não funcionou no meu cenário específico).

Opção 1:remova a entrada de /etc/mail/local-host-names

para mim este arquivo já estava vazio

Opção 2:remova qualquer entrada LOCAL_DOMAIN no arquivo mc

eu não tinha nenhum

Opção 3:diga ao sendmail para não investigar interfaces

define(`confDONT_PROBE_INTERFACES', `true')dnl

no meu caso isso foi definido, mas o host problemático ainda estava presente na classe w do sendmail

Opção 4:renomeie o servidor. o link externo fornecido acima diz especificamente: "Se eu quiser remover o whipple.org da classe w, posso renomear o servidor para frodo.whipple.org, www.whipple.org, elvis.whipple.org, por exemplo."

para mim isso não foi suficiente. com o host nomeadowww.domínio.com, a classe sendmails w ainda continha AMBOS www.domain.com E domain.com (mesmo após uma reinicialização)

Opção 5: ISSO É O QUE FUNCIONOU PARA MIMadicione um LOCAL_RULE_0 ao arquivo sendmail mc

LOCAL_RULESETS
LOCAL_RULE_0
R$* < @domain.com. > $*  <tab>$#esmtp $@ mail.domain.com $: $1<@domain.com.>$2

isso precisa ir no final do arquivo e <tab>precisa ser um caractere de tabulação real

Responder2

Altere o nome do host do servidor. Não há nenhuma razão válida para um nome de host ser igual a um nome de domínio simples.

Responder3

Aqui está o meu entendimento da sua pergunta:

  1. Você instalou o Sendmail para poder usá-lo para enviar e-mails do seu site.

  2. Você configurou o Sendmail para ser o servidor de e-mail oficial para seu namespace DNS público.

  3. Você não deseja que o Sendmail seja autoritário para o seu namespace DNS público. Você deseja que os e-mails enviados para seu namespace DNS público sejam enviados para seu e-mail hospedado pelo Google.

Solução: reconfigure o Sendmail para que não seja autoritativo para o seu namespace DNS público.

Responder4

1) Sendmail preenche automaticamente a lista de domínios de email locais ( $=w).

Você não pode desligá-lo usando a seguinte linha em seu sendmail.mc:

define(`confDONT_PROBE_INTERFACES',`True')

Você pode adicionar e-mails locais "manualmente" no /etc/mail/local-host-namesarquivo.
(Requer HUPing ou reinicialização do daemon sendmail depois)

2) O Sendmail pode adicionar (autoconfigurado) "este nome de email do host" ( $j) à lista de domínios de email locais.

Você pode definir "este nome de e-mail do host"

define(`confDOMAIN_NAME',`hostname.example.net')

3) mailertableéNÃOconsultado para entregas em domínios listados em $=w.

informação relacionada