Назад | Перейти на главную страницу

Отправить почту с другого сервера

У меня есть сервер, который отправлял электронную почту в течение последних 2 лет, используя функцию PHP mail (). Он работает под управлением Windows Server 2003. У меня есть еще один сервер в той же локальной сети, что и он, под управлением Ubuntu 10.10. Есть ли способ сказать, что PHP-скрипт, выполняемый для сброса электронного письма в папку SMTP Windows, вышел?

ОБНОВЛЕНИЕ: я оставлю вышеизложенное, поэтому другие ответы имеют смысл, но просто для некоторого пояснения вот что я пытался сделать. Выполните PHP-скрипт через cron на сервере Ubuntu, который будет читать базу данных и выгружать электронные письма в свою очередь SMTP через PHP mail (), который, в свою очередь, ретранслирует электронные письма на сервер Windows, который фактически отправит электронные письма.

Вы можете настроить окно Windows, чтобы разрешить ретрансляцию почты из окна ubuntu, а не выгружать файлы в папку smtp

Глядя вниз http://php.net/manual/en/function.mail.php (в разделе «Примечания») вы можете сделать mail() функция обращается напрямую к агенту пересылки почты, работающему на удаленном хосте (хотя, как ни странно, эта функция кажется уникальной для реализации Windows, судя по документации, поэтому, если вам когда-либо понадобится переместить сценарий на другую платформу, вам придется нести это в виду ...)

Попробуйте это в php.ini на хосте Windows:

[mail function]
SMTP = yourubuntumachine.domain.com; for Win32 only
smtp_port = 25

Конечно, вам понадобится какой-то MTA, работающий на хосте Ubuntu, но его достаточно просто установить (скажем) Exim (в exim4-daemon-light package) и настройте его на ретрансляцию почты только из вашего окна Windows.

Вот что я сделал, чтобы решить эту проблему, так как я не был ясен, а другие ответы были обратными (моя вина).

Я устанавливаю ssmtp в поле Ubuntu в соответствии с этим руководством: http://www.davidhurst.co.uk/2007/06/19/php-mail-and-ssmtp-on-debian-linux/ . Это включало редактирование файла ssmtp.conf и редактирование php.ini для использования другого пути sendmail_path.

Затем я настроил MailEnable, SMTP-сервер, работающий в Windows, чтобы разрешить входящие ретрансляционные соединения.

Я перезапустил Apache, и теперь, когда я отправляю почту PHP () из окна Ubuntu, они передаются на SMTP-сервер Windows и отправляются.