Как встроить php-код на сервер ретрансляции SMTP

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

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

Я безуспешно исследовал, как встроить PHP-код в SMTP-соединение, как в этом потоке.

  1. CMS или веб-сайт входит в smtp.anydomainxxyy.com, чтобы отправить электронное письмо
  2. During the sending I need to capture the message id, the sender email, add a tag somewhere for further tracking and write that to a database. Also I keep track about the number of messages sent
    1. Additionaly, during the sending I need to check if there are messages left to send, if no messages left, deny sending.
    2. Если есть доступные сообщения, продолжите отправку.
    3. Позже с захваченным идентификатором сообщения я проверяю статус доставки по базе данных exim.

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

  1. Пользователь подключается к dummysmtp.domainxxyy.com (подключается, поэтому скрипт позволяет сказать «smtp.php»)
  2. скрипт smtp.php проверяет учетные данные, добавляет 1 сообщение в счетчик почты, подсчитывает, остались ли сообщения доступными, и, если ДА, подключается к smtp.domainxxyy.com (конечный почтовый сервер), и электронная почта отправляется.

Я был бы очень признателен за любую помощь, мне просто нужно понять, как настроить мой exim-сервер с помощью php или создать свой собственный фиктивный smtp-сервер, чтобы я мог создать эту систему отслеживания, большое спасибо.


person Daniel lm    schedule 11.04.2017    source источник
comment
я не понимаю, как большая часть этого была бы возможна с php, это просто не тот язык для него   -  person    schedule 12.04.2017
comment
Я думал о том же, но как exim записывает информацию в базу данных? Я видел, что exim использует свой собственный язык программирования, и я могу отслеживать, какие сообщения отправляются от внешних клиентов из exim db, но было бы круто, например, выполнить php-скрипт, как только пользователь отправит сообщение, не так ли? думаете это возможно? как sendpulse или sendinblu работают с системой smtp relay?   -  person Daniel lm    schedule 12.04.2017
comment
все это выполнимо, но используйте правильный язык (языки)   -  person    schedule 12.04.2017


Ответы (1)


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

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

person Synchro    schedule 11.04.2017