← Back to team overview

sslug-teknik team mailing list archive

Re: cyrus sasl/imap/mysql

 

From: "Jesper K. Pedersen" <jkp@xxxxxxxxxxxxxx>
Subject: Re: [TEKNIK] cyrus sasl/imap/mysql


> Undskyld jeg skriver direkte men jeg kan forestille mig der bliver lidt
> "ekstra" skriverier før der er en løsning vi kan poste hos sslug.

Det viste jeg jo godt, men det skulle jo lige proeves.
Ok, her kommer hele turen :)

> Hvilke software versioner bruger du?

---------------------
# openssl-0.9.7d
---------------------

./config \
        shared \
        --prefix=/usr/local \
        --openssldir=/usr/local/openssl

--------------------
# mysql-4.0.20
--------------------

CFLAGS="-O2 -mcpu=pentiumpro" CXX=gcc
CXXFLAGS="-O2 -mcpu=pentiumpro -felide-constructors -fno-exceptions -fno-rtti" \
./configure \
        --prefix=/usr/local/mysql \
        --enable-assembler \
        --enable-thread-safe-client \
        --enable-local-infile \
        --without-debug \
        --with-extra-charsets=complex \
        --with-vio \
        --with-openssl

-----------------------
# cyrus-sasl-2.1.18
-----------------------

./configure \
        --enable-login \
        --enable-srp \
        --enable-srp-setpass \
        --enable-sql \
        --with-openssl=/usr/local \
        --with-mysql=/usr/local/mysql \
        --with-pgsql=no \
        --disable-gssapi \
        --disable-anon

----------------------
# cyrus-imapd-2.2.6
----------------------
./configure \
        --with-cyrus-user=cyrus \
        --with-cyrus-group=mail \
        --with-cyrus-prefix=/usr/local/cyrus \
        --with-auth=unix \

-----------------------
# imapd.conf
-----------------------
configdirectory:                /var/imap/config
partition-default:               /var/imap/mail
lmtpsocket:                      /var/imap/socket/lmtp
sievedir:                           /var/imap/sieve
sieveusehomedir:             false
duplicate_db:                  skiplist
hashimapspool:               true
sendmail:                        /usr/sbin/sendmail
admins:                          cyrus
postmaster:                    mogens@xxxxxxxxxxxxx
sasl_pwcheck_method:  auxprop
sasl_auxprop_plugin:      sql
sasl_sql_engine:             mysql
sasl_mech_list:              PLAIN
sasl_mysql_hostname:    localhost
sasl_mysql_user:            cyrus
sasl_mysql_passwd:      xxxxxxxx
sasl_mysql_database:    cyrus
sasl_mysql_verbose:      true
sasl_sql_select:              select passwd from users where login='%u'
sasl_sql_insert:               insert into users(realm, login, passwd) values('%r', '%u', '%v')
sasl_sql_update:             update users set passwd='%v' where login='%u'

--------------------------
# cyrus.conf
--------------------------
# standard standalone server implementation

START {
  # do not delete this entry!
  recover       cmd="ctl_cyrusdb -r"

  # this is only necessary if using idled for IMAP IDLE
#  idled                cmd="idled"
}

# UNIX sockets start with a slash and are put into /var/imap/socket
SERVICES {
  # add or remove based on preferences
  imap           cmd="imapd" listen="imap" prefork=0
#  imaps        cmd="imapd -s" listen="imaps" prefork=0
  pop3          cmd="pop3d" listen="pop3" prefork=0
#  pop3s       cmd="pop3d -s" listen="pop3s" prefork=0
  sieve         cmd="timsieved" listen="sieve" prefork=0

  # these are only necessary if receiving/exporting usenet via NNTP
#  nntp         cmd="nntpd" listen="nntp" prefork=0
#  nntps        cmd="nntpd -s" listen="nntps" prefork=0

  # at least one LMTP is required for delivery
#  lmtp         cmd="lmtpd" listen="lmtp" prefork=0
  lmtpunix      cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0

  # this is only necessary if using notifications
#  notify       cmd="notifyd" listen="/var/imap/socket/notify" proto="udp" prefork=1
}

EVENTS {
  # this is required
  checkpoint    cmd="ctl_cyrusdb -c" period=30

  # this is only necessary if using duplicate delivery suppression,
  # Sieve or NNTP
  delprune      cmd="cyr_expire -E 3" at=0400

  # this is only necessary if caching TLS sessions
  tlsprune      cmd="tls_prune" at=0400
}

------------------------------
# bruger tabellen
------------------------------

CREATE TABLE users (
        id                 int NOT NULL auto_increment,
        fname           varchar(30) not null,
        lname           varchar(30) not null,
        addr1           varchar(50) not null,
        addr2           varchar(50) not null,
        zip               varchar(10) not null,
        city              varchar(50) not null,
        country         varchar(50) not null,
        phone           varchar(20) not null,
        email            varchar(50) not null,
        realm           varchar(50) not null,
        login            varchar(15) not null,
        passwd        varchar(40) not null,
        level             tinyint not null default 5 references userlevel.id, # Max
userlevel.id=Lowest level
        lastlogin       datetime not null,
        logincnt        int not null default 0,

        PRIMARY KEY     (id),
        KEY             (fname),
        KEY             (lname),
        KEY             (realm),
        UNIQUE          (fname,lname),
        UNIQUE          (email),
        UNIQUE          (login)
);

> Det hjælper hvis vi ved hvad der går galt?

syslog.conf har foelgende

# Cyrus imapd
local6.debug                        -/var/log/cyrus.log
auth.debug                           -/var/log/sasl.log

Jeg starter master (inetd.conf er editeret, pop3+imap er ude, inetd er sighup'ed )

$: master &

Hmm, loggen ser ikke ud som tidligere. Foer startede master uden brok. Foerst
ved `telnet localhost imap` fik jeg stoej i loggen

her er den tidligere syslog:

Jun 27 15:54:56 server master[2702]: service imap pid 10336 in READY state: terminated abnormally
Jun 27 15:54:56 server master[2702]: service imap pid 10337 in READY state: terminated abnormally
Jun 27 15:54:56 server master[2702]: service imap pid 10338 in READY state: terminated abnormally
Jun 27 15:54:56 server master[2702]: service imap pid 10339 in READY state: terminated abnormally

og her er den nuvaerende cyrus.log

/var/log/cyrus.log

Jul  3 12:56:35 server master[27070]: setrlimit:
    Unable to set file descriptors limit to -1: Operation not permitted
Jul  3 12:56:35 server master[27070]: retrying with 1024 (current max)
Jul  3 12:56:35 server master[27070]: process started
Jul  3 12:56:35 server master[27071]: about to exec /usr/local/cyrus/bin/ctl_cyrusdb
Jul  3 12:56:35 server ctl_cyrusdb[27071]: recovering cyrus databases
Jul  3 12:56:35 server ctl_cyrusdb[27071]: skiplist:
    recovered /var/imap/config/mailboxes.db (0 records, 144 bytes) in 0 seconds
Jul  3 12:56:35 server ctl_cyrusdb[27071]: done recovering cyrus databases
Jul  3 12:56:35 server master[27070]: ready for work
Jul  3 12:56:35 server master[27075]: about to exec /usr/local/cyrus/bin/ctl_cyrusdb
Jul  3 12:56:36 server ctl_cyrusdb[27075]: checkpointing cyrus databases
Jul  3 12:56:36 server ctl_cyrusdb[27075]: archiving database file: /var/imap/config/annotations.db
Jul  3 12:56:36 server ctl_cyrusdb[27075]: error opening /var/imap/config/annotations.db for reading
Jul  3 12:56:36 server ctl_cyrusdb[27075]: DBERROR:
    error archiving database file: /var/imap/config/annotations.db
Jul  3 12:56:36 server ctl_cyrusdb[27075]: DBERROR: archive /var/imap/config/db: cyrusdb error
Jul  3 12:56:36 server ctl_cyrusdb[27075]: archiving database file: /var/imap/config/mailboxes.db
Jul  3 12:56:36 server ctl_cyrusdb[27075]: DBERROR:
    error listing log files: DB_NOTFOUND: No matching key/data pair found
Jul  3 12:56:36 server ctl_cyrusdb[27075]: DBERROR: archive /var/imap/config/db: cyrusdb error
Jul  3 12:56:36 server ctl_cyrusdb[27075]: done checkpointing cyrus databases
Jul  3 12:56:36 server master[27070]: process 27075 exited, status 1

master[27070] koerer stadig.

# ls -lRa /var/imap/
/var/imap/:
total 20
drwxr-x---    5 cyrus    mail         4096 Jun 26 12:16 ./
drwxr-xr-x   14 root     root         4096 Jun 26 12:10 ../
drwxr-xr-x   10 cyrus    mail         4096 Jul  3 12:56 config/
drwxr-xr-x    3 cyrus    mail         4096 Jun 26 12:15 mail/
drwxr-x---    2 cyrus    mail         4096 Jul  3 12:56 socket/

/var/imap/config:
total 44
drwxr-xr-x   10 cyrus    mail         4096 Jul  3 12:56 ./
drwxr-x---    5 cyrus    mail         4096 Jun 26 12:16 ../
drwxr-xr-x    2 cyrus    mail         4096 Jul  3 12:56 db/
drwx------    2 cyrus    mail         4096 Jul  3 12:56 db.backup1/
drwx------    2 cyrus    mail         4096 Jul  3 12:37 db.backup2/
drwxr-xr-x    2 cyrus    mail         4096 Jun 26 12:15 log/
-rw-------    1 cyrus    mail          144 Jul  3 12:56 mailboxes.db
drwxr-xr-x    2 cyrus    mail         4096 Jun 26 12:15 msg/
drwxr-xr-x    2 cyrus    mail         4096 Jun 26 12:15 proc/
drwxr-xr-x    2 cyrus    mail         4096 Jun 26 12:15 ptclient/
drwxr-xr-x    2 cyrus    mail         4096 Jun 26 12:15 socket/

/var/imap/config/db:
total 11276
drwxr-xr-x    2 cyrus    mail         4096 Jul  3 12:56 ./
drwxr-xr-x   10 cyrus    mail         4096 Jul  3 12:56 ../
-rw-------    1 cyrus    mail         8192 Jul  3 12:56 __db.001
-rw-------    1 cyrus    mail       655360 Jul  3 12:56 __db.002
-rw-------    1 cyrus    mail        98304 Jul  3 12:56 __db.003
-rw-------    1 cyrus    mail     17063936 Jul  3 12:56 __db.004
-rw-------    1 cyrus    mail        32768 Jul  3 12:56 __db.005
-rw-------    1 cyrus    mail            4 Jul  3 12:56 skipstamp

/var/imap/config/db.backup1:
total 12
drwx------    2 cyrus    mail         4096 Jul  3 12:56 ./
drwxr-xr-x   10 cyrus    mail         4096 Jul  3 12:56 ../
-rw-------    1 cyrus    mail          144 Jul  3 12:56 mailboxes.db

/var/imap/config/db.backup2:
total 12
drwx------    2 cyrus    mail         4096 Jul  3 12:37 ./
drwxr-xr-x   10 cyrus    mail         4096 Jul  3 12:56 ../
-rw-------    1 cyrus    mail          144 Jul  3 12:37 mailboxes.db

/var/imap/config/log:
total 8
drwxr-xr-x    2 cyrus    mail         4096 Jun 26 12:15 ./
drwxr-xr-x   10 cyrus    mail         4096 Jul  3 12:56 ../

/var/imap/config/msg:
total 8
drwxr-xr-x    2 cyrus    mail         4096 Jun 26 12:15 ./
drwxr-xr-x   10 cyrus    mail         4096 Jul  3 12:56 ../

/var/imap/config/proc:
total 8
drwxr-xr-x    2 cyrus    mail         4096 Jun 26 12:15 ./
drwxr-xr-x   10 cyrus    mail         4096 Jul  3 12:56 ../

/var/imap/config/ptclient:
total 8
drwxr-xr-x    2 cyrus    mail         4096 Jun 26 12:15 ./
drwxr-xr-x   10 cyrus    mail         4096 Jul  3 12:56 ../

/var/imap/config/socket:
total 8
drwxr-xr-x    2 cyrus    mail         4096 Jun 26 12:15 ./
drwxr-xr-x   10 cyrus    mail         4096 Jul  3 12:56 ../

/var/imap/mail:
total 12
drwxr-xr-x    3 cyrus    mail         4096 Jun 26 12:15 ./
drwxr-x---    5 cyrus    mail         4096 Jun 26 12:16 ../
drwxr-xr-x    2 cyrus    mail         4096 Jun 26 12:15 stage./

/var/imap/mail/stage.:
total 8
drwxr-xr-x    2 cyrus    mail         4096 Jun 26 12:15 ./
drwxr-xr-x    3 cyrus    mail         4096 Jun 26 12:15 ../

/var/imap/socket:
total 8
drwxr-x---    2 cyrus    mail         4096 Jul  3 12:56 ./
drwxr-x---    5 cyrus    mail         4096 Jun 26 12:16 ../
srwxrwxrwx    1 root     root            0 Jul  3 12:56 lmtp=

> Kan sasldblistusers2 finde dine brugere?

Det tror jeg ikke, jeg faar foelgende output:

# sasldblistusers2
cyrus@server: cmusaslsecretSRP
cyrus@server: cmusaslsecretOTP
cyrus@server: userPassword

> Bruger du f.eks. PAM til at godkende via mysql eller bruger du
> sasl's sql motor?

Jeg havde taenkt mig at bruge auxprop/sql mysql, og lave et PHP
interface saa domain-admins selv kan tilfoeje/fjerne accounts.

Det var saa "lidt" skriv. Haaber det kaster lidt lys over sagen.

Later
Mogens




Follow ups

References