Estou tentando fazer com que o sendmail transfira e-mails para os servidores especificados nos registros MX; portanto, quando o servidor enviar um email para me@domínio.com, quero que ele pule o localhost e vá direto para o gmail.
Analisei os documentos do sendmail, mas não entendo como explicar minha situação. Essencialmente, o nome do host do meu servidor é 'www.domínio.com', mas quando envio um email para 'me@domínio.com', ele 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, está interceptando todos os emails enviados para domain.com
. Não quero que chegue localhost
. Eu quero que ele vá para os servidores do Gmail.
Todo o correio vinculado a outros endereços funciona bem. Eu também tenho o sendmail configurado para usar o 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 que o email vinculado para [email protected] saia do servidor?
INFORMAÇÕES ADICIONAIS: Aqui está o 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
Respostas:
Finalmente encontrei uma solução bastante abrangente aqui . Para resumir, há várias opções (a maioria mencionada em outras respostas, mas por qualquer motivo não funcionou no meu cenário específico).
Opção 1: remova a entrada de / etc / mail / local-host-names
para mim esse arquivo já estava vazio
Opção 2: remova qualquer entrada LOCAL_DOMAIN no arquivo mc
eu não tinha
Opção 3: diga ao sendmail para não analisar interfaces
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, poderia 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 chamado www.domain.com , a classe sendmails ainda continha AMBOS www.domain.com AND domain.com (mesmo após uma reinicialização)
Opção 5: O QUE FUNCIONOU PARA MIM adicione um LOCAL_RULE_0 ao arquivo mc sendmail
isso precisa ir no final do arquivo e
<tab>
precisa ser um caractere de tabulação realfonte
bestmx
mapa para torná-lo genérico.Mude o nome do host do servidor. Não há motivo válido para que um nome de host seja igual a um nome de domínio simples.
fonte
Aqui está o meu entendimento da sua pergunta:
Você instalou o Sendmail para poder usá-lo para enviar email do seu site.
Você configurou o Sendmail para ser o servidor de email autoritativo do seu espaço para nome DNS público.
Você não deseja que o Sendmail seja autoritário para seu espaço de nome DNS público. Você deseja que o email enviado para o espaço de nome DNS público seja enviado para o email hospedado no Google.
Solução: reconfigure o Sendmail para que ele não seja autorizado para o seu espaço para nome DNS público.
fonte
Não tenho muita experiência com a configuração do sendmail, mas acho que deve estar fazendo a coisa certa com relação aos registros MX. No entanto, imagino que seja possível que, na precedência das pesquisas de DNS, o sendmail esteja primeiro consultando o arquivo de hosts locais
/etc/hosts
na maioria dos sistemas operacionais baseados em unix antes de usar seus servidores DNS. Se for esse o caso, e houver uma entrada no arquivo hosts que se refira à sua máquina como domain.com, se você definir isso como o nome do host, pode ser o que está acontecendo. Você pode editar o arquivo hosts para atender às suas necessidades nesse caso específico, modificando as entradas ou adicionando novas.Ou você pode configurar o sendmail para ignorar o arquivo de hosts do sistema local ao resolver URLs. Não sei bem como fazer isso.
fonte
1) O Sendmail preenche automaticamente a lista dos domínios de email locais (
$=w
).Você não pode desativá-lo usando a seguinte linha no seu sendmail.mc:
Você pode adicionar emails locais "manualmente" no
/etc/mail/local-host-names
arquivo.(Requer HUPing ou reiniciar o daemon sendmail depois)
2) O Sendmail pode adicionar (configurado automaticamente) "este nome de email do host" (
$j
) à lista de domínios de email locais.Você pode definir "este nome de email do host"
3) NÃO
mailertable
é consultado para entregas nos domínios listados em .$=w
fonte
confDONT_PROBE_INTERFACES',
True ') já está (e sempre foi) ativadoO código que está enviando o e-mail, você está usando um endereço de e-mail completo ou apenas o servidor envia por e-mail por uma conta local? Porque:
Isso está dizendo ao sendmail para entregar todos os emails para [email protected] localmente
E isso está dizendo ao sendmail para reescrever os domínios nos endereços locais para domain.com, mas não altera a entrega local .
Etapa 1: Volte para a configuração padrão.
Etapa 2: use a configuração padrão.
fonte