LINUX.ORG.RU
ФорумAdmin

Помогите с почтой

 , ,


0

1

Уже почти 2 недели подряд ***сь с почтой.
Решил использовать postfix-dovecot-mysql. Ну и «околопочтовые» сервисы типа postgrey, clamav... не суть важно.
Никогда не думал, что это будет НАСТОЛЬКО сложно ВО ВСЕХ аспектах. Несколько раз переустанавливал почтовые сервисы с чисткой конфигов, затем настраивал внимательно и с нуля, с гуглением относительно каждой опции, которую я изменяю.
В итоге, естественно, все «как-то» заработало. Но «как-то» меня не устраивает.

Теперь то, что меня не устраивает:
(по результатам /var/log/maillog)

1) warning: non-null host address bits in «127.0.0.1/8», perhaps you should use «127.0.0.0/8» instead
При этом, mynetworks упорно игнорируется. Postfix-у неважно что там за значения, пусть он даже закомментирован.
2) Постоянно лезут какие-то попытки отправить(получить?) сообщения с/(из?) несуществующего почтового ящика. Адрес почтового ящика говорит о том, что это были старые попытки что-то отправить. При этом postfixqueue пустой.
3) Совершенно бестолковые логи. В них какой-то массив байт, из которого можно вытащить разве что email адрес (отправителя? реципиента?)
4) До сих пор непонятно что с локальными пользователями. Алиас в /etc/aliases в виде строки
root: admin@moydomen.com
дает дополнительную ругань в лог
5) dovecot вообще темный лес, мало того, что я не знаю какого черта вообще советуют в нем делать «автосоздание» почтовых каталогов (не ящиков!), так еще и разрабы dovecot решили изменить механизм автосоздания из «plugin» на встроенный механизм mailbox Mboxname { auto = yes }, опять таки, с кучей непонятных опций.
6) Отдельная история с шифрованием, механизм которого для меня темный лес. Thunderbird ругается на неверные (самоподписные) сертификаты, ежели подключиться с STARTTLS (если выбрать просто «SSL/TLS», то вообще не работает).
7) Непонятно как работает авторизация для отправки почты (т.е. smtp). В конфиге postfix происходит выборка из БД исключительно пользователя, выборки пароля (или хотябы намека на неё) я не нашел

Вся проблема в том, что:
а) Оф. документация либо неполная (как в случае с dovecot)
б) либо сверхогромная (в случае с postfix). С тех. английским проблем не имею.
в) БОльшая часть руководств в интернете по настройке содержит тонну ошибок, любое действие не сопровождается/сопровождается очень скудно комментариями, а матчасть практически отсутствует. Более половины таких «гайдов» рассчитаны на использование всяких ненужных мне web интерфейсов, которые, отбросив все недостатки, будут меня только запутывать, мешать, т.к. вся суть в деталях.
г) Руководства, совершающие ликбез по конкретной почтовой системе/программе/сервису либо отсутствуют, либо повторяют толстенный мануал из оф. сайта

В общем, у меня бомбит, и я в истерике.

Теперь вопросы:

I) Что делать? «вдоль» и «забей на почту» не предлагать, она мне реально нужна. Разрабатывать свои проекты, размещать их на своем сервере, и при этом иметь почту на gmail - как минимум не солидно, и как максимум - быть похожим на бомжару
II) Подскажите руководство по postfix для чайников. Чтобы «от простого к сложному». А то смотрю на логи, смотрю на почтовый клиент, и тупо не понимаю что происходит.
III) Может есть какое-то готовое решение? Чтобы «все в одном»? Дырявые решения не устраивают.

P.S. Почтовый сервер, естественно, будет работать с расчетом на внешний мир. MX запись уже есть. Даже PTR запись у провайдера выпросил. Но, блин, postfix, видимо, писали какие-то упоротые разрабы с завышенной самооценкой. И да, я знаю, что у меня кривые руки, «не осилил», и т.д. Попробуйте осилить сами, а если уже - поделитесь советом. Пожалуйста.

★★★★★

Ответ на: комментарий от reprimand

ты вверх ногами все сделал и mail.bla - это не домен, а хост, читай днс, пока не поймешь
гугл и без них у меня почту на куче доменов принимает (spf правда есть, т.к. на него 2 секунды надо)

handbrake ★★★
()
Последнее исправление: handbrake (всего исправлений: 1)
Ответ на: комментарий от handbrake

Это зависит с какой стороны посмотреть - что есть домен(субдомен?), а что хост.
В общем, я погуглил немного, и пришел к выводу, что доп. велосипеды к почте приделывать надо
Других причин такой реакции от gmail я не вижу.

Хочу еще спросить - что именно вверх ногами? вроде все в порядке...

reprimand ★★★★★
() автор топика
Ответ на: комментарий от reprimand

Мне в своё время стало лень проектировать БД и я таки взял то что было в postfixadmin, веборду можно и не ставить (кстати подозреваю что она дырявая).
Собственно postfixadmin это sql-файл создающий базу данных, примеры конфигов для postfix прикручивающих к нему эту БД и похапэшная морда для управления данными в базе.
Структура базы адекватная, так-что можно и руками работать.

MrClon ★★★★★
()
Ответ на: комментарий от reprimand

Это зависит с какой стороны посмотреть - что есть домен(субдомен?), а что хост.

это на баш можно отнести :\

пошутил и хватит, иди доки читай. Начни (серьезно) с того, что такое hostname. Ты настраиваешь задом наперед, если что-то куда-то пройдет с этими настройками, то только по недоразумению. Велосипеды городят, когда основ не понимают. Все очень просто, но понимаешь ты эти вещи неправильно. RTF RFC

handbrake ★★★
()
Ответ на: комментарий от reprimand

пришел к выводу, что доп. велосипеды к почте приделывать надо

Это ж гугл, у них спаморезка по умолчанию включена на максимум, может быть все что угодно. Может быть гмейл не знает о новом домене и сует письма от него в спам. Я знаю как минимум несколько доменов без этих всех штук, гмейл от них нормально принимает почту

anonymous
()
Ответ на: комментарий от handbrake

это на баш можно отнести :\

это либо ты меня неправильно понял и я начал в ответ городить невесть что, либо я... либо мы оба.

Начни (серьезно) с того, что такое hostname.

я знаю что есть hostname. Правда, не в специфике ОС (если посмотреть man hostname в freebsd, то там некоторые вещи явно странные).

В любом случае, я уже читаю матчасть. Но если не трудно - ты всё-таки ткни меня носом в «что не так», хорошо?)

reprimand ★★★★★
() автор топика
Ответ на: комментарий от blind_oracle

Любые файлы в формате hash: нужно переиндексировать после изменений в них, через команду postmap

Тут уж от конкретной реализации дистрибутива зависит. У меня вот make вызывается в /etc/mail по service sendmail restart. То есть, хэш хэшем, но всё, что надо, make перестроит. В общем, в init-скрипт надо посмотреть...

AS ★★★★★
()
Ответ на: комментарий от AS

Make и прочее это уже нахлобучки дистрибов. На нижнем уровне оно всё равно запускает postmap/postalias

blind_oracle ★★★★★
()
Ответ на: комментарий от reprimand

Я тебе уже несколько раз сказал и даже четко описал как должно быть. Ты этого просто не видишь. :) Это нормально, когда в голове нет четкой картины. И нет никакой специфики ОС или чего-то, мы тут не слона вслепую ощупываем, интернет пилили ученые, тут все четко и красиво, а если некрасиво, значит не понял как оно на самом деле устроено.

некоторые вещи явно странные

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

Нет не подскажу, все уже подсказано. Перефразируя Шекли - Чтобы понять ответ, надо знать большую часть вопроса, читай.

handbrake ★★★
()
26 сентября 2015 г.
Ответ на: комментарий от blind_oracle

У меня был сервер с 3-4Тб писем (2-3 миллиона вроде) и maildir-ом - после миграции на mdbox хранилке стало сильно легче.

А как проводил миграцию? Про dsync я прочитал, но не совсем понял как это можно сделать без перерыва сервиса. Насколько я понял, у dovecot нужно изменить в конфигурации mail_location и запустить dsync. Но кажется что при этом неизбежно должна быть фаза когда фактическое хранилище и указанное в конфиге не совпадают? Или ты останавливал dovecot на период преобразования?

sin_a ★★★★★
()
Ответ на: комментарий от sin_a

Конкретно я делал с перерывом сервиса - сначала в онлайне синхронизировал все письма из maildir в mdbox, затем ночью еще раз синхронизировал, тормозил dovecot и досинхронизировал то, относительно немногое, что изменилось с последней синхронизации. Через stateful synchronization (doveadm sync -s ...) это дело быстро идет.

Если хочется без потери сервиса, то можно это делать для каждого ящика отдельно, если они берутся из LDAP или SQL какого-нибудь. Но тут нужно подготовить структуру БД или LDAP чтобы она возвращала полный путь до ящика. В итоге мы синхронизируем один ящик и переключаем в БД/LDAP его на новую директорию. Как видно выходит геморно)

blind_oracle ★★★★★
()

Я тебе советую не браться за всё сразу, а настраивать постепенно. Для начала настрой SMTP (postfix) на приём локальной почты. В принципе он из коробки обычно на это настроен. Научись отсылать локальную почту сам себе. Потом настрой на приём почты извне. Протестируй разными онлайн-сервисами (mxtoolbox, и тд), убедись, что почта доходит из gmail, yandex, посмотри, куда она складывается. Потом настрой отправление почты на внешние домены. Это дело сложное, с gmail-ом может вообще не выйти, но на yandex правильно настроенная почта должна приходить. И только потом настраивай imap (dovecot), всякие спамассасины.

А так да, это всё жуткое мессиво костылей с протоколами из 70-х. Ничего не поделаешь. Простого и понятного решения, которое поддерживает необходимый минимум (SMTP, IMAP, antispam, dkim), работает из коробки и проверяет все твои DNS-настройки на корректность пока не написали, приходится собирать из того, что есть.

Legioner ★★★★★
()
Ответ на: комментарий от blind_oracle

В общем с перерывом так с перерывом. Письма-то дойдут, а короткий перерыв всегда можно организовать. Про алгоритм понятно, спасибо.

У меня действительно sql, но mail_location в базе не указан. Собственно я вообще не знал что его можно указывать для каждого пользователя, думал это задаётся один раз в /etc/dovecot/conf.d/10-mail.conf. Хотя так если подумать то действительно, почему бы и нет...

sin_a ★★★★★
()
Ответ на: комментарий от Legioner

Тут это.., немного некропостинг идёт. У него скорее всего уже всё давно работает.

sin_a ★★★★★
()
Ответ на: комментарий от sin_a

mail_location можно указывать как абсолютный, так и относительный, в принципе.

Вот у меня на одном из серверов:

mail_home = /var/spool/maildir/%Ld/%Ln/
...
user_query = \
    SELECT 'sdbox:~/.sdbox' AS `userdb_mail` \
    FROM `mailbox` WHERE `username` = '%u'

blind_oracle ★★★★★
()
Ответ на: комментарий от blind_oracle

Завтра попробую на копии. Что-то туплю и не пойму, нужно ли что в обращении к sql менять. Вроде и нет, mail_location жёстко задан в конфиге и из базы берётся только домен и пользователь из которых он собирается. Но не пойму зачем в таблице ещё поле maildir есть, которое отличается от username слешом на конце и похоже нигде не используется. Взято из примера в документации и возможно там случайно оказалось.

sin_a ★★★★★
()
Ответ на: комментарий от blind_oracle

сначала в онлайне синхронизировал все письма из maildir в mdbox

Вот тут не совсем понятно. Формат dsync вроде такой:

dsync -u "$u@$d" mirror maildir:/path/"$d"/"$u"
При этом назначение берётся из конфига работающего dovecot, а задаём мы источник откуда будет идти копирование. То есть, нужно задать новое хранилище, перезапустить dovecot (при этом новое хранилище будет очевидно пустым) и после этого запустить конвертацию. Или ты делал между двумя разными серверами и позже переключил на новый?

Или можно не перезапускать dovecot при изменении конфигурации? Ещё не пробовал и пока там идёт тестовая конвертация, хочу дождаться. Но тогда странно что ему нужен работающий dovecot для проверки пользователя но конфигурацию берёт не текущую а из файла.

sin_a ★★★★★
()

если выбрать просто «SSL/TLS», то вообще не работает

SSL/TLS не нужно кроме случаев когда тебе обязательно поддерживать говноклиентов, не умеющих в STARTTLS.

https://wiki.archlinux.org/index.php/Postfix довольно адекватно было. Там в related есть и https://wiki.archlinux.org/index.php/Virtual_user_mail_system на более-менее твой случай. Ну и https://wiki.archlinux.org/index.php/Dovecot по dovecot.

EDIT: чёртовы некропостеры, полстраницы уже.

x3al ★★★★★
()
Последнее исправление: x3al (всего исправлений: 1)
Ответ на: комментарий от sin_a

Конфиг юзается только для запроса по имени юзера параметров его директории (uid, gid, путь к ней и т.п.).

Можно оверрайдить параметры из конфига, и синхронизировать из папки в папку напрямую:

dsync -f -o mail_location=sdbox:/var/spool/maildir/domain.ru/user/.sdbox mirror mdbox:/tmp/test
Сейчас проверил - работает, правда ругается на sieve почему-то и в конце падает в сегфолт :)

blind_oracle ★★★★★
()
Ответ на: комментарий от blind_oracle

Ему требуется запущенный dovecot как минимум чтобы проверять действительность клиента. Поскольку у меня тестовая копия то начал с того что его остановил. Но в результате dsync назвал каждого пользователя неудачником на чём и кончил с чувством глубокого удовлетворения. А хотя с ключом -f работает и без него, да.

Спасибо, да, с override рабтает. Нужно всё таки лучше знать их варвариянский ленгвидж... :( А sieve у меня пока впереди, как и компрессия.

И ещё такой вопрос. Бывала задача найти протухших пользователей. По хорошему нужно какую нибудь статистику на основе парсинга логов, но это будет когда нибудь потом и возможно уже не в этой жизни. Но при чтении почты некие файлы надо полагать модифицируются. Не подскажешь на какие можно смотреть? На dovecot.mailbox.log и storage/dovecot.map.index.log ?

sin_a ★★★★★
()
Ответ на: комментарий от sin_a

А sieve у меня пока впереди, как и компрессия.

В том то и прикол, что я спецательно сделал бэкап конфига из которого выжег все упоминания о sieve и указаел его dsync-у через параметр "-c". Да и в ящике, на котором я тестировал, никакого sieve никогда и в помине не было. А оно пыталось создать папку sieve в /tmp почему-то, а не в /tmp/test и ей не хватало прав...

И ещё такой вопрос. Бывала задача найти протухших пользователей.

Я для этих целей делал враппер поверх imap-login (кажись), который получал параметры юзера и делал апдейт в MySQL таблице типа «update blah set last_login = now() where username = '$USER'. Это проще и правильнее чем пытатья уследить на логами вручную.

Во, нашел, вот тут почитай: http://wiki2.dovecot.org/PostLoginScripting

Раздел Last Login Tracking.

blind_oracle ★★★★★
()
Ответ на: комментарий от blind_oracle

Когда я интересовался этим вопросом, то вроде то что находилось было на основе логов. Тогда мне показалось это разумным. Но дойдут ли руки по нормальному  — не знаю, а по времени изменения файлов думаю можно в первом приближении оценить. Главное знать что некий файл гарантированно модифицируется при чтении почты.

sin_a ★★★★★
()
Ответ на: комментарий от sin_a

А чего там делать-то? База у тебя уже есть, добавь в таблицу с юзерами столбец last_login и скрипт из трёх строчек возьми хотя-бы тот из примера:

#!/bin/sh
echo "UPDATE user SET last_login = now() WHERE username = '$USER'" | mysql postfixadmin
exec "$@"

Дел минут на 5.

blind_oracle ★★★★★
()
Ответ на: комментарий от blind_oracle

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

sin_a ★★★★★
()
Ответ на: комментарий от sin_a

В дефолтных логах ничего кроме логин-логаут нет, если дебаг включать то может ещё что-то появится, но я не пробовал.

blind_oracle ★★★★★
()
5 февраля 2016 г.
Ответ на: комментарий от blind_oracle

ругается на sieve почему-то и в конце падает в сегфолт :)

Похоже захардкодили sieve или в dovecot или в dsync. Начал включать sieve, но пока не заработало и не разобрался как диагностировать. Но просто после добавления в 90-sieve.conf

plugin {
  sieve = /var/spool/mail/%d/%n/dovecot.sieve
  sieve_dir = /var/spool/mail/%d/%n/sieve
}
уже стало копировать нормально. Видимо разработчики полагают что современная установка dovecot без сита не имеет смысла. И пожалуй я их понимаю.

sin_a ★★★★★
()

не нужно сразу делать комбайн - поэтапно с проверкой каждого из моментов, и все получится...

Belen ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.