2010-05-04 13:17:09 +0000 2010-05-04 13:17:09 +0000
31
31

O mailx envia correio usando um relé SMTP ou liga-se directamente ao servidor SMTP alvo?

Suponhamos que eu envie um correio utilizando o seguinte comando:

mailx person@x.com

depois o mailx tenta primeiro descobrir o servidor SMTP do meu ISP para retransmitir o correio ou liga-se directamente. Depende se o meu PC tem um endereço IP público ou se está por detrás de um NAT. Como posso verificar as definições do mailx no meu PC? Como posso verificar isto utilizando o tcpdump?

Respostas (4)

31
31
31
2010-12-06 16:37:44 +0000

mailx pode usar SMTP. O seu ficheiro de configuração é ~/.mailrc

Um exemplo é mailx usando o SMTP do Gmail .

A configuração pode até estar num único comando:

mailx -v -s "$EMAIL_SUBJECT" \
-S smtp-use-starttls \
-S ssl-verify=ignore \
-S smtp-auth=login \
-S smtp=smtp://smtp.gmail.com:587 \
-S from="$FROM_EMAIL_ADDRESS($FRIENDLY_NAME)" \
-S smtp-auth-user=$FROM_EMAIL_ADDRESS \
-S smtp-auth-password=$EMAIL_ACCOUNT_PASSWORD \
-S ssl-verify=ignore \
-S nss-config-dir=~/.mozilla/firefox/xxxxxxxx.default/ \
$TO_EMAIL_ADDRESS

Se for usado um servidor SMTP normal, é muito mais fácil (ver uma introdução detalhada aqui ):

mailx -v -s "$EMAIL_SUBJECT" \
-S smtp=smtp://smtp.example.com
-S from="$FROM_EMAIL_ADDRESS($FRIENDLY_NAME)" \
$TO_EMAIL_ADDRESS

Também pode colocá-los no ficheiro de configuração do mailx ~/.mailrc

29
29
29
2010-05-04 16:16:41 +0000

Tradicionalmente, os Unix mail e derivados (e muitas outras ferramentas Unix) utilizam a interface /usr/bin/sendmail, fornecida por quase todos os agentes de transferência de correio (MTAs - postfix, exim, courier, e, claro, sendmail).

, ou seja, o programa mail não fala nenhum protocolo de rede - alimenta a mensagem para sendmail via stdin, e permite-lhe tratar da entrega efectiva. (Isto remonta aos dias em que alguns e-mails usavam SMTP, outros UUCP, outros BITNET…)

Assim que uma mensagem é colocada em fila de espera através de sendmail, o MTA trata da transmissão real da mensagem, seja através de SMTP ou outra coisa qualquer. Dependendo da configuração, pode ligar-se directamente ao MTA de destino, ou retransmitir correio através de outro host (também chamado smarthost).

A ligação directa é mais comum em servidores; a retransmissão via smarthost é mais comum em computadores pessoais em ligações domésticas - a retransmissão através do seu Gmail ou ISP/conta de correio electrónico do trabalho é essencial para evitar os filtros anti-spam “dynamic IP”.

(Alguns MTAs tais como esmtp ou nullmailer são construídos especificamente para utilizadores domésticos e de qualquer forma utilizam um relayhost. Estes não suportam a recepção de correio e são muito mais leves em termos de recursos).

mailx → [/usr/bin/sendmail] → local MTA queue → [SMTP] → recipient MTA → recipient inbox
mailx → [/usr/bin/sendmail] → local MTA queue → [SMTP] → Gmail or ISP/work servers → [SMTP] → recipient MTA → recipient inbox

Outros programas, principalmente os clientes gráficos de fácil utilização, tais como Thunderbird ou Outlook, always ligam-se directamente a um servidor SMTP de retransmissão/smarthost (novamente, normalmente Gmail ou ISP/servidor SMTP de trabalho), que transmite a mensagem em seu nome.

O suporte SMTP nativo está presente em heirloom-mailx , mas não no tradicional bsd-mailx.

app → [SMTP] → Gmail or ISP/work servers → [SMTP] → recipient MTA → recipient inbox

O terceiro método - ligação directa ao servidor do destinatário - é quase nunca* utilizado, e nenhum MUA o suporta. Nos computadores pessoais, a sua utilização faria com que a sua mensagem fosse rejeitada (muito spam é enviado a partir de endereços IP de utilizadores domésticos infectados).

app → [SMTP] → recipient MTA → caught by the spam filter
3
3
3
2010-05-04 13:27:27 +0000

A partir da página mailx(1)man, DESCRIÇÃO secção, Opções de cordas subsecção:

smtp Normally, mailx invokes sendmail(8) directly to transfer
          messages. If the smtp variable is set, a SMTP connection
          to the server specified by the value of this variable is
          used instead.
1
1
1
2014-01-27 09:06:23 +0000

existe uma alternativa sem mta local como o sendmail/postix.

pacote debian ssmtp

info da descrição rpm:

Summary : Extremely simple MTA to get mail off the system to a Mailhub
URL : http://packages.debian.org/stable/mail/ssmtp
License : GPLv2+
Description : A secure, effective and simple way of getting mail off a system to your mail
            : hub. It contains no suid-binaries or other dangerous things - no mail spool
            : to poke around in, and no daemons running in the background. Mail is simply
            : forwarded to the configured mailhost. Extremely easy configuration.

hth

Stefan K.