Неблокирование PHP+sSMTP

Обычно Вы никогда не собираетесь иметь "один" внешний IP: когда Вы регистрируетесь в достаточной пропускной способности для нескольких сотен людей, Вы собираетесь получить по крайней мере дюжину адресов. При запуске регистрации для вида пропускной способности, крупная школа потребовала бы, Вы собираетесь получить сотни или тысячи.

Я раньше работал младшим администратором в крупной школе состояния, и у нас было ужасное огромное количество адресов (4 / 16/19,/24 и неисчислимые / 27 и / 28). Конечно, мы говорим об огромной школе с огромной программой информатики и несколькими манерными.

Обычно общежития имели глобального дюйм/с для своей маршрутизации, но по большей части адреса межобщежития были в 10.0.0.0/8 блоке. Классы часто имели глобальные адреса: некоторые большие лекционные залы имели их собственные беспроводные подсети (снова в 10 блоках).

Одна из проблем с/16 глобального дюйм/с - то, что необходимо быть действительно осторожными с присваивающимся дюйм/с, и он вызывает некоторые нетривиальные проблемы DHCP в местах, где Вы позволяете DHCP. В некоторых более старых общежитиях мы присвоили глобальные адреса, и это вызвало невыразимые головные боли, особенно когда люди начали настраивать свои собственные подсети с беспроводными маршрутизаторами и дерьмом как этот. Намного намного легче присвоить 10 основанных локальных подсетей (также намного легче развернуть Ваш собственный WAP вместо того, чтобы пытаться препятствовать тому, чтобы студенты настроили ужасные конфликтующие.)

В эти дни I администраторов в довольно крупной компании: у нас есть/16, и мы едва используем его вообще, предпочитая соединять большую WAN на частных 10. адреса. Используя частное адресное пространство делает много вещей легче.

3
задан 17 May 2012 в 03:52
4 ответа

Хорошо, я разобрался! Используя команду script , мы можем написать оболочку:

#!/bin/sh
script -q -c "/usr/sbin/ssmtp $*" /dev/null
0
ответ дан 3 December 2019 в 05:15

Да, используйте один из нулевых рассылок , который поддерживает организацию очередей или полный MTA вместо ssmtp. Хотя вы можете написать оболочку для SSMTP, для изоляции от вызывающего процесса php потребуется fork и setsid.

3
ответ дан 3 December 2019 в 05:15

Вы можете использовать gearman или другие аналогичные методы, чтобы блокировать вещи асинхронно. См. http://www.phpclasses.org/blog/post/108-Distributing-PHP-processing-with-Gearman.html

1
ответ дан 3 December 2019 в 05:15

Это работает с конвейером sendmail. Вот пример того, как выглядят передаваемые по конвейеру данные

To: to@to.com
Subject: Your Subject Here
X-PHP-Originating-Script: 0:MailSender.class.php
MIME-Version: 1.0
Content-type: text/html; charset=iso-8859-1
From: First Last <noreply@cool.com>

BODY OF EMAIL GOES HERE

Сохраните этот сценарий как / usr / sbin / sendmail

#!/bin/bash
# sendmail wrapper for ssmtp to send email asynchronously

TMP=`mktemp`
stdin=$(cat)
echo "$stdin" > $TMP
body=`cat $TMP`

# Create the email and store in file
echo "ssmtp -t <<EOF " > $TMP
echo "$body" >> $TMP
echo "EOF" >> $TMP
echo "rm -f $TMP" >> $TMP

# Send the email
sh $TMP &
3
ответ дан 3 December 2019 в 05:15

Теги

Похожие вопросы