Как я могу ускорить отправку писем с моего сервера Mac Mini?
В настоящее время я использую Mac Mini Server под управлением OS X Server. На сервере размещено несколько приложений Ruby on Rails с использованием Phusion Passenger, где два из них используют базу данных PostgreSQL. Одно из этих приложений имеет базу данных списков рассылки, которая использует ActionMailer для отправки электронных писем. На момент написания этой статьи приложение отправит 224 электронных письма, когда мы рассылаем рассылку.
Мы использовали адрес электронной почты GoDaddy в конфигурации SMTP. Письма заняли всего пять минут. Однако GoDaddy позволяет отправлять только 250 электронных писем в день. Они также позволяют вам приобретать реле 50 одновременно с минимальным трехмесячным сроком. Мы не были уверены, насколько хорошо это будет работать для нас с ростом нашего списка рассылки. При таком росте мы могли бы добавить 50 человек в список рассылки раньше, чем за три месяца, за которые мы уже заплатили. Я чувствовал, что мы должны посетить включение Почтового сервера на нашем Mac Mini Server.
Получив ответы на некоторые вопросы от Apple, я смог настроить почтовый сервер, на котором я могу отправлять и получать электронные письма. Однако когда я отправляю те же электронные письма, это занимает 30 минут вместо пяти. Документация для OS X Server по-прежнему содержит старую информацию от Lion Server, содержащую ссылки на средства администрирования сервера, которые больше не применяются к OS X Server.
Я надеялся, что время для отправки электронной почты может быть одинаковым, поскольку база данных приложения Rails и почтовый сервер находятся на одной машине. Однако в целом я понимаю, что в некоторых случаях могут быть некоторые разногласия с использованием тех же ресурсов. Есть ли способ ускорить отправку электронных писем? К сожалению, средства администрирования сервера не были предоставлены для OS X Server. Документация для OS X Server по большей части бесполезна, поскольку в них упоминаются средства администрирования сервера, которых больше не существует.
Любая помощь будет оценена.
ОБНОВЛЕНИЕ 15.03.2013 10:15 CST
Примечание: я новичок в работе с почтовыми серверами. Исправление о времени. Когда я проверил /var/log/mail.log, я увидел, что общее время обработки составляет около 41 минуты, а не 30. Когда я проверял production.log в своем приложении Rails, я наблюдал, как каждое электронное письмо отправлялось успешно. Почтовый журнал подтвердил, что они отправлялись по одному за раз.
Вот записи в журнале для одного из писем с замаскированными данными. Я также включил последний отчет журнала, когда предыдущее письмо было успешно отправлено.
Mar 14 11:06:50 hostname.domain1.com postfix/qmgr[45322]: 4B2C5603D25: removed
Mar 14 11:06:59 hostname.domain1.com postfix/smtpd[99464]: sacl_check: mbr_user_name_to_uuid(emailuser@emaildomain.com) failed: No such file or directory
Mar 14 11:06:59 hostname.domain1.com postfix/smtpd[99464]: sacl_check: mbr_user_name_to_uuid(@emaildomain.com) failed: No such file or directory
Mar 14 11:06:59 hostname.domain1.com postfix/smtpd[99464]: 28899603D28: client=hostname.domain1.com[208.52.189.83], sasl_method=PLAIN, sasl_username=iosusername
Mar 14 11:06:59 hostname.domain1.com postfix/cleanup[99468]: 28899603D28: message-id=<5141f599b105_17b1c3fc6cdc290d811372e@hostname.domain1.com.mail>
Mar 14 11:06:59 hostname.domain1.com postfix/qmgr[45322]: 28899603D28: from=<emailsender@senddomain.com>, size=6545, nrcpt=1 (queue active)
Mar 14 11:06:59 hostname.domain1.com postfix/smtpd[99464]: disconnect from hostname.domain1.com[208.52.189.83]
Mar 14 11:06:59 hostname.domain1.com postfix/smtpd[97748]: connect from localhost[127.0.0.1]
Mar 14 11:06:59 hostname.domain1.com postfix/smtpd[97748]: 6F4DD603D2F: client=localhost[127.0.0.1]
Mar 14 11:06:59 hostname.domain1.com postfix/cleanup[99478]: sacl_check: mbr_user_name_to_uuid(emailuser@emaildomain.com) failed: No such file or directory
Mar 14 11:06:59 hostname.domain1.com postfix/cleanup[99478]: sacl_check: mbr_user_name_to_uuid(@emaildomain.com) failed: No such file or directory
Mar 14 11:06:59 hostname.domain1.com postfix/cleanup[99478]: 6F4DD603D2F: message-id=<5141f599b105_17b1c3fc6cdc290d811372e@hostname.domain1.com.mail>
Mar 14 11:06:59 hostname.domain1.com postfix/smtpd[97748]: disconnect from localhost[127.0.0.1]
Mar 14 11:06:59 hostname.domain1.com postfix/qmgr[45322]: 6F4DD603D2F: from=<emailsender@senddomain.com>, size=7038, nrcpt=1 (queue active)
Mar 14 11:06:59 hostname.domain1.com postfix/smtp[99473]: 28899603D28: to=<emailuser@emaildomain.com>, relay=127.0.0.1[127.0.0.1]:10024, delay=0.3, delays=0.01/0/0/0.29, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 6F4DD603D2F)
Mar 14 11:06:59 hostname.domain1.com postfix/qmgr[45322]: 28899603D28: removed
Mar 14 11:07:00 hostname.domain1.com postfix/smtp[97741]: 6F4DD603D2F: to=<emailuser@emaildomain.com>, relay=mx-eu.mail.am0.yahoodns.net[77.238.177.9]:25, delay=1.1, delays=0/0/0.34/0.79, dsn=2.0.0, status=sent (250 ok dirdel)
Mar 14 11:07:00 hostname.domain1.com postfix/qmgr[45322]: 6F4DD603D2F: removed
ОБНОВЛЕНИЕ 15.03.2013 16:11 CST
Я продолжаю проверять вещи. Я решил отправить 5 электронных писем, используя то же программное обеспечение, что у меня были проблемы с временем. Они по-прежнему отправляются медленнее, чем при использовании учетной записи электронной почты GoDaddy. Я решил взглянуть на сообщение sacl_check, где он не нашел файл или каталог. Это сообщение появляется для каждого письма, которое я проверял. Я прочитал эту ссылку ниже, которая обсуждала это. В одном из комментариев упоминается, что некоторые настройки необходимо выполнить в файле /etc/postfix/main.cf. У меня есть настройки электронной почты только для локальных сетей. Другой вариант был куда-то переслать. Служба поддержки Apple Enterprise посоветовала мне настроить его таким образом, поскольку он будет использоваться ActionMailer только в моих приложениях на Rails для отправки электронных писем. Письма, которые я создал, не будут получать письма. Я не изменил /etc/postfix/main.cf. Я не уверен, какие модификации мне нужно сделать. Там никогда не будет локальных пользователей как таковых, чтобы проверить.
https://discussions.apple.com/thread/3241121?start=0&tstart=0
2 ответа
Большинство "скоростных" проблем с электронной почтой сводятся к нескольким вещам:
- фильтрация. Если вы используете spamassassin или какой-либо другой фильтр, попробуйте временно отключить его, чтобы увидеть, не ускоряется ли он.
- Проблемы с DNS. Убедитесь, что у вас нет рекурсивных имен или чего-то глупого. Убедитесь, что все разрешается правильно как внутри сети, так и за ее пределами.
- проверьте почтовые петли. Обычно ваш MTA сообщит вам это в журналах MTA.
Вам нужно будет устранить неполадки, чтобы увидеть узкое место. Во-первых, где накапливаются сообщения: требуется ли 30 минут ActionMailer для передачи сообщений в postscript (MTA, используемый OS X Server), 30 минут для postscript, чтобы начать отправку последних сообщений, или 30 минут для postscript закончить отправку последнего из сообщений? Это даст вам хоть какую-то идею, где искать замедление.
Есть несколько конкретных вещей, на которые следует обратить внимание при отслеживании подобных проблем. Сначала проверьте /var/log/mail.log, чтобы увидеть, как сообщения обрабатываются постфиксом. Вам придется проделать некоторую работу, чтобы восстановить то, что случилось с каждым сообщением, найти записи журнала, относящиеся к нему, как оно обрабатывается различными частями postfix, и выяснить, что с ним произошло, где он проводит время между получением и получением отправлено к месту назначения.
Во-вторых, беги sudo postqueue -p
показать все сообщения, которые постфикс имеет в своей очереди на данный момент, вместе с (если необходимо) тем, что произошло, когда он пытался отправить сообщение (примечание: теперь ваш сервер будет пытаться передавать сообщения на несколько различных серверов назначения, некоторые из них будут иметь задержки, ошибки и т. д.; для некоторых сообщений вполне нормально застрять на несколько минут, часов или дней, ожидая, пока что-то прояснится на другом конце).
На ум приходит одна конкретная вещь: убедитесь, что сервер способен быстро разрешать DNS-имена. Если при поиске происходит сбой (и сообщения застряли, когда он пытается что-то найти), это может привести к значительным задержкам в системе.