Чи можна налаштувати системну пошту для використання зовнішнього SMTP-сервера?


72

Чи можна налаштувати системну пошту на вікні linux, що надсилатиметься через інший smtp-сервер - можливо, навіть з аутентифікацією? Якщо так, то як це зробити?

Якщо це незрозуміло, наведіть приклад. Якщо я в командному рядку і введіть:

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

чи можливо це надсилати через зовнішній SMTP-сервер, як-от G-mail?

Я не шукаю "спосіб надсилання пошти з gmail з командного рядка", а скоріше варіант налаштування всієї системи на використання конкретного SMTP-сервера або, можливо, одного облікового запису на SMTP-сервері (можливо, переосмислення адреси з адреси) .


Насправді це налаштування більшості машин. Чи маєте ви на увазі якийсь конкретний 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

Примітка . Переконайтесь, що команда "пошта" присутня у вашій системі. пакунок mailutils повинен надавати це в системах на базі Debian.

Оновлення : Є люди (і звіти про помилки для різних дистрибутивів Linux), які повідомляють, що sSMTP не прийме паролі з символом "пробіл" або "#". Якщо sSMTP не працює для вас, це може бути так.


2
як примітка до інших, можливо, доведеться встановити ssmtp, а потім поштові комунікації. я думаю, що mailutils налаштовує поштову команду та посилається на ssmtp, щоб ви могли використовувати звичайний mailсинтаксис :)
cwd

1
@cwd Щойно перевірена на Ubuntu 13.04. Мені не довелося встановлювати mailutilsпакет (і він не встановлюється автоматично). ssmtpвідпрацьовано поза коробкою.
Піджун

Я просто успішно використовував це в Debian на BeagleBone Black, і мені довелося спочатку встановити поштові комунікації.
Дейв Нельсон

На Kubuntu 14.04 довелося встановити mailutils після ssmtp. Однак це спрацювало з першого разу.
MariusMatutiae

6
ssmtp НЕ перевіряє сертифікат SSL / TLS віддаленого сервера в поточних випусках debian, ubuntu та redhat, а також НЕ перевіряє ім'я хоста сертифіката. Це головна проблема, оскільки це ефективно робить шифрування непотрібним, і ваш пароль передається так само, як звичайний текст, і кожен може нюхати його. ssmtp не має активної розробки з найменшого періоду 2009 року. Отже, якщо ви дбаєте про безпеку облікового запису електронної пошти, який ви використовуєте для своїх серверів вихідних електронних листів, НЕ використовуйте натомість ssmtp, а постфікс (чи щось інше): unix.stackexchange.com/ a / 118101/72087
Зулакіс

23

Для постфіксу :

  • Додайте IP для вашого зовнішнього поштового ретранслятора /etc/hostsта додайте до нього псевдонім-реле.
  • Змініть конфігурацію постфікса:

    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

Не потрібно говорити, що лише корінь повинен читати це ... chmod u=r,og=-


9

mailx підтримує налаштування smtp-сервера на CLI ...

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

Нічого не потрібно встановлювати за умови, що ваш сервер smtp дозволяє вам надсилати неавторизовану пошту.

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


Обов’язково поставте -S var=val перед одержувачем.
Бенуа Даффез

Що робити, якщо неавторизовану пошту заборонено? Я отримав, щоб Клієнт не отримав автентифікацію для надсилання анонімної пошти під час пошти,
Міан Асбат Ахмад


7

Мій улюблений - клієнт електронної пошти ( github ). Це дійсно просто, не потрібна складна конфігурація, не потрібні залежності. І ви можете вказати аргумент smtp-сервера через командний рядок, що означає, що він більше підходить для сценаріїв. Шкода лише, що більшість дистрибутивів Linux не містить цього інструменту, тому вам потрібно скласти його самостійно.

Цитати з електронної пошти projet на github

З: Що таке "електронна пошта"?

Відповідь: "електронна пошта" - це розроблена нами програма, яка надсилатиме електронну пошту за допомогою командного рядка на віддалені сервери 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

2

Налаштуйте локальний exim-сервер SMTP, дотримуючись вказівок на цій сторінці, але виберіть параметр "пошта, надіслана smarthost; немає локальної пошти" на першому екрані конфігурації Exim. Це встановить SMTP-сервер у вашому вікні, який може приймати пошту з команд "mail" або "mailx" і передаватиме всі повідомлення на smarthost (у вашому випадку сервер Gmail) для доставки.

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


1

Якщо у вас є зовнішнє з'єднання smtp-сервера з вашим хостом, ви можете налаштувати smtp на своєму хості та надсилати електронні листи.

Конфігурацію smtp у кроках Linux можна знайти тут: http://kerneltalks.com/config/guide-smtp-configuration-linux/

Приклади команд електронної пошти можна знайти тут: http://kerneltalks.com/commands/examples-send-email-through-terminal/


Відповіді повинні містити достатньо деталей, щоб стояти самостійно. Добре мати посилання з більш вичерпною інформацією, але принаймні частина пов'язаного матеріалу повинна бути вказана у відповіді, щоб вона могла бути корисною після встановлення гнилі посилань.
user4556274
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.