Легкий вихідний SMTP-сервер


46

Що ви використовуєте як легкий SMTP лише для вихідних електронних листів?

У мене запущено додаток, який надсилає електронні листи через SMTP, коли події відбуваються раз у раз, і мені не потрібен повнофункціональний сервер електронної пошти.

EDIT: Я більш ніж радий використовувати щось на зразок постфікса (і робити), якщо це найкращий вибір. Я думав, що може бути щось набагато простіше, що закінчується.


Я думаю, що цілком розумно дотримуватися щось на зразок exim та postfix. Їх не важко налаштувати, якщо ви робите прості речі.
Faheem Mitha

Яке ваше визначення "легкої ваги"? Наскільки великими ви очікуєте, що повідомлення будуть? Як часто буває "раз у раз"?
Майк Б

Відповіді:


22

Існує декілька варіантів мінімальних агентів передачі пошти (лише для ретрансляції) (MTA або "поштові сервери"), деякі з яких були згадані в інших відповідях:

Для будь-якого з тих, хто працює, десь потрібен повноцінний MTA, який надалі передаватиме ваші повідомлення (відомий як "поштовий концентратор"), і настійно рекомендується керувати цим поштовим центром. Погані речі ™ можуть статися інакше.


esmtp більше не підтримується.
Микола Котур

1
nullmailer має серйозну проблему відповідності SMTP: він нескінченно повторюється при наданні постійної помилки SMTP. Це може коштувати вам реальних грошей, якщо ви платите за пропускну здатність / транзитний bugs.debian.org/cgi-bin/bugreport.cgi?bug=329192
телент

@telent: не слід використовувати nullmailer в такому сценарії.

Дякую! Керівництво конфігурації в troubleshooters.com/linux/nullmailer відзначає проблему безпеки з nullmailer: він надає паролі в командному рядку, або принаймні використовується , щоб зробити це. Інші бесіди зазначають, що mstmp робить трохи менш зрозумілим, як запросити пошту, ніж nullmailer.
nealmcb

11

IMHO, найпростіший спосіб зробити це за допомогою постфіксу. Ви можете налаштувати це як легке вихідне реле за допомогою цих команд:

postconf -e relayhost=other.mailserver.com
postconf -e myorigin=my.domainname.com

Поки SMTP-сервер, вказаний в relayhost, не вимагає аутентифікації, дозволяє вам передати ретрансляцію або є дійсним пунктом призначення адреси одержувача, це буде працювати.

myoriginПараметр буде домен по замовчуванням ім'я , яке. Тож якщо ви надішлете пошту foo, вона перейде на foo@my.domainname.com. Пошта, що надсилається на панель користувача, буде надсилатися з bar@my.domainname.com.

Якщо вам потрібно автентифікуватись та хочете підтримувати TLS, також запустіть такі команди:

postconf -e smtp_tls_security_level=may
postconf -e smtp_sasl_auth_enable=yes
postconf -e smtp_sasl_password_maps=pcre:/etc/postfix/sasl_password_maps

Потім у /etc/postfix/sasl_password_mapsцього вмісту:

/./ username:password

Вся пошта буде надіслана вашому ретранслятору з вказаними ім'ям користувача та паролем.


Спробував ці налаштування, і я отримав помилку: "помилка: непідтримуваний тип словника: pcre"
valentt

1
Встановіть pcre та / або postfix-pcre та повторіть спробу.
Багамат

Я зрозумів це, також у цей час відсутні два пакети, перший - постфікс-pcre, як ви сказали, але інший був дивний - libsasl2-модулі. Мені спантеличено, як libsasl2 та libsasl2-module-db були встановлені, але libsasl2-модулі бракувало ... Тепер нарешті все працює. Чи можете ви, будь ласка, додати цю важливу інформацію до своєї відповіді?
валент

1
Для tls я також використовував: relayhost=other.mailserver.com:465then smtp_tls_wrappermode=yesі, smtp_tls_security_level=encryptале він намагається використовувати локального користувача як auth. Мені довелося якось переписати автора-аут.
tu-Reinstate Monica-dor duh

"Поки SMTP-сервер, вказаний у relayhost, не вимагає автентифікації" -> ок, але це рідко трапляється в наш час. Ваша пропозиція правильна, але здебільшого не має значення!
FarO

9

Якщо припустити, що вам потрібна програма, яку можна запустити з оболонки, як sendmail (8), можливо, MSMTP відповідатиме вашим потребам? Він може підключитися до віддаленого сервера SMTP і подати пошту, яку він отримує як stdin, подібно до sendmail.


Для цього я використовую MSMTP, чудово працює і конфігурація дуже проста.
dsp

Я так рада, що ти рекомендував це. Я шукав щось подібне вже досить давно. Конфігурація sendmail просто надто диференційована для моїх потреб.
ixtmixilix

4

ESMTP - це лише ретрансляційний сервер для передачі пошти, який може працювати для вашої програми.


1
Проект здається мертвим станом на 2009 рік
Шернандес

2

Ви можете знайти sSMTP, підходящий для ваших потреб. Прочитайте цю статтю про неї та її обмеження.

Чесно кажучи, я б не надто наголошував на встановленні postfix або exim, навіть якщо це стосується лише надсилання електронних листів.


1
+1 для ssmtp, -1 за непотрібний коментар у sendmail, а також рекомендувати використовувати повну mta, що набагато важче зробити правильно. погано налаштовані та підтримувані поштові сервери роблять життя адміністраторів пошти пекельним.

@hop: Я не погоджуюся з обох питань. sendmail жахливо. Також, exim, наприклад, є замовчуванням Debian, і він абсолютно простий у використанні. Можливо, так і постфікс, але я його ніколи не використовував.
Faheem Mitha


1

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

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

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

Якщо інших параметрів немає, додаток може генерувати повідомлення електронної пошти до стандартного виводу, яке ви можете обробити чимось на зразок:

listoftargets = "me@example.com jab@example.com" відлуння "Тестовий вміст" | $ listoftargets

У деяких системах вже існує мінімальний поштовий сервер для відправки.

Сем Т.


У мене є хмара серверів у хмарі, і я дуже хотів, щоб кожен мав власні вихідні SMTP-сервери, а не покладався на будь-що зовнішнє. Таким чином, якщо мій віддалений сервер SMTP не працює, це не впливає на кожен сервер.
FlappySocks

1) якщо дозволити PHP або Python виконати smtp частину, вам доведеться виконати всю роботу (чергування, керування помилками), якою керуватиме MTA. 2) наприкінці ви суперечите тому, що ви говорите на початку

Деякі програми Linux налаштовуються на очікування mailабо sendmailназви виконуваних файлів. Системні сповіщення. У цьому вся суть, чи не так? Ні для чого іншого немає обмежень.
Крейг Хікс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.