Mailx отправляет почту с использованием SMTP-ретранслятора или напрямую подключается к целевому SMTP-серверу?

133475
Rohit Banga

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

mailx person@x.com 

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

26

4 ответа на вопрос

28
ericzma

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

Обратите внимание, что это зависит от heirloom-mailx, который не является mailx по умолчанию. Scott 12 лет назад 0
@ Скотт: Да. Но зависит от дистрибутива Linux. В некоторых системах по умолчанию используется не семейная реликвия (например, Ubuntu: http://fclose.com/b/linux/1411/sending-email-from-mailx-command-in-linux-using-gmails-smtp/comment-page -3 / # comment-487. Кажется, есть 3 версии mailx). На некоторых других, таких как Fedora, OpenSUSE, по умолчанию используется «богатая функция» «heirloom-mailx». ericzma 12 лет назад 0
@ericzma Полагаю, heirloom-mailx - лучший / heirloom - единственный mailx, который может это сделать (указав с сервера smtp и из командной строки)? Он хорошо работает в Debian, хотя по умолчанию не установлен. В Debian mailx ссылается на / etc / alternatives / mailx, который ссылается на / usr / bin / bsd-mailx После установки heirloom-mailx на debian, / etc / alternatives / mailx ссылается на / usr / bin / heirloom-mailx и работает хорошо barlop 10 лет назад 0
@barlop Ваш вывод соответствует моему: heirloom-mailx работает, а bsd-mailx - нет. Пока не известно о других рабочих реализациях. ericzma 10 лет назад 0
CentOS 6.7 использует семейную реликвию mailx 12.4 Joshua Grigonis 8 лет назад 0
Две ссылки - это одна и та же ссылка. Возможно, вы хотели предложить [этот] (https://www.systutorials.com/5167/sending-email-using-mailx-in-linux-through-internal-smtp/), где рекомендуемый сервер smtp - `smtp. ust.hk`. Я не знаю, где вы взяли `smtp.server.com`: это настоящий сервер или простой пример (поддельный сервер)? Пинг возвращает неизвестного хоста. Asarluhi 6 лет назад 0
@ Asarluhi Да. Спасибо за указание на это. `Smtp.server.com` (только что измененный на` smtp.example.com`) является лишь примером. ericzma 6 лет назад 0
20
grawity

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

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

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

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

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

mailx → [/ usr / bin / sendmail] → локальная очередь MTA → [SMTP] → MTA получателя → почтовый ящик получателя
mailx → [/ usr / bin / sendmail] → локальная очередь MTA → [SMTP] → Gmail или ISP / рабочие серверы → [SMTP] → получатель MTA → почтовый ящик получателя

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

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

приложение → [SMTP] → Gmail или ISP / рабочие серверы → [SMTP] → получатель MTA → почтовый ящик получателя

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

приложение → [SMTP] → MTA получателя → перехвачено фильтром спама
как узнать мой MTA на linux? Rohit Banga 14 лет назад 1
почему Outlook должен отправлять через SMTP-сервер реле? Если я отправляю письмо на iamrohitbanga@gmail.com, то оно должно напрямую связаться с почтовым сервером для gmail, который является почтовым сервером назначения, а не сервером ретрансляции? правильно или неправильно? Rohit Banga 14 лет назад 0
почему вы используете Gmail или ISP / рабочие серверы вместе? Предположим, что я отправляю с a@b.com на c@d.com, если последовательность не будет app-> b-> d-> почтовый ящик получателя. Rohit Banga 14 лет назад 0
не понял третий метод. когда я отправляю с использованием mailx iamrohitbanga@gmail.com, никакая почта не попадает в мой почтовый ящик и не возвращается уведомление от демона почтовой программы. почему мое сообщение исчезло? Однако для почтового сервера моей организации я получаю сообщение о том, что почта не была доставлена, поскольку имя не может быть разрешено. Почему это так? Я помню, что я использовал mailx для отправки сообщений таким способом в другой системе. Есть проблема с конфигурацией? Rohit Banga 14 лет назад 0
@iamrohitbanga 1) Проверьте список установленных пакетов. (Не все дистрибутивы поставляются с MTA по умолчанию.) grawity 14 лет назад 1
@iamrohitbanga 2) Я уже ответил на это. Outlook часто используется на персональном компьютере дома, и многие почтовые серверы отклоняют сообщения, полученные с адресов домашних пользователей (из-за высокой частоты нежелательных сообщений от них). Вот почему ретрансляция через корпоративный сервер необходима. grawity 14 лет назад 1
@iamrohitbanga 3) "или" означает "любой из", а не "оба". Те, кто использует Gmail в качестве своей основной почтовой учетной записи, отправляют почту через серверы Gmail. Те, у кого есть почтовый ящик у интернет-провайдера, используют серверы своего провайдера. grawity 14 лет назад 1
rpm -qa \ * post \ * сообщает мне, что postfix-2.5.1-28.1 установлен. Rohit Banga 14 лет назад 0
@iamrohitbanga 4) Это потому, что `mailx` ** не использует **« третий метод ». Он использует MTA, как описано в верхней части моего ответа. И еще раз, если вы не подключены к корпоративному Интернету, почта, отправленная напрямую с вашего ПК (без ретранслятора), с большой вероятностью будет отброшена. grawity 14 лет назад 1
Хорошо, когда Outlook настроен с использованием моей учетной записи Gmail. это передает сообщение через сервер Gmail. я понял. Rohit Banga 14 лет назад 0
куда исчезает моя почта? Кстати, этот сайт http://www.postfix.org/OVERVIEW.html оказался полезным. Rohit Banga 14 лет назад 0
Я помню, я отправил почту с использованием mailx в другой системе. Rohit Banga 14 лет назад 0
Есть ли какие-либо изменения в правилах брандмауэра, которые мешают мне или что-то еще? Rohit Banga 14 лет назад 0
@iamrohitbanga У этой «другой системы» был правильно настроенный MTA. Это включает в себя открытие порта 25 / tcp для входящих соединений (в противном случае вы не будете получать входящую почту). grawity 14 лет назад 1
Я отправляю письмо по адресу x@gmail.com из моей системы. это также означает, что демон почтовой программы отправляет сообщение о сброшенном сообщении на мой компьютер, который не прослушивает порт 25. Rohit Banga 14 лет назад 0
но эта другая система доставляла почту на мою учетную запись gmail. На самом деле у меня была небольшая программа для резервного копирования всех моих важных данных в сжатом формате на мою учетную запись gmail. все отправлено с использованием mailx. сейчас mailx просто не доставляет мою почту. как я могу найти проблему. Rohit Banga 14 лет назад 0
ОК, может быть мой MTA, который postfix не пересылает почту на соответствующий сервер ретрансляции. теперь я понимаю. Я постараюсь увидеть конфигурацию постфикса. Большое спасибо. Rohit Banga 14 лет назад 0
Можем ли мы использовать mailx с нашего сервера, составить тело, прикрепить файлы, но затем подключиться к удаленному серверу Sendmail только для «отправки», но без SMTP? Мы попали в белый список на удаленном сервере Sendmail, но мы хотим составить письмо на нашей стороне. PKHunter 6 лет назад 0
@PKHunter: Конечно, было бы легко написать скрипт оболочки с `ssh mymailserver / usr / sbin / sendmail`. Большинство современных клиентов mail / mailx позволяют вам указать собственный путь к инструменту sendmail; укажите на сценарий оболочки. (Но почему вы не хотите использовать SMTP для внедрения сообщения? Это именно то, для чего предназначена служба «Отправка сообщений» на порту 587.) grawity 6 лет назад 1
@ спасибо за это. Мы не можем использовать сценарии оболочки. Мы должны использовать `mailx` на нашем сервере, создать тело с вложениями на нашем сервере через наше приложение Node, но, наконец, выполнить« отправку »с помощью сервера` SendMail`, который работает на удаленном IP без `smtp-auth` включен. Нужен ли нам mailx для этого вообще? В основном, если бы на удаленном сервере была включена SMTP с обычным auth (сервер, порт, имя пользователя, пароль), это решило бы все эти проблемы. Проблема, у нас нет имени пользователя / пароля на этой стороне. PKHunter 6 лет назад 0
Извините, я имел ввиду smtp-auth отключен. Нам нужно использовать sendmail без пароля. Удаленный сервер с Sendmail внес в белый список наши IP-адреса. PKHunter 6 лет назад 0
Если вы _are_ используете SMTP, то `SendMail` на удаленной стороне _не совершенно не имеет значения_. Это не то же самое, что локальный API / usr / lib / sendmail; это просто сервис, который обеспечивает SMTP. И если он обеспечивает SMTP, то вы используете один из десятка модулей Node, которые могут общаться по SMTP. Честно говоря, комментарии не связанной темы не место для этого ... grawity 6 лет назад 0
1
Ignacio Vazquez-Abrams

На mailx(1)странице руководства, в разделе ОПИСАНИЕ, подраздел Параметры строки :

 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. 
это немного смутило меня. Вы можете быть более сложным. Rohit Banga 14 лет назад 0
Э-э-э ... он использует `sendmail`, если эта опция не установлена. Ignacio Vazquez-Abrams 14 лет назад 0
1
StefanKaerst

есть альтернатива без локального 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. 

НТН

Стефан К.

Почти ... ssmtp - это MTA-подобный SMTP-клиент. Он ведет себя как / usr / bin / sendmail, но вместо непосредственного подключения к записи MX определенного домена он делегирует эту задачу SMTP-серверу, доступному (обычно через имя пользователя / пароль) машине, на которой запущен ssmtp. Это особенно полезно для тех систем, которые отправляют электронную почту с диапазонов IP-адресов с высоким уровнем спама, таких как динамические диапазоны IP-адресов ADSL, провальные провайдеры хостинга и т. Д. Andre de Miranda 10 лет назад 0

Похожие вопросы