Как на самом деле отправляется почта, когда я использую команду Linux «mail»?

17

Какая учетная запись электронной почты используется для отправки электронной почты при использовании mailкоманды из терминала linux, как в:

echo "Body of email" | mail -s "Subject" abc@def.com

Если письма не отправляются, нужно ли указывать имя пользователя и пароль отправляющего адреса электронной почты? Во всех mailпрочитанных мной уроках ничего не говорится об адресе отправителя.

Изменить: Итак, если я получаю сообщение об ошибке «Почта на удаленные домены не поддерживается», означает ли это, что мой провайдер заблокировал отправку электронной почты? Есть ли способ обойти это? Благодарю.

user001
источник

Ответы:

12

Какая учетная запись электронной почты используется для отправки электронной почты при использовании команды mail из терминала linux, как в:

В конфигурациях по умолчанию это та же учетная запись, которую вы использовали для входа в систему. На вашем компьютере установлена ​​программа почтового сервера (MTA); обычно это Postfix или Exim4, иногда Sendmail или qmail.

Адрес электронной почты этой учетной записи - или , откуда можно получить полное доменное имя . Однако прямо сейчас вы не можете получать почту на эту учетную запись, так как MTA настроен для «только локальной почты» (как указано в сообщении об ошибке ниже) и не будет принимать сообщения извне.your-login@hostnameyour-login@fqdnhostname -f

Изменить: Итак, если я получаю сообщение об ошибке «Почта на удаленные домены не поддерживается», означает ли это, что мой провайдер заблокировал отправку электронной почты? Есть ли способ обойти это?

Нет; это сообщение об ошибке возвращается вашим собственным компьютером. Почтовый сервер настроен на передачу только локальной почты - от одного пользователя другому (чаще всего от демона cron в случае сбоя cronjob). Обычно эти сообщения идут к и считываемые с помощью , , или аналогичные программы. (IIRC, Thunderbird также мог импортировать локальные почтовые катушки.)/var/mail/loginmailmuttre-alpine

Нетрудно перенастроить почтовый сервер для отправки и получения почты на другие сайты; в зависимости от установленного MTA и дистрибутива Linux может быть достаточно даже одной команды: например, dpkg-reconfigure postfixесли система Debian с Postfix.

Тем не менее, я предполагаю, что вы используете это на персональном компьютере, поэтому было бы лучше вместо этого использовать внешнюю почтовую учетную запись - например, ваш адрес Gmail, если он у вас есть. Узнайте, какой MTA установлен (в Ubuntu / Debian, dpkg -S /usr/sbin/sendmailон вам скажет), а затем найдите " program-name relay gmail" для обучения.

В качестве альтернативы, установите MTA, специально предназначенный для ретрансляции; msmtpи esmtpэто хороший выбор и прост в настройке.

user1686
источник
Спасибо за помощь. Команда pastebin, которую вы предложили, в конечном итоге удовлетворила мои потребности. Я буду работать над настройкой smarthost для пересылки почты.
user001
4

Например, это имя учетной записи и имя хоста отправляющего пользователя root@myserver. Это не обязательно фактический почтовый ящик, который может получать почту извне.

Даниэль Бек
источник
2
@ user001 Это помогает?
Даниэль Бек
2
@ user001: В таких случаях вы можете взглянуть на pastebins , некоторые из которых легко использовать из командной строки. Например, curl -Fsprunge=\<- http://sprunge.us < myfile.
user1686
1
@ user001: у вас exim4работает демон? Есть ли в sudo mailqсписке сообщение? Вы проверили журналы отправляющего сервера ( /var/log/exim4/mainlog) и получателя (если это возможно)?
user1686
1
@ user001: Возможно, ваш интернет-провайдер блокирует соединение. Это особенно характерно для домашних подключений - все, что нужно для порта 25, просто сбрасывается, чтобы уменьшить огромное количество спама, посылаемого зараженными ПК. (Вы все еще можете настроить ретрансляцию , которая использует другой порт и аутентификацию SMTP.)
user1686
1
@ user001: ретрансляция происходит через другой почтовый сервер (иногда называемый «smarthost»). Администраторы вашей сети могут помочь с этим, если у академии есть собственный почтовый домен. Если нет, вы можете настроить свой сервер для отправки из вашего Gmail или аналогичного почтового ящика; учебники здесь .
user1686
4

Команда mail отправляет почту под текущей учетной записью, т.е. username @ domain; однако, как правило, интернет-провайдеры не позволяют пользователям запускать свои собственные почтовые серверы (блокируя соответствующие порты), чтобы избежать спама, и поэтому ваша электронная почта не отправляется.

Но проблема отправки также может быть связана с конфигурацией вашей машины.

Изменить: включение почты для отправки писем, например, из Gmail. Поместите следующую информацию в ваш файл ~ / .mailrc, который обеспечивает основную конфигурацию для почты. Однако убедитесь, что этот файл доступен только вам (используя chmod 600 ~ / .mailrc)

account gmail {
set smtp-use-starttls
set ssl-verify=ignore
set smtp=smtp.gmail.com:587
#set smtp-auth=login
set smtp-auth-user=name@gmail.com
set smtp-auth-password=pass
set from=name@gmail.com
}

В этом случае электронное письмо будет отправлено с «name@gmail.com».

Karolos
источник
@ user001: Вы хотите просто иметь возможность отправлять письма (например, из сценариев) или также получать их?
Каролос
Просто чтобы можно было отправить сообщение из скрипта. Благодарю.
user001
2
Обратите внимание, что этот mailrcсинтаксис специфичен для heirloom-mailx. Некоторые системы могут поставляться с GNU mailutilsили BSD mailx, обе из которых будут жаловаться на синтаксические ошибки. (Если это произойдет, я предлагаю установить heirloom-mailx- или даже лучше, muttили re-alpine.)
user1686