Нужно ли настраивать почтовый сервер, прежде чем использовать mail
команду Linux?
решение1
Нет, вам не нужен почтовый сервер для отправки почты. Я больше всего знаком с Sendmail, и есть 3 классификации функциональности, которые реализуют электронную почту как услугу. MDA (агенты доставки почты) — это 1, MTA (агенты передачи почты) — это 2, а 3 — это MUA (агенты пользователя почты).
Терминология становится запутанной, но вам не требуется, чтобы MTA работал все время. MTA будет вызываться каждый раз, когда MUA ( mail
) захочет "отправить" почту.
При запуске mail
и указании адреса для отправки почты, [email protected]
почтовый клиент вызовет MTA ( /usr/bin/sendmail
), который затем запросит DNS для этого хоста/домена (example.com) и выяснит, какое значение назначено для его записи MX. MX означает Mail Exchanger.
Пример
dig
Чтобы увидеть это, можно использовать команду:
$ dig gnu.org mx
; <<>> DiG 9.7.4-P1-RedHat-9.7.4-2.P1.fc14 <<>> gnu.org mx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21053
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 2
;; QUESTION SECTION:
;gnu.org. IN MX
;; ANSWER SECTION:
gnu.org. 299 IN MX 10 eggs.gnu.org.
;; ADDITIONAL SECTION:
eggs.gnu.org. 299 IN A 208.118.235.92
eggs.gnu.org. 299 IN AAAA 2001:4830:134:3::10
;; Query time: 218 msec
;; SERVER: 192.168.1.8#53(192.168.1.8)
;; WHEN: Thu Oct 3 17:27:22 2013
;; MSG SIZE rcvd: 90
Поэтому клиент попытается подключиться к eggs.gnu.org через порт 25, чтобы доставить это электронное письмо.
DNS-сервер?
@puk задал следующий дополнительный вопрос:
Находится ли этот DNS на моем локальном компьютере?
На что я ответил:
@puk - это может быть так же, как и почтовый сервер, но обычно это не так. Посмотрите в свой /etc/resolv.conf
файл, а также, когда вы запустите dig
команду, вы увидите SERVER: ...
строку внизу. Это DNS-сервер, обслуживающий ваш запрос.
Пример
Мой /etc/resolv.conf
файл содержит следующее:
nameserver 192.168.1.8
И запросы, подобные этому, с использованием dig
:
$ dig gnu.org mx
Результат внизу:
;; Query time: 259 msec
;; SERVER: 192.168.1.8#53(192.168.1.8)
;; WHEN: Thu Oct 3 17:46:13 2013
;; MSG SIZE rcvd: 90
А для проницательного читателя, один мой вопрос, как это настраивается? Ответ - файл /etc/nsswitch.conf
. А конкретно эта строка:
hosts: files mdns4_minimal [NOTFOUND=return] dns
Это говорит, сначала используйте файлы ( /etc/hosts
), а затем mdns4_minimal
. Это многоадресный DNS. Это по сути кэш предыдущих поисков. Наконец, он использует , dns
который является IP-адресом nameserver
указанного в /etc/resolv.conf
файле.
решение2
Это действительно зависит от того, какую версию mail
вы используете.
Всем версиям необходим MTA для фактической доставки почты, но некоторые версии способны использовать SMTP для взаимодействия с удаленным MTA («smarthost», например, почтовый сервер вашего интернет-провайдера), а некоторые могут только передавать сообщение для /usr/sbin/sendmail
отправки почты через локальный MTA.
В последнем случае местный MTA может быть полноценным MTA, напримерОтправить письмоилиэксимилипостфикс. Или это может быть простой MTA, работающий только на отправку, напримернульмейлерилиssmtp. Или немного более сложный мини-MTA, напримерmsmtpкоторый также поддерживает постановку почты в очередь для отложенной доставки.
В мире свободного программного обеспечения и открытого исходного кода существует два основных варианта пакета mailx
(который предоставляет mail
команду): bsd-mailx
, и heirloom-mailx
. mail
Команда также доступна в GNU mailutils
.
bsd-mailxне поддерживает SMTP и может отправлять почту только перенаправляя ее на/usr/sbin/sendmail
реликвия-mailxможет передавать SMTP на смартхост, а также использовать традиционный метод «pipe-to-sendmail». Кстати,S-образный гвоздьвероятно, лучшая производная от heirloom-mailx — она все еще активно развивается и обновляется.
GNU mailutilsсодержит несколько инструментов, связанных с почтой, как для конечных пользователей, так и для системных администраторов, включая версию mail
и многое другое.
Итак, отвечая на ваш вопрос «Вам нужен почтовый сервер?». Да, в некотором роде. Он вам нужен, но, в зависимости от mail
установленной версии, вам, возможно, не придется устанавливать и настраивать его на своей системе.
На мой взгляд, вам лучше иметь хотя бы минимальный MTA, например msmtp
(или полноценный, например postfix
или exim
), чем полагаться исключительно на смартхост с , heirloom-mailx
потому что вам все равно нужно ставить почту в очередь для последующей доставки, когда ваше интернет-соединение отключено или ваш смартхост недоступен. С локальной очередью mail
и crond
и другие программы могут просто отправить и забыть любую почту. Без локальной очереди им придется как-то справляться с состоянием ошибки, если смартхост недоступен.