Автор Тема: popa3d  (Прочетена 2994 пъти)

Soulstealer

  • Напреднали
  • *****
  • Публикации: 170
    • Профил
popa3d
« Отговор #15 -: Aug 16, 2005, 14:56 »
Ами представям се и по двата начина. Това което виждам в /var/log/messages e
Примерен код
Aug 16 14:42:31 mailserver popa3d[31959]: Authentication failed for UNKNOWN USER

това е за всеки път, който се опитам да се authenticate-на...
Това ми е в params.h
Примерен код
#define AUTH_SHADOW                     1

а това в Makefile-a
Примерен код
LIBS += -lcrypt

някаква идея ? '<img'>
Активен

Your Soul is Mine!

  • Гост
popa3d
« Отговор #16 -: Aug 16, 2005, 15:40 »
VIRTUAL_ONLY беше ли "1" при компилацията?
защото ако е било, "AUTH_SHADOW" не мисля, че се взема под внимание (сега свалих popa3d и разгледах param.h).
А и останах с впечатление, че AUTH_SHADOW ползва директно /etc/shadow, т.е. трябва ти реално съществуващ юзер test.
Огледай директорията за пощата, там трябва да имаш две поддиректории - auth/ и mail/, виж в auth/ дали има нещо относно test, естествено в mail/ трябва да откриеш пощата му и ако те гложди какво си си написал - можеш да го прочетеш  '<img'>
Активен

Soulstealer

  • Напреднали
  • *****
  • Публикации: 170
    • Профил
popa3d
« Отговор #17 -: Aug 16, 2005, 16:41 »
Ето това ми е целия params.h
Примерен код
#ifndef _POP_PARAMS_H
#define _POP_PARAMS_H
#define POP_SERVER                      "popa3d"
#define POP_STANDALONE                  0
#if POP_STANDALONE
#define POP_OPTIONS                     1
#define DAEMON_ADDR                     "0.0.0.0"       /* INADDR_ANY */
#define DAEMON_PORT                     110
#define DAEMON_LIBWRAP                  0
#if DAEMON_LIBWRAP
#define DAEMON_LIBWRAP_IDENT            POP_SERVER
#endif
#define MAX_SESSIONS                    500
#define MAX_SESSIONS_PER_SOURCE         50
#define MAX_BACKLOG                     5
#define MIN_DELAY                       10
#endif
#define POP_VIRTUAL                     1
#if POP_VIRTUAL
#define VIRTUAL_HOME_PATH               "/home/virtual/popa3d/"
#define VIRTUAL_AUTH_PATH               "auth"
#define VIRTUAL_SPOOL_PATH              "mail"
#define VIRTUAL_ONLY                    1
#else
#define VIRTUAL_ONLY                    0
#endif
#define POP_USER                        POP_SERVER
#define POP_CHROOT                      "/var/empty"
#define POP_TIMEOUT                     (10 * 60)
#define POP_SUPPORT_LAST                1
#define MAX_MAILBOX_MESSAGES            2097152
#define MAX_MAILBOX_OPEN_BYTES          2147483647
#define MAX_MAILBOX_WORK_BYTES          2147483647
#if !VIRTUAL_ONLY
#define AUTH_PASSWD                     0
#define AUTH_SHADOW                     1
#define AUTH_PAM                        0
#define AUTH_PAM_USERPASS               0
#define USE_LIBPAM_USERPASS             0
#if AUTH_PAM || AUTH_PAM_USERPASS
#define AUTH_PAM_SERVICE                POP_SERVER
#endif
#endif
#if POP_VIRTUAL || AUTH_PASSWD || AUTH_SHADOW
#define AUTH_DUMMY_SALT                 "xx"
#endif
#define AUTH_FAILED_MESSAGE             "Authentication failed (bad password?)"
#if !VIRTUAL_ONLY
#define MAIL_SPOOL_PATH                 "/var/mail"
#ifndef MAIL_SPOOL_PATH
#define HOME_MAILBOX_NAME               "Mailbox"
#endif
#endif
#define LOCK_FCNTL                      1
#define LOCK_FLOCK                      0
#define SYSLOG_IDENT                    POP_SERVER
#define SYSLOG_OPTIONS                  LOG_PID
#define SYSLOG_FACILITY                 LOG_DAEMON
#define SYSLOG_PRI_LO                   LOG_INFO
#define SYSLOG_PRI_HI                   LOG_NOTICE
#define SYSLOG_PRI_ERROR                LOG_CRIT
#define POP_BUFFER_SIZE                 0x80
#define AUTH_BUFFER_SIZE                (2 * POP_BUFFER_SIZE)
#if POP_VIRTUAL
#define VIRTUAL_AUTH_SIZE               0x100
#endif
#define FILE_BUFFER_SIZE                0x10000
#define RETR_BUFFER_SIZE                0x8000
#define LINE_BUFFER_SIZE                0x20
#endif

Иначе е ясно за тези две директории, нали аз съм ги създал...
в директорията auth има файл на име test и той съдържа следното:
Примерен код
vmail:$1$22535067$itnu1ZoeOq.3UD0EkEOu81::

А що се отнася до директорията mail там е mailbox файла за този потребител
ако искаш прочети тук, за да разбереш какво точно съм направил
Активен

Your Soul is Mine!

Soulstealer

  • Напреднали
  • *****
  • Публикации: 170
    • Профил
popa3d
« Отговор #18 -: Aug 16, 2005, 16:57 »
Пробвах и с реален потербител и пак е същото...
Активен

Your Soul is Mine!

vlad73

  • Напреднали
  • *****
  • Публикации: 130
    • Профил
popa3d
« Отговор #19 -: Aug 16, 2005, 18:16 »
Това през inetd (xinetd) ли го стартираш?
Не знам дали има някаква разлика при authentication, но аз само като standalone service съм го пробвал, а гледам, че POP_STANDALONE ти е 0.
Иначе нормално да не става с реален потребител, VIRTUAL_ONLY ти е "1" и #define AUTH_SHADOW  1 не играе.
Eдна тъпа идея: виж дали юзера с който се стартира popa3d  има права да прави нещо в /var/empty и mail, както и поне да чете в auth.

Успех!
Активен

Soulstealer

  • Напреднали
  • *****
  • Публикации: 170
    • Профил
popa3d
« Отговор #20 -: Aug 17, 2005, 13:50 »
Стартирам го през inetd като root
а какво ще рече
Цитат
#define AUTH_SHADOW  1 не играе.
?
Активен

Your Soul is Mine!

vlad73

  • Напреднали
  • *****
  • Публикации: 130
    • Профил
popa3d
« Отговор #21 -: Aug 17, 2005, 16:15 »
ами погледни в param.h
аз не съм много силен в C, но мисля, че тази конструкция ще се изпълни при VIRTUAL_ONLY=0
Примерен код

#if !VIRTUAL_ONLY
#define AUTH_PASSWD                     0
#define AUTH_SHADOW                     1
#define AUTH_PAM                        0
#define AUTH_PAM_USERPASS               0
#define USE_LIBPAM_USERPASS             0
#if AUTH_PAM || AUTH_PAM_USERPASS
#define AUTH_PAM_SERVICE                POP_SERVER
#endif
#endif


мисля, че това и е идеята - ако искаш само виртуални кутии да не се интересува от реалните юзери

За идеи къде е ключа от бараката се поизчерпах, мен ситуацията със стартирането като root не ми допада много, но не вярвам тя да е проблема, иначе мога тези дни ако остане време да пробвам вкъщи ситуацията и ако постигна нещо ще свиркам.
Ако не ти е голям проблем, защо не  пробваш да го прекомпилираш като stand-alone service? Аз така го правих, вижда ми се по-добро от това да се стартира през друга услуга.
Активен

Soulstealer

  • Напреднали
  • *****
  • Публикации: 170
    • Профил
popa3d
« Отговор #22 -: Aug 17, 2005, 23:44 »
Ако искаш да кажеш, че блока след if ще се изпълни при VIRTUAL_ONLY=0 - да прав си. Аз обаче все още не виждам какъв му е проблема на тоя popa3d ... та дори да го направа standalone ...
Иначе ако ти се занимава да пробваш и ти, ще се радвам '<img'>
мерси! '<img'>
Активен

Your Soul is Mine!