Desativar entrega local no Sendmail

30

Estou usando o Sendmail em um servidor Centos para enviar e-mails para scripts PHP, mas o problema é que o e-mail é entregue em uma caixa de correio local na máquina, em vez do especificado nos registros MX do domínio - o que realmente aponta outra máquina que eu uso para email.

Eu gostaria que o sendmail não tentasse entregar e-mails localmente para o domínio para o qual a máquina está configurada. Existe uma maneira simples de desativar a entrega local?

O domínio não está no arquivo de nomes do host local.

Já fiz muito googling e olhei para:

Configuração do Sendmail para não entregar mensagens na máquina local

Desativar entrega local no Sendmail

Mas ou não há resposta ou não é adequado.

Eu não quero retransmitir para outro servidor, só quero que ele envie e-mails independentemente do domínio.

Para fornecer um exemplo:

Eu tenho dois servidores, um é o servidor de e-mail em mail.example.com e um servidor web que é example.com, quando eu uso o serviço smtp no servidor da Web, ele roteia atualmente mensagens para uma caixa de correio local no exemplo. com, mas deve estar indo para caixas de correio no mail.example.com

Saída do sendmail -bt retorna:

ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter  
> 3,0 [email protected]
canonify           input: info @ example . com
Canonify2          input: info 
Canonify2        returns: info 
canonify         returns: info 
parse              input: info 
Parse0             input: info 
Parse0           returns: info 
ParseLocal         input: info 
ParseLocal       returns: info 
Parse1             input: info 
Parse1           returns: $# local $: info
parse            returns: $# local $: info
    
por Community 15.09.2009 / 02:10

12 respostas

36

O que fiz para desativar a entrega local. Eu usarei o domínio example.com.

Requisitos:

  • example.com Uma entrada que aponta para o endereço IP atribuído a uma das interfaces eth.
  • / etc / hosts definindo example.com atribuído ao mesmo endereço IP acima
  • registros MX de example.com que apontam para os servidores do Google (ASPMX.L.GOOGLE.COM, etc)
  • instalação padrão do sendmail (o meu estava no Ubuntu)

Etapas:

vim /etc/mail/sendmail.mc

no final:

define('MAIL_HUB', 'example.com.')dnl
define('LOCAL_RELAY', 'example.com.')dnl

e depois:

sendmailconfig (or /etc/mail/make depending on your distro)
service sendmail restart

teste:

echo -e "To: [email protected]\nSubject: Test\nTest\n" | sendmail -bm -t -v
echo -e "To: user\nSubject: Test\nTest\n" | sendmail -bm -t -v

Você deve se conectar ao servidor do Google e ver seus e-mails sendo entregues na sua caixa de entrada do Google.

    
por 01.04.2010 / 15:13
4

Graças ao colega de trabalho e Pawel, você me colocou na direção certa para corrigir isso.

Meu problema original era que o sendmail estava considerando minhas contas de e-mail example.com do domínio como contas locais.

Esses links se mostraram muito úteis: Sendmail para domínio local ignorando registros MX (parte 2) link link

Mas no meu caso, usando o FreeBSD 8.2, o que realmente funcionou foi:

# cd /etc/mail

# vim freebsd.mc

Adicione estas duas linhas:

define('MAIL_HUB', 'example.com.')dnl
define('LOCAL_RELAY', 'example.com.')dnl

Logo antes:

MAILER(local)
MAILER(smtp)

# make

--- Esta é a saída ---

 cp freebsd.mc host.example.com.mc
 /usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 host.example.com.mc > host.example.com.cf
 cp freebsd.submit.mc host.example.com.submit.mc
 /usr/bin/m4 -D_CF_DIR_=/usr/share/sendmail/cf/   /usr/share/sendmail/cf/m4/cf.m4 host.example.com.submit.mc > host.example.com.submit.cf

--- Fim da saída ---

# cp sendmail.cf sendmail.cf.bak

# cp host.example.com.cf sendmail.cf

# /etc/rc.d/sendmail restart

Espero que isso salve algumas dores de cabeça para alguém.

    
por 08.11.2011 / 19:16
1

Eu não sou uma pessoa do sendmail, mas acredito que o sendmail tratará qualquer domínio armazenado em /etc/mail/local-host-names como nomes de domínio local.
Você poderia tentar esvaziar este arquivo, (não o exclua) e reinicie o sendmail e veja como você está indo.

EDITAR
O nome do arquivo que mencionei está definido em sendmail.cf e o seu pode não estar definido como local-host-names
procure em /etc/mail/sendmail.cf para

# file containing names of hosts for which we receive email 
Fw/etc/mail/local-host-names    

Isto não é de forma alguma fatos testados, mas apenas eu pensando em voz alta.

    
por 15.09.2009 / 03:15
0

Esta pode não ser a solução que você está procurando, mas se o seu problema é que o usuário "admin" ou "root" está recebendo muitos e-mails e uma enorme caixa de correio, considere a possibilidade de configurar um cron job para Limpe a caixa de correio toda semana, dia, etc.

Tivemos vários servidores CentOS com este problema, mas o problema é que queríamos ler as mensagens algumas vezes, pois isso pode ajudar a diagnosticar diversos problemas, às vezes.

A solução foi simplesmente agendar o trabalho e limpar a caixa de vez em quando.

Se encontrarmos um problema ... comentaremos o trabalho cron (temporariamente) e leremos os logs e os e-mails em busca de pistas.

Apenas um pensamento ... e uma solução rápida / fácil para você.

Se não, dê uma olhada no arquivo sendmail.mc e modifique de acordo.

Atualização rápida:

Isso não é exatamente o que você está pedindo, mas pode lhe dar algumas ideias e ajudar a esclarecer as coisas para você:

link

    
por 15.09.2009 / 02:22
0

Pessoalmente, sou mais uma pessoa pós-fixada, mas isso parece muito com o fato de você ter configurado o servidor de envio para receber e-mails para @ seudominio.com. Se houver um sendmail equivalente ao mecanismo de transporte no postfix, é isso que eu uso para rotear emails internamente entre meus servidores.

    
por 15.09.2009 / 04:09
0

Parece que o seu conjunto de regras 3 retira as informações do domínio. Incluímos algumas etapas gerais de solução de problemas abaixo. Se isso não funcionar, você terá que me enviar seu sendmail.cf para dar uma olhada.

Na saída, example.com é tratado como um domínio local. faça um nslookup:

set q = mx

domain.com

Se isso fornecer o endereço IP da máquina local, será necessário consultar seu dns. Também procure em / etc / hosts para se certificar de que domain.com não esteja listado.

Ele também parece remover o @ domain.com. Por favor, tente usar algo como [email protected] para ver se ele também o lista como um domínio local.

Verifique também o valor de Cw no seu arquivo sendmail.cf.

    
por 15.09.2009 / 07:30
0

Provavelmente não é o que você quer, mas o SSMTP é muito bom para um servidor somente de saída, onde você pode especificar um hub de correio.

    
por 15.09.2009 / 19:50
0

Se você quiser retornar um erro quando a entrega para um endereço local for tentada, use o mapa de acesso e algo como:

@your.domain error:nouser 550 No such user here

Se você quiser que as mensagens de e-mail sejam "entregues", mas descartadas, instale uma entrada virtusertable que aliasse tudo para " @your.domain " para dev-null. Pode ser útil continuar entregando pelo menos " root " localmente, porque muitas vezes ele é o destinatário dos relatórios de e-mail de tarefas agendadas, etc. Tente algo assim em virtusertable :

[email protected] local:root

@your.domain local:dev-null

Com um alias dev-null local que redireciona as mensagens para / dev / null, isso deve continuar fornecendo o email root, mas descartar as mensagens entregues a outros usuários.

    
por 01.12.2009 / 07:59
0

A correção do Pawel funcionou para mim, mas o sendmailconfig não existia no centos, então eu tive que rodar

cd /etc/mail    
m4 /usr/share/sendmail-cf/m4/cf.m4 sendmail.mc > sendmail.cf
service sendmail restart

para atualizar a configuração

    
por 15.05.2010 / 01:31
0

Apenas confirmando que a resposta de Pawel resolveu meu problema muito semelhante.

Para quem usa o FreeBSD, mas não está interessado em se envolver muito com o drudgery do arquivo sendmail cf, a sequência a seguir é o que você usaria para adicionar as duas linhas no exemplo do Pawel:

cd /etc/mail
make conf (generates stock .mc/.cf files with the hostname as part of the 
filename - these will NOT be overriten during an upgrade)
vi hostname.mc
(add the two lines to the .mc file right above the last two "MAILER" lines)
make conf
cp hostname.cf sendmail.cf
/etc/rc.d/sendmail restart
    
por 07.01.2011 / 02:51
0

Eu segui essas sugestões, e notei que apenas adicionando o passo que o pawel mencionou,

"/ etc / hosts definindo example.com atribuído ao mesmo endereço IP acima", basicamente eu adicionei o IP do meu servidor seguido do servername ao arquivo /etc/hosts , e é isso.

Foi o suficiente para eu receber e-mails roteados via google e voltar para meus e-mails.

    
por 14.06.2013 / 12:42
0

Se você estiver usando o Cpanel / WHM para gerenciar seu servidor, certifique-se de selecionar o Remote Mail Exchanger no Cpanel / WHM em vez de Detectar configuração automaticamente. O Remote Mail Exchanger enviará todos os emails por meio de registros MX, incluindo o domínio local. Com o recurso Automático, os e-mails de domínio local serão roteados diretamente localmente e não serão enviados para um servidor externo definido nos registros MX.

    
por 21.03.2016 / 02:18