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

Недавно мне пришлось перенести серверы. На старом сервере у меня был список рассылки Mailman listserv, но поскольку Mailman не поддерживался на новом сервере, я написал PHP-скрипт для чтения сообщений из IMAP и повторной отправки через SMTP. Сценарий хрупок (моя вина) и сложен (не моя вина): мне приходится анализировать каждое сообщение, находить биты, которые я могу использовать (если оно состоит из нескольких частей, HTML или имеет вложения), а затем реконструировать сообщение. сообщение для SMTP, чтобы каждый участник, кроме отправителя, получил копию, а Reply-To был адресом списка рассылки. Дело в том, что я знаю, что необработанный источник сообщения и так в порядке. Мне просто нужно изменить/добавить несколько заголовков.

На серверах Windows вы можете настроить папку почтового ящика, в которой можно сохранять исходящие почтовые сообщения в необработанном виде. Есть что-нибудь подобное на *nix? Есть ли какой-либо другой метод, на который я должен обратить внимание?

Я знаю, что могу настроить адрес пересылки на сервере, но мне очень нравится поведение систем рассылки: отправители не получают копию своего сообщения, тема идентифицируется по метке списка, и нажатие «Ответить» отправляет сообщение обратно в список рассылки, а не исходному отправителю.


person Andrew    schedule 27.05.2010    source источник
comment
Почему бы вам просто не использовать другой список рассылки?   -  person prodigitalson    schedule 27.05.2010
comment
Я нахожусь на общем хосте, и мне вряд ли разрешат устанавливать новое программное обеспечение. Тем не менее, вы рекомендуете какое-либо программное обеспечение? Я думал, что Mailman был великолепен, хотя административный интерфейс был отстойным.   -  person Andrew    schedule 27.05.2010


Ответы (1)


Чтобы создать собственную систему серверов списков, вам необходимо сделать следующее:

  1. Настройте свой почтовый сервер так, чтобы он имел псевдоним, например [email protected], чтобы перенаправлять сообщения в черную дыру или /dev/null. или что-то в этом роде, в основном удаляя любые сообщения по прибытии без возврата сообщений электронной почты NDR (отчет о недоставке) отправителям. Это адрес, который ваш сценарий будет использовать в заголовке Кому: ваших сообщений электронной почты при отправке группе.

  2. Напишите раздел PHP-скрипта, который отправляет группе, таким образом, чтобы: (а) сначала вытащить всех ваших подписчиков из базы данных (или надежно сохраненного файла данных) в массив, (б) затем удалить адрес автора сообщения из массив, (c) затем, наконец, переберите всех оставшихся подписчиков в массиве пакетами примерно по 15 получателей и отправьте сообщение с помощью функции mail(), используя To: "Your List Name" <[email protected] и BCC: (слепая копия), чтобы получатели не видели, кто еще находится в списке.

Если вы хотите попробовать некоторые из существующих решений, почему бы не взглянуть на Majordomo. .

person richhallstoke    schedule 10.05.2011