Чи посилає mailx пошту за допомогою ретранслятора SMTP або він безпосередньо підключається до цільового SMTP-сервера?


30

Припустимо, я надсилаю пошту, використовуючи таку команду:

mailx person@x.com

потім поштовий сервіс mailx спочатку намагається знайти SMTP-сервер мого провайдера для передачі пошти чи він безпосередньо підключається. Чи це залежить від того, чи є у мого ПК загальнодоступна IP-адреса чи позаду NAT. Як перевірити налаштування mailx на своєму ПК? Як я можу перевірити це за допомогою tcpdump?

Відповіді:


29

Традиційно для Unix mailта похідних (та багатьох інших інструментів Unix) використовується /usr/bin/sendmailінтерфейс, що надається майже всіма агентами передачі пошти (MTA - postfix, exim, кур'єр та, звичайно, sendmail).

Тобто mailпрограма не розмовляє жодним мережевим протоколом - вона передає повідомлення sendmailчерез stdin та дозволяє обробляти фактичну доставку. (Це відноситься до тих часів, коли частина пошти використовувала SMTP, дехто використовував UUCP, дехто використовував BITNET ...)

Після того, як повідомлення перебуває в черзі sendmail, MTA обробляє фактичну передачу повідомлення через SMTP або щось інше. Залежно від конфігурації, він може або підключитися безпосередньо до MTA призначення, або передавати пошту через інший хост (також званий smarthost).

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

(Деякі MTA, такі як esmtpабо nullmailerстворені спеціально для домашніх користувачів, завжди використовують ретранслятор. Вони не підтримують отримання пошти та значно легші за ресурси.)

mailx → [/ usr / bin / sendmail] → локальна черга MTA → [SMTP] → MTA отримувача → папка вхідних
mailx → [/ usr / bin / sendmail] → локальна черга MTA → [SMTP] → Gmail або ISP / робочі сервери → [SMTP] → MTA одержувача → скринька одержувача

Інші програми, переважно зручні графічні клієнти, такі як Thunderbird або Outlook, завжди підключаються безпосередньо до ретрансляційного / smarthost SMTP-сервера (знову ж таки, як правило, Gmail або ISP / робочий SMTP-сервер), який передає повідомлення від вашого імені.

Рідна підтримка SMTP присутня в heirloom-mailxтрадиційній, але не в традиційній bsd-mailx.

додаток → [SMTP] → Gmail або ISP / робочі сервери → [SMTP] → MTA отримувача → вхідні

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

додаток → [SMTP] → MTA отримувача → спійманий фільтром спаму

1
як дізнатися мій MTA на Linux?
Rohit Banga

1
@iamrohitbanga 1) Перевірте список встановлених пакетів. (Не всі дистрибутиви за замовчуванням надходять з MTA.)
grawity

1
@iamrohitbanga 2) Я вже відповів на це. Outlook часто використовується на персональному комп’ютері вдома, і багато поштових серверів відхиляють повідомлення, отримані з адрес домашніх користувачів (через високу частоту спаму від них). Ось чому ретрансляція через корпоративний сервер потрібна.
grawity

1
@iamrohitbanga 3) "або" означає "або один з", а не "обидва". Ті, хто використовує Gmail як основний обліковий запис пошти, надсилають пошту через сервери Gmail. Ті, хто має поштову скриньку в своєму провайдері, використовують сервери свого провайдера.
grawity

1
@iamrohitbanga 4) Це тому, mailx що не використовується "третій метод". Він використовує MTA, як описано вгорі моєї відповіді. І ще раз, якщо ви не на корпоративному підключенні до Інтернету, пошта, що надсилається безпосередньо з вашого ПК (без ретрансляції), швидше за все, буде відкинута.
grawity

31

mailx може використовувати SMTP. Файл налаштування - ~ / .mailrc

Один із прикладів - поштовий контент за допомогою 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: Так. Але це залежить від дистрибутива Linux. У деяких системах за замовчуванням не є heirloom (наприклад, Ubuntu: fclose.com/b/linux/1411/… . Здається, є 3 версії mailx). У деяких інших, таких як Fedora, OpenSUSE, за замовчуванням є "особливість збагачена" "heirloom-mailx".
ericzma

@ericzma Я думаю, що heirloom-mailx найкращий / є heirloom єдиний mailx, який може це зробити (вказавши сервер і smtp в командному рядку)? Це добре працює на Debian, хоча він не встановлений за замовчуванням. На Debian mailx посилання на / etc / alternative / mailx, які посилаються на / usr / bin / bsd-mailx Після встановлення heirloom-mailx на debian, / etc / alternative / mailx посилання на / usr / bin / heirloom-mailx і працювали добре
барлоп

@barlop Ваш висновок відповідає моєму: heirloom-mailx працює, тоді як bsd-mailx не робить. Ще не в курсі про інші робочі реалізації.
ericzma

CentOS 6.7 використовує Heirloom mailx 12.4
Джошуа Григоніс

3

На 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.

це мене трохи збентежило. ви можете бути більш досконалим.
Рохіт Банга

Ух ... він використовує, sendmailякщо не встановлено цю опцію.
Ігнасіо Васкес-Абрамс

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
Майже ... ssmtp - клієнт, що нагадує MTA. Він поводиться як / usr / bin / sendmail, але замість того, щоб підключатися безпосередньо до MX-запису певного домену, він делегує це завдання на SMTP-сервер, доступний (як правило, через ім'я користувача / пароль) на машині, на якій працює ssmtp. Це особливо корисно для систем, що надсилають електронну пошту з IP-діапазонів високої кількості спаму, таких як ADSL-динамічні діапазони IP-адрес, хитрі хостинг-провайдери тощо.
Андре де Міранда,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.