Могу ли я настроить системную почту для использования внешнего SMTP-сервера?

72

Можно ли настроить системную почту на ящик linux для отправки через другой SMTP-сервер - возможно, даже с аутентификацией? Если да, то как мне это сделать?

Если неясно, приведу пример. Если я в командной строке и введите:

cat body.txt | mail -s "just a test" myfriend@hisdomain.com

возможно ли, чтобы это было отправлено через внешний SMTP-сервер, например, G-mail?

Я не ищу «способ отправки почты из gmail из командной строки», а скорее вариант настройки всей системы для использования определенного SMTP-сервера или, возможно, одной учетной записи на SMTP-сервере (возможно, переопределение адреса from) ,

УХО
источник
Это способ, которым обычно настраивали большинство машин. Вы имеете в виду какой-то конкретный MTA? Если нет (в том числе «что такое MTA?»), Какой дистрибутив вы используете?
Жиль "ТАК - прекрати быть злым"
Я на Ubuntu 10.04, нашел эту статью о настройке ssmtp, похоже, что он может работать. Можете ли вы подробнее рассказать о том, как настроено большинство машин?
cwd

Ответы:

71

Я нашел sSMTP очень простым в использовании.

В системах на основе Debian:

apt-get install ssmtp

Затем отредактируйте файл конфигурации в /etc/ssmtp/ssmtp.conf

Пример конфигурации для использования вашей электронной почты для отправки электронных писем:

# root is the person who gets all mail for userids < 1000
root=your@email.com

# Here is the gmail configuration (or change it to your private smtp server)
mailhub=smtp.gmail.com:587
AuthUser=your@gmail.com
AuthPass=yourGmailPass
UseTLS=YES
UseSTARTTLS=YES

Примечание . Убедитесь, что в вашей системе присутствует команда «mail». Пакет mailutils должен предоставить этот пакет в системах на основе Debian.

Обновление : есть люди (и сообщения об ошибках для разных дистрибутивов Linux), сообщающие, что sSMTP не будет принимать пароли с символом «пробел» или «#». Если sSMTP не работает для вас, это может иметь место.

Вангелис Тасулас
источник
2
в качестве примечания для других вам может потребоваться установить ssmtp, а затем mailutils. я думаю, что mailutils устанавливает команду mail и символические ссылки на ssmtp, чтобы вы могли использовать обычный mailсинтаксис :)
cwd
1
@cwd Только что протестирован на Ubuntu 13.04. Мне не нужно было устанавливать mailutilsпакет (и он не устанавливается автоматически). ssmtpработал из коробки.
Пиюсн
Я только что успешно использовал это в Debian на BeagleBone Black и мне сначала пришлось установить mailutils.
Дейв Нельсон,
На Kubuntu 14.04 пришлось устанавливать mailutils после ssmtp. Однако это сработало с первого раза.
MariusMatutiae
6
ssmtp НЕ проверяет сертификат SSL / TLS удаленного сервера в текущих выпусках debian, ubuntu и redhat, а также НЕ проверяет имя хоста сертификата. Это серьезная проблема, поскольку это фактически делает шифрование бесполезным, а ваш пароль передается в виде обычного текста, и любой может его прослушать. ssmtp не развивался с 2009 года. Поэтому, если вы заботитесь о безопасности учетной записи электронной почты, которую вы используете для исходящих писем ваших серверов, НЕ используйте ssmtp, а вместо этого постфикс (или что-то еще): unix.stackexchange.com/ а / 118101/72087
Зулакис
23

Для постфикса :

  • Добавьте IP для вашего внешнего почтового реле /etc/hostsи добавьте псевдоним mailrelay к нему.
  • Измените конфигурацию постфикса:

    relayhost = [mailrelay]
    smtp_sasl_auth_enable = yes
    smtp_sasl_password_maps = hash:/etc/postfix/smtp_auth
    smtp_sasl_security_options = noanonymous
    
  • редактировать /etc/postfix/smtp_auth

    mailrelay login:password
    
  • Преобразовать в хэш-формат

postmap /etc/postfix/smtp_auth

Не нужно говорить, что только root должен читать это ... chmod u=r,og=-

Nils
источник
10

mailx поддерживает настройку сервера smtp на CLI ...

echo "message" | mailx -S smtp=$smtphost:$smtpport -s "subject line" -v foo@baa.com

Ничего не нужно устанавливать при условии, что ваш SMTP-сервер позволяет отправлять неаутентифицированную почту.

Не существует единого ответа, который установил бы сервер smtp для всех битов программного обеспечения, которые могут быть у вас на вашем Linux-компьютере. Каждый почтовый клиент может настроить SMTP-сервер.

teknopaul
источник
Обязательно поставьте -S var=val перед своим получателем.
Бенуа Даффес
Что делать, если не авторизованная почта не разрешена? Я получил, что Клиент не был аутентифицирован для отправки анонимной почты во время ПОЧТЫ,
Миан Асбат Ахмад
7

Мой любимый клиент электронной почты ( GitHub ). Это действительно просто, никакой сложной конфигурации не требуется, никаких зависимостей не требуется. И вы можете указать аргумент smtp-server через командную строку, что означает, что он больше подходит для сценариев. Жаль только, что большинство дистрибутивов Linux не содержат этого инструмента, поэтому вам нужно скомпилировать его самостоятельно.

Цитаты из электронной почты projet на github

Q: Что такое «электронная почта»?

A: «электронная почта» - это программа, которую я разработал, которая будет отправлять электронную почту через командную строку на удаленные SMTP-серверы или использовать «sendmail» внутри, а также полностью взаимодействовать с GNUPG для шифрования и подписи вашей электронной почты, поэтому вы решите это сделать. .. Вы можете получить GNUPG по адресу: http://www.gnupg.org

Спасибо cygwin за то, что сообщили мне этот полезный почтовый клиент.

Скомпилируйте и установите

./configure
make
./install.sh --version 3.1.3 --prefix /usr --mandir /usr/share/man --sysconfdir /etc

Параметры командной строки электронной почты

$ email --help
Options information is as follows
email [options] recipient1,recipient2,...

    -h, -help module          Print this message or specify one of the below options
    -V, -verbose              Display mailing progress.
    -f, -from-addr            Senders mail address
    -n, -from-name            Senders name
    -b, -blank-mail           Allows you to send a blank email
    -e, -encrypt              Encrypt the e-mail for first recipient before sending
    -s, -subject subject      Subject of message
    -r, -smtp-server server   Specify a temporary SMTP server for sending
    -p, -smtp-port port       Specify the SMTP port to connect to
    -a, -attach file          Attach file and base64 encode
    -c, -conf-file file       Path to non-default configuration file
    -t, -check-config         Simply parse the email.conf file for errors
    -x, -timeout              Set socket timeout.
        -cc email,email,...   Copy recipients
        -bcc email,email,...  Blind Copy recipients
        -sign                 Sign the email with GPG
        -html                 Send message in HTML format ( Make your own HTML! )
        -tls                  Use TLS/SSL
    -m, -smtp-auth type       Set the SMTP AUTH type (plain or login)
    -u, -smtp-user username   Specify your username for SMTP AUTH
    -i, -smtp-pass password   Specify your password for SMTP AUTH
    -g, -gpg-pass             Specify your password for GPG
    -H, -header string        Add header (can be used multiple times)
        -high-priority        Send the email with high priority
        -no-encoding          Don't use UTF-8 encoding

Пример использования

Простая почта с указанным SMTP-сервером

echo "mail body" | email -subject "unix.stackexchange.com Q36982" -from-name LiuYan刘研 -from-addr liuyan@domain.com -smtp-server smtp.domain.com -smtp-port 25 cwd@your-domain.com your-friends@his-domain.com

HTML почта

echo "<h1>header</h1><p>paragraph</p>" | email -html -subject "unix.stackexchange.com Q36982 HTML mail" cwd@your-domain.com

Приложение (я)

echo "see the attachment(s)" | email -subject "This is my email.conf file" -attach /etc/email/email.conf -attach cwd@your-domain.com
LiuYan 刘 研
источник
2

Настройте локальный SMTP-сервер exim, следуя инструкциям на этой странице, но выберите вариант «почта отправлена ​​smarthost; нет локальной почты» на первом экране конфигурации exim. Это настроит SMTP-сервер на вашем ящике, который может получать почту от команд «mail» или «mailx», и перенаправит все сообщения на smarthost (сервер Gmail в вашем случае) для доставки.

Для отправки исходящей электронной почты через сервер Gmail вам необходимо настроить поддержку TLS для Exim , что не является тривиальным. В этом Howto даются некоторые пояснения, а здесь - ссылка с дополнительными пояснениями, относящимися к Gmail. Вы должны позволить себе несколько часов, чтобы это заработало. Я бы посоветовал начать с отправки электронной почты из вашего ящика на SMTP-сервер с поддержкой TLS, к которому у вас есть root-доступ, чтобы вы могли отлаживать конфигурацию TLS Exim с обеих сторон, прежде чем пытаться отправить через сервер Gmail. Поскольку связь зашифрована, вы не сможете использовать такие инструменты, как tcpdump, для анализа протокола на линии.

Эли Розенкруфт
источник
1

Если у вас есть внешний SMTP-сервер с вашим хостом, вы можете настроить SMTP на вашем хосте и отправлять электронные письма.

Конфигурация smtp в пошаговом режиме Linux может быть найдена здесь: http://kerneltalks.com/config/guide-smtp-configuration-linux/

Примеры команд электронной почты можно найти здесь: http://kerneltalks.com/commands/examples-send-email-through-terminal/

Shrikant
источник
Ответы должны содержать достаточно деталей, чтобы стоять самостоятельно. Наличие ссылок с более полной информацией - это хорошо, но по крайней мере часть связанного материала должна быть процитирована в ответе, чтобы он мог быть полезен после того, как ссылка сгнила.
user4556274