Пересылка электронной почты в список рассылки - PullRequest
0 голосов
/ 27 мая 2010

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

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

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

1 Ответ

0 голосов
/ 10 мая 2011

Для того, чтобы создать свою собственную серверную систему списков, вам нужно сделать следующее:

  1. Настройте свой почтовый сервер на использование псевдонима, например no-reply@yourdomain.com, для перенаправления сообщений на черная дыра или / dev / null или что-то в этом роде, в основном удаляя любые сообщения по прибытии, не возвращая отправителям сообщения электронной почты с отчетом о недоставке. Это адрес, который ваш скрипт будет использовать в заголовке To: ваших сообщений электронной почты при отправке в группу.

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

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

...