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

Czy mailx wysyła pocztę używając przekaźnika SMTP czy łączy się bezpośrednio z docelowym serwerem SMTP?

Załóżmy, że wyślę maila używając następującej komendy:

mailx person@x.com

to czy mailx najpierw próbuje znaleźć serwer SMTP mojego ISP w celu przekazania poczty, czy łączy się bezpośrednio. Czy zależy to od tego czy mój komputer ma publiczny adres IP czy jest za NATem. Jak mogę sprawdzić ustawienia programu mailx na moim komputerze? Jak mogę to zweryfikować używając tcpdump?

Risposte (4)

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

mailx może używać SMTP. Jego plik konfiguracyjny to ~/.mailrc

Jednym z przykładów jest mailx używający SMTP Gmaila .

Konfiguracja może być nawet w jednej komendzie:

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

Jeśli używany jest zwykły serwer SMTP, jest to o wiele prostsze (zobacz szczegółowe wprowadzenie tutaj ):

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

Można również umieścić je w pliku konfiguracyjnym mailxa ~/.mailrc

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

Tradycyjnie, uniksowy program mail i jego pochodne (oraz wiele innych narzędzi uniksowych) korzystają z interfejsu /usr/bin/sendmail, udostępnianego przez prawie wszystkie agenty przesyłania poczty (MTA - postfix, exim, courier i oczywiście sendmail).

Oznacza to, że program mail nie posługuje się żadnym protokołem sieciowym - przekazuje wiadomość do sendmail przez stdin i pozwala mu zająć się faktycznym dostarczeniem. (To sięga czasów, gdy część poczty korzystała z SMTP, część z UUCP, a część z BITNET…)

Po ustawieniu wiadomości w kolejce przez sendmail, MTA zajmuje się faktyczną transmisją wiadomości, czy to przez SMTP czy przez coś innego. W zależności od konfiguracji, może łączyć się bezpośrednio z docelowym MTA, lub przekazywać pocztę przez inny host (zwany również smarthost).

Połączenie bezpośrednie jest bardziej powszechne na serwerach; przekazywanie przez smarthost jest bardziej powszechne na komputerach osobistych na łączach domowych - przekazywanie przez Gmail lub konto pocztowe ISP/pracy jest niezbędne do uniknięcia filtrów antyspamowych typu “dynamiczne IP”.

(Niektóre MTA takie jak esmtp lub nullmailer są zbudowane specjalnie dla użytkowników domowych i zawsze używają relayhost. Nie obsługują one odbierania poczty i są dużo mniej zasobożerne).

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

Inne programy, głównie przyjazne dla użytkownika klienty graficzne takie jak Thunderbird czy Outlook, zawsze łączą się bezpośrednio z serwerem SMTP relay/smarthost (ponownie, zwykle Gmail lub serwer SMTP ISP/pracy), który przesyła wiadomość w Twoim imieniu.

Natywne wsparcie SMTP jest obecne w heirloom-mailx, ale nie w tradycyjnym bsd-mailx.

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

Trzecia metoda - łączenie się bezpośrednio z serwerem odbiorcy - jest prawie nigdy nieużywana i żadna MUA jej nie obsługuje. Na komputerach osobistych jej użycie spowodowałoby odrzucenie wiadomości (wiele spamu jest wysyłane z zainfekowanych adresów IP użytkowników domowych).

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

Ze strony man mailx(1), sekcja OPIS, podsekcja Opcje łańcuchowe:

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

istnieje alternatywa bez lokalnego mta jak sendmail/postix.

pakiet debian ssmtp

info z opisu 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.