Pergunta

Este é um problema que eu tenho certeza que é fácil de resolver, mas eu tenho sido batendo minha cabeça sobre ele durante todo o dia.

Estou desenvolvendo um novo site para um cliente. Reside o web site em (este é um exemplo) website.com. Eu tenho um script PHP formulário para enviar e-mail pedidos dos visitantes para requests@website.com.

Quando eu codificado isso em um servidor de teste em um domínio diferente, tudo funcionou bem. Quando me mudei para website.com, as mensagens de correio nunca chegou. O servidor web está em um host virtual com um grande provedor de acesso.

Aqui está o que eu aprendi desde então: servidor de correio do meu cliente é o Microsoft Exchange em uma caixa fisicamente em seu escritório. Sempre que alguém nos mundiais e-mails fora requests@website.com, o correio chega. e se o servidor web envia para o mesmo endereço de e-mail, ele falhar cada vez. Esta é não um problema PHP. I secure shell no servidor web e testei isso ambos com sendmail e a aplicação de correio UNIX. Eu também testei por e-mail várias contas de email a partir do shell. Posso enviar e-mail me, por exemplo, apenas ninguém no domínio website.com.

Em suma, quando eu estou conectado para website.com, correio para requests@website.com, user@website.com, another_user@website.com todos falham. Todos os outros endereços funcionar bem. O que eu descobri é quem caiu e-mails são encaminhados para a conta "genérico" do servidor web onde se sentam em sua caixa de entrada.

Eu fiz uma pesquisa de MX em website.com. Os registro MX aponta para mailsec.website.com. Eu posso telnet para mailsec.website.com porta 25 e ver o servidor SMTP.

Parece-me que website.com não está fazendo uma pesquisa MX quando ele está enviando e-mail para requests@website.com. Minha teoria é que ele reconhece o domínio como local, vê que não há nenhuma conta "pedidos" do usuário para entregá-lo a, e cai o e-mail na conta catchall. O que eu quero é para forçar o sendmail para fazer a pesquisa MX e enviar a mensagem para o servidor Exchange. Estou no final da sagacidade aqui. Eu não consigo descobrir como fazer isso.

Para essa matéria, eu posso estar longe de base aqui e ter diagnosticada isso inteiramente. Internet mail e MX sempre pareceu uma arte para mim, e minha ignorância está certamente mostrando nesta questão.

Foi útil?

Solução

Eu acho que o problema é que sendmail (o processo) está conversando com o daemon sendmail local. O daemon sendmail local, pensa que porque é website.com, ele deve saber como entregar o e-mail. Infelizmente, o endereço real no de campo não existe no servidor web e, portanto, despeja-o na caixa de correio "genérico". Você deve conversar com seu ISP e tê-los atualizar sua configuração sendmail para que a mensagem endereçada a ... @ website.com fica em frente ao trocador em vez de ser tratada localmente mail.

Outras dicas

Sendmail por padrão lista de domínios de e-mail locais adivinha. Ele pode ser desligado usando a seguinte linha no seu arquivo sendmail.mc:

define(`confDONT_PROBE_INTERFACES',`True')

Como lista raiz domínios de e-mail locais antes e depois da mudança.

echo '$=w' | sendmail -Am -bt

Você verá que os domínios devem ser adicionados "manualmente" para o arquivo (geralmente) / etc / mail / Hospedeiro nomes locais depois de desativar auto-adivinhando.

P.S. Por questão sendmail você pode usar notícia: comp.mail.sendmail

tvanfosson basicamente tem, mas como uma solução temporária, você deve ser capaz de mudar o seu script para que ele mails 'user@mailsec.website.com', e, em seguida, o e-mail vai ser entregue ao servidor de correio atual.

Edite o arquivo tsm.cf (em / etc / mail / ou similar) para incluir

FEATURE(relay_entire_domain) 

entre a (linhas) (Domain) e MAILER. Desde que você está editando o arquivo, você pode querer melhorar também a segurança com

define(`confPRIVACY_FLAGS',``noexpn,novrfy'')

Depois de alterar o arquivo tsm.cf (ou qualquer sendmail config), reiniciar ou SIGHUP o processo sendmail.

Esta alteração é necessária porque os servidores WWW e MX para o domínio não existir no mesmo espaço de processo; Isso desencadeia CARACTERÍSTICA sendmail a processar mensagens para o domínio de usá-lo do mecanismo de entrega externa.

A parte editada do arquivo tsm.cf deve ser semelhante a esta:

DOMAIN(website.com)dnl
FEATURE(relay_entire_domain)dnl
define(`confPRIVACY_FLAGS',``noexpn,novrfy'')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl

O que funcionou para mim foi para adicionar um registro MX no servidor que hospeda o site, que aponta para o host atribuído no servidor de nomes de domínio original. No caso apresentado aqui seria um apontador registro MX para: mailsec.website.com

Eu sou novo aqui. Queria estender RB_CWI resposta, mas eu não estou autorizado a comentários. Sua solução funcionou muito bem.

Você está não necessário para definir o domínio ().

No entanto, no meu sistema eu era obrigado a instalar o pacote sendmail-cf.

As instruções abaixo foram feitos em CentOS 6.5

Primeiro, instale o sendmail-cf

sudo yum install sendmail-cf

Em seguida, editar o senmail.mc

sudo vi /etc/mail/sendmail.mc

Na parte inferior do arquivo Adicionar recurso (relay_entire_domain) dnl, por isso se parece com:

...
FEATURE(relay_entire_domain)dnl
MAILER(smtp)dnl        # right above this line
MAILER(procmail)dnl
dnl MAILER(cyrusv2)dnl

Salve o arquivo, e reiniciar o sendmail.

sudo service sendmail restart

Got preso no mesmo problema. MX aponta para um servidor externo Exchange, mas php / sendmail não pesquisar esse registro. Em vez mails postados por WordPress neste webserver caiu na catchall-caixa de correio.

Solution foi para apagar todas as caixas de correio no servidor web. Agora sendmail estava interessado na MX e todos os mails foi para o Exchange.

No entanto, o Exchange usa servidor de correio do webspace como SmartHost para e-mails enviados. Como solução para isso, fomos capazes de usar as credenciais FTP para acessar o servidor de correio. Eu assumo esta solução não funciona em cada provedor neste planeta, mas no nosso caso (all-inkl.com) funcionou.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top