Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Na wstępie chciałbym się przywitać. Tak więc witam wszystkich i przystępuję do opisu problemu.
Tworząc MTA na bazie EXIMa natknąłem się na problemy, których nie potrafię rozwiązać a precyzyjniej nie potrafię skonfigurować.
Założenia są takie:
- serwer obsługuje wirtualne serwery
- konfiguracja szczególna dla serwerów i użytkowników czytana jest z bazy danych
- różne wirtuale mają różne numery IP
- użytkownicy mogą się logować tylko na IP przyznane ich wirtualce
- użytkownicy mają korzystać z prywatnych ustawień dla antywirusa i antyspamu
- użytkownicy korzystają z alaiasów, vacation itp
- poczta wychodząca powinna wychodzić przez IP przyznane wirtualce
Implementacja:
Co do założeń ogólnych wszystko działa. Problemy są dwa.
Problem 1.
Poczta wychodząca powinna wychodzić przez IP przyznane wirtualce
Chodzi o to, że nie mogę ustalić IP wychodzącego na podstawie adresu nadawcy. W przypadku aliasów kierujących w świat oraz vacation, adres nadawcy jest niezgodny z tym co mam w bazie, bo jest nim ktoś ze świata a nie ktoś z bazy. W przypadku użytkownika, który się zautoryzował, czyli jest w bazie, co prawda mam numer IP, ale gdy mail trafi do kolejki ta informacja znika i mail wychodzi mi z podstawowego interfejsu.
Problem 2.
Działanie ze specyficznymi ustawieniami użytkowników.
Użytkownicy mają prawo do definiowania akcji, która ma być podjęta w przypadku otrzymania maila ze spamem lub wirusem. Możliwych akcji jest kilka - nie sprawdzaj, nie przyjmuj jeśli spam, spam przyjmuj ale oznaczony, spam oznacz i dostarcz na inne konto. W przypadku spamu a precyzyjniej spamassassina dochodzi jeszcze sprawdzanie białych list, które są tworzone per user i ustawień poziomu, powyżej którego mail jest uznawany za spam. Oczywiście wszystko wczytuję sobie z bazy.
W tym przypadku problem jest z tym jak to zrobić optymalnie. Kolejność jest istotna a ja nie potrafię niestety skonfigurować tego tak, żeby było po ludzku, czyli
- wczytać konfigurację użytkownika
- zignorować kontrolę av / spam, jeśli użytkownik sobie nie życzy
- przeprowadzić kontrolę w innym wypadku i zapamiętać wynik
- sprawdzić co ma się stać z mailem i w zależności od potrzeb - deny lub warn a potem jeśli nie ma być odrzucany albo dostarczyć na adres odbiorcy albo na adres przez niego wskazany oczywiście wcześniej oznaczając do np. poprzez modyfikację subject.
Takie rozwiązanie jest chwilowo poza moim zasięgiem :/
Reszta hula jak ta lala. Bardzo jestem z EXIMA zadowolony.
No może z autoryzacji poprzez courierauth średnio, bo robi to "godzinę" ale tak wogóle to bardzo wszystko jest OK.
Ostatnio edytowany przez Mider (2010-07-29 16:19:05)
Offline
Time (s) | Query |
---|---|
0.00011 | SET CHARSET latin2 |
0.00006 | SET NAMES latin2 |
0.00090 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.217.246.148' WHERE u.id=1 |
0.00075 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.217.246.148', 1732948006) |
0.00065 | SELECT * FROM punbb_online WHERE logged<1732947706 |
0.00073 | SELECT topic_id FROM punbb_posts WHERE id=152967 |
0.00086 | SELECT id FROM punbb_posts WHERE topic_id=17310 ORDER BY posted |
0.00087 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=17310 AND t.moved_to IS NULL |
0.00006 | SELECT search_for, replace_with FROM punbb_censoring |
0.00073 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=17310 ORDER BY p.id LIMIT 0,25 |
0.00082 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=17310 |
Total query time: 0.00654 s |