26

Предположим, я отправил письмо, используя следующую команду:

mailx person@x.com

затем mailx сначала пытается найти SMTP-сервер моего провайдера для ретрансляции почты или он подключается напрямую. Зависит ли это от того, имеет ли мой компьютер публичный IP-адрес или он находится за NAT. Как проверить настройки mailx на моем ПК? Как я могу проверить это с помощью tcpdump?

4 ответа4

29

mailx может использовать SMTP. Это файл конфигурации ~/.mailrc

Одним из примеров является mailx с использованием SMTP Gmail.

Конфигурация может быть даже в одной команде:

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

Если используется обычный SMTP-сервер, это намного проще (см. Подробное введение здесь):

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

Вы также можете поместить их в конфигурационный файл mailx ~/.mailrc

21

Традиционно mail Unix и ее производные (и многие другие инструменты Unix) используют интерфейс /usr/bin/sendmail , предоставляемый почти всеми агентами пересылки почты (MTA - postfix, exim, courier и, конечно, sendmail).

То есть mail программа не говорит по сетевому протоколу - она передает сообщение в sendmail через stdin и позволяет обрабатывать фактическую доставку. (Это восходит к тем дням, когда некоторые письма использовали SMTP, некоторые использовали UUCP, некоторые использовали BITNET ...)

Как только сообщение помещается в очередь через sendmail , MTA обрабатывает фактическую передачу сообщения, будь то через SMTP или что-то еще. В зависимости от конфигурации он может либо подключаться напрямую к MTA-получателю, либо пересылать почту через другой хост (также называемый smarthost).

Прямое соединение чаще встречается на серверах; ретрансляция через smarthost чаще встречается на персональных компьютерах при домашних подключениях - ретрансляция через учетную запись Gmail или интернет-провайдера / рабочей электронной почты необходима для того, чтобы избежать скрытых анти-спам-фильтров "динамический IP".

(Некоторые MTA, такие как esmtp или nullmailer , созданы специально для домашних пользователей и всегда используют relayhost. Они не поддерживают получение почты и намного меньше ресурсов.)

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

Другие программы, в основном удобные для пользователя графические клиенты, такие как Thunderbird или Outlook, всегда подключаются напрямую к SMTP-серверу relay/smarthost (опять же, обычно это Gmail или ISTP / рабочий SMTP-сервер), который передает сообщение от вашего имени.

Встроенная поддержка SMTP присутствует в heirloom-mailx, но отсутствует в традиционном bsd-mailx .

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

Третий метод - подключение напрямую к серверу получателя - почти никогда не используется, и MUA его не поддерживает. На персональных компьютерах его использование может привести к отклонению вашего сообщения (большая часть спама отправляется с IP-адресов зараженного домашнего пользователя).

app → [SMTP] → recipient MTA → caught by the spam filter
1

есть альтернатива без локального mta типа sendmail/postix.

пакет Debian ssmtp

информация из описания 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.

НТН

Стефан К.

1

Из справочной страницы mailx(1) , раздел DESCRIPTION , подраздел String Options :

   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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .