Облегченный исходящий SMTP-сервер


46

Что вы используете в качестве облегченного SMTP только для исходящей электронной почты?

Я запускаю приложение, которое отправляет электронные письма через SMTP, когда события происходят время от времени, и мне не нужен полнофункциональный почтовый сервер.

РЕДАКТИРОВАТЬ: Я более чем счастлив использовать что-то вроде postfix (и делать), если это лучший выбор. Я думал, что может быть что-то гораздо проще, что выходит за рамки.


Я думаю, что вполне разумно придерживаться чего-то вроде exim и postfix. Их нетрудно настроить, если вы делаете простые вещи.
Фахим Митха

Какое у вас определение "легкий"? Какого размера вы ожидаете сообщения? Как часто бывает "время от времени"?
Майк Б

Ответы:


22

Существует несколько вариантов минимальных агентов пересылки почты только для ретрансляции (MTA или «почтовые серверы»), некоторые из которых были упомянуты в других ответах:

Чтобы любой из них работал, вам нужен где-то полноценный MTA, который будет далее ретранслировать ваши сообщения (известный как «почтовый концентратор»), и настоятельно рекомендуется контролировать этот почтовый концентратор. Плохие вещи ™ могут случиться иначе.


esmtp больше не поддерживается.
Никола Котур

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

@telent: вы не должны использовать nullmailer в таком сценарии.

Спасибо! Руководство по настройке по адресу Troubleshooters.com/linux/nullmailer отмечает проблему безопасности с nullmailer: оно предоставляет пароли в командной строке или, по крайней мере, используется для этого. Другие разговоры отмечают, что mstmp делает менее понятным, как ставить почту в очередь, чем nullmailer.
nealmcb

11

ИМХО, самый простой способ сделать это с постфиксом. Вы можете настроить его как легкое исходящее реле с помощью следующих команд:

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

Пока SMTP-сервер, указанный в relayhost, не требует аутентификации, позволяет ретранслировать или является допустимым адресатом для адреса получателя, это будет работать.

myoriginПараметр будет домен по умолчанию имя , которое. Поэтому, если вы отправите письмо на foo, оно будет отправлено на адрес foo@my.domainname.com. Письмо, отправленное пользователем bar, будет отправлено с 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

Вся почта будет отправлена ​​на ваш relayhost с указанным именем пользователя и паролем.


Попробовал эти настройки и я получаю сообщение об ошибке: «ошибка: неподдерживаемый тип словаря: pcre»
valentt

1
Установите pcre и / или postfix-pcre и попробуйте снова.
Багамат

Я понял это, в то же время пропали два пакета: первый, как вы сказали, postfix-pcre, а другой - странный - libsasl2-modules. Я озадачен тем, как были установлены libsasl2 и libsasl2-modules-db, но libsasl2-modules отсутствует ... Теперь, наконец, все работает. Можете ли вы добавить эту важную информацию в свой ответ?
Валентин

1
Для ДУС, я использовал: relayhost=other.mailserver.com:465тогда smtp_tls_wrappermode=yesи , smtp_tls_security_level=encryptно он пытается использовать локальный пользователь , как авт. Я должен как-то переписать пользователя авторизации.
Tu-Reinstate Моника-Дор Дух

«До тех пор, пока SMTP-сервер, указанный в relayhost, не требует аутентификации» -> хорошо, но в настоящее время это случается редко. Ваше предложение верно, но в основном не имеет значения!
FarO

9

Предполагая, что вам нужна программа, которую вы можете запустить из оболочки, например sendmail (8), возможно, MSMTP подойдет вам? Он может подключаться к удаленному SMTP-серверу и отправлять почту, которую получает, как стандартный ввод, как sendmail.


Я использую MSMTP для этого, прекрасно работает, и конфигурация очень проста.
дсп

Я так рад, что ты рекомендовал это. Я долго искал что-то подобное. Конфигурация sendmail слишком дифференцирована для моих нужд.
ixtmixilix

4

ESMTP - это сервер пересылки почты только для ретрансляции, который может работать для вашего приложения.


1
Проект кажется мертвым по состоянию на 2009 год
Шернандес

2

Вы можете найти sSMTP подходящим для ваших нужд. Прочитайте эту статью об этом и его ограничениях.

Честно говоря, я бы не стал слишком беспокоиться об установке postfix или exim, даже если он предназначен только для отправки электронных писем.


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

@hop: я не согласен по обоим пунктам. sendmail это ужасно Кроме того, exim, например, используется по умолчанию в Debian и очень прост в использовании. Так же как и постфикс, но я никогда не использовал его.
Фахим Митха


1

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

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

Обычно, с PHP или Python, есть файл конфигурации с приложением для указания сервера «SMTP» (который может быть на вашем хосте или в другом месте вашей сети.) Если у вас уже есть почтовый сервер в сети, просто укажите Конфигурация для этого сервера.

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

listoftargets = "me@example.com jab@example.com" echo "Тестовое содержимое" | mail -s "Test Subject" $ listoftargets

В некоторых системах уже существует минимальный почтовый сервер только для отправки.

Сэм Т.


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

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

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