localhost [127.0.0.1] nos cabeçalhos de email

5

Estou usando o sendmail para enviar um email muito simples a partir de um arquivo de texto. Aqui está o arquivo de texto:

to:[email protected]
from:[email protected]
subject:Testing

test test test

Que eu envio com:

sendmail -t < mail.txt

O servidor do qual estou executando o sendmail é hostname.tld. Aqui está o / etc / hosts:

12.34.56.78     hostname hostname.tld
127.0.0.1       localhost

Em que hostname.tld é o fqdn do servidor e 12.34.56.78 é o IP público do servidor. / etc / hostname simplesmente contém hostname.tld

Quando recebo o email, recebo este cabeçalho:

Received: from hostname.tld (hostname.tld [127.0.0.1])

Eu não quero o 127.0.0.1, quero que o IP público esteja lá, mas não posso fazer o sendmail usá-lo, não importa o que eu faça. Eu também editei /etc/mail/sendmail.mc para ter a linha:

define('confDOMAIN_NAME', 'hostname.tld')dnl

Mas não faz nada.

Li muitos tópicos em que as pessoas têm um problema semelhante, mas nada parece resolvê-lo. O que posso fazer?

    
por Cameron Ball 18.06.2013 / 09:39

2 respostas

3

Modo daemon vs. MSP

A anotação do endereço IP que você mencionou acima, na verdade, não é uma configuração do próprio servidor sendmail . Se você olhar para uma implantação moderna de sendmail , ela normalmente é dividida em dois componentes. O servidor tradicional (modo daemon) e outro servidor em execução no modo de envio de correio (MSP). Você pode ver isso com um simples comando ps :

$ ps -eaf | grep send
root     24488     1  0 21:10 ?        00:00:00 sendmail: accepting connections
smmsp    24504     1  0 21:10 ?        00:00:00 sendmail: Queue runner@01:00:00 for /var/spool/clientmqueue

A primeira linha é o sendmail no modo daemon, a segunda é o sendmail no modo MSP. Você sempre pode distingui-las porque a maioria das distribuições que enviam o sendmail fazem a variante MSP ser executada como um usuário especial com privilégios menores. Aqui está rodando no meu servidor CentOS 5.x como usuário smmsp .

OBSERVAÇÃO: Isso é feito para separar os deveres de manipulação de envio de mensagens (MSP) e entrega de mensagens (modo daemon). Os usuários se conectam à instância MSP quando estão enviando emails com comandos como mail e mailx localmente na caixa.

Ao lidar com o sendmail em uma distro baseada no Red Hat, como o CentOS, os arquivos de configuração estão localizados aqui: /etc/mail . Existem dois arquivos nos quais estamos interessados nesta modificação:

  • /etc/mail/sendmail.mc
  • /etc/mail/submit.mc

O primeiro arquivo controla o servidor do modo daemon, enquanto o segundo arquivo é destinado ao servidor MSP.

Por acaso, esses arquivos *.mc não são arquivos de configuração reais que os dois servidores usam diretamente; em geral, a configuração sendmail pode ser complicada. Dada a sua idade e versatilidade, ela pode ser configurada de várias maneiras e, portanto, esses arquivos *.mc são arquivos de pré-configuração que são "compilados" em arquivos de configuração sendmail reais. As versões compiladas desses arquivos também estão no mesmo diretório:

  • /etc/mail/sendmail.cf
  • /etc/mail/submit.cf

Geralmente, é aconselhável não fazer alterações nesses dois arquivos diretamente, mas sim fazer as alterações através do arquivo .mc correspondente. Você normalmente edita os arquivos .mc e, em seguida, executa o comando make enquanto está dentro do diretório /etc/mail . Novamente, este é um Red Hat-ism, que eu saiba, para que outra distro possa fazer as coisas de maneira diferente.

NOTA: * Os arquivos .mc estão em uma linguagem de macros chamada M4 , então a ferramenta para compilá-los é chamada, é claro, de m4 . Você pode compilar manualmente esses arquivos com um comando como este:

$ m4 /etc/mail/submit.mc > /etc/mail/submit.cf

Isso é tudo o que está acontecendo com os arquivos make e Makefile que a Red Hat fornece no diretório /etc/mail .

Alterações no submit.cf

Então, quais alterações você precisa fazer? A linha a seguir precisa ser anexada ao arquivo submit.mc :

CLIENT_OPTIONS('Family=inet, Address=<your ip here>, Name=MTA')dnl

Certifique-se de adicionar seu IP onde ele diz <your ip here> . Depois de fazer essa alteração, você precisará gerar novamente seu arquivo submit.mc .

$ cd /etc/mail && make

Depois de regenerar o arquivo .cf , você precisará reiniciar o sendmail :

$ /etc/init.d/sendmail restart
-or-
$ /etc/init.d/sendmail reload

Produto final

Depois de fazer a alteração acima, você ficará com o seguinte cabeçalho. Neste exemplo, meu endereço IP externo era 50.122.22.45, por exemplo.

Return-Path: <[email protected]>
Received: from mail.sdom.com (mail.sdom.com [50.122.22.45])
    by sdom.com (8.14.3/8.14.3) with ESMTP id r5J188Gx018193
    for <[email protected]>; Tue, 18 Jun 2013 21:08:08 -0400
Received: (from root@localhost)
    by mail.sdom.com (8.14.3/8.14.3/Submit) id r5J15ua4018000;
    Tue, 18 Jun 2013 21:05:56 -0400
Date: Tue, 18 Jun 2013 21:05:56 -0400
Message-Id: <[email protected]>
to:[email protected]
from:[email protected]
subject:Testing
X-Spam-Status: No, score=-4.4 required=5.0 tests=ALL_TRUSTED,BAYES_00
    autolearn=ham version=3.2.5
X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on mail.sdom.com
X-Greylist: Sender is SPF-compliant, not delayed by milter-greylist-4.0 (sdom.com [127.0.0.1]); Tue, 18 Jun 2013 21:08:09 -0400 (EDT)

test test test

Referências

por 18.06.2013 / 11:03
2

Esta foi a minha solução:

/ etc / hosts:

12.34.56.78     hostname.tld
127.0.0.1       localhost

/etc/mail/submit.mc:

FEATURE('msp', '[12.34.56.78]', '25')dnl

(originalmente tinha 127.0.0.1 em vez do meu IP público)

/etc/mail/sendmail.mc:

DAEMON_OPTIONS('Family=inet,  Name=MTA-v4, Port=smtp, Addr=12.34.56.78')dnl
DAEMON_OPTIONS('Family=inet,  Name=MSP-v4, Port=submission, M=Ea, Addr=12.34.56.78')dnl

(ambas as linhas originalmente tinham 127.0.0.1, a mudança faz o sendmail escutar em seu IP público em vez de localhost).

Execute o comando:

make -C /etc/mail

Recarregar o sendmail:

service sendmail reload

Depois de enviar meu e-mail de teste com:

sendmail -t < mail.txt

O cabeçalho que eu não gostei agora diz:

Received: from hostname.tld (hostname.tld [12.34.56.78])

E não há menção de localhost ou 127.0.0.1 em nenhum lugar dos cabeçalhos

    
por 19.06.2013 / 04:45