Cyrus: Segfault

thomas-worm
Posts: 5
Joined: 2006-12-12 21:41

Cyrus: Segfault

Post by thomas-worm »

Hallo,


ich hoffe ihr könnt mir helfen. Das deliver-Tool von Cyrus-Imapd bringt folgenden Fehler, wenn der Mailserver eine Mail empfängt:

Code: Select all

Dec 12 21:38:54 server001 postfix/smtpd[11493]: sql auxprop plugin using mysql engine
Dec 12 21:39:18 server001 master[11093]: process 11449 exited, status 0
Dec 12 21:39:34 server001 kernel: deliver[11505]: segfault at 0000000000000010 rip 000055555556088e rsp 00007fffc18604a0 error 4
Dec 12 21:39:34 server001 kernel: deliver[11507]: segfault at 0000000000000010 rip 000055555556088e rsp 00007fffe4800440 error 4
evtl. gehört diese Fehlermeldung von Postfix noch dazu:

Code: Select all

Dec 12 20:55:08 server001 master[11093]: setrlimit: Unable to set file descriptors limit to -1: Operation not permitted
Dec 12 20:55:08 server001 master[11093]: retrying with 8192 (current max)
Dec 12 20:55:09 server001 master[11093]: Error registering service with slp -20
Dec 12 20:55:09 server001 master[11093]: Error registering service with slp -20
Dec 12 20:55:09 server001 master[11093]: Error registering service with slp -20

Meine Konfigurationsdateien:


/etc/postfix/master.cf

Code: Select all

#...
cyrus     unix  -       n       n       -       -       pipe
  user=cyrus argv=/usr/lib/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
/etc/postfix/main.cf

Code: Select all

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
myhostname = mail.thomas-worm.de
inet_interfaces = all
mydestination = localhost, $myhostname, localhost.$myhostname, $mydomain, mysql:/etc/postfix/mysql-mydestination.cf
unknown_local_recipient_reject_code = 550
mail_spool_directory = /var/spool/mail
mailbox_transport = cyrus
smtpd_banner = $myhostname ESMTP $mail_name
debug_peer_level = 2
debug_peer_list = all
debugger_command =
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
         xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = maildrop
html_directory = /usr/share/doc/packages/postfix/html
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/packages/postfix/samples
readme_directory = /usr/share/doc/packages/postfix/README_FILES
biff = no
canonical_maps = hash:/etc/postfix/canonical
virtual_alias_maps = hash:/etc/postfix/virtual, mysql:/etc/postfix/mysql-virtual.cf
virtual_alias_domains = hash:/etc/postfix/virtual, mysql:/etc/postfix/mysql-virtual.cf
relocated_maps = hash:/etc/postfix/relocated
transport_maps = hash:/etc/postfix/transport
sender_canonical_maps = hash:/etc/postfix/sender_canonical
masquerade_exceptions = root
masquerade_classes = envelope_sender, header_sender, header_recipient
program_directory = /usr/lib/postfix
masquerade_domains =
defer_transports =
mynetworks_style = subnet
disable_dns_lookups = no
relayhost =
strict_8bitmime = no
disable_mime_output_conversion = no
smtpd_sender_restrictions = hash:/etc/postfix/access
smtpd_client_restrictions =
smtpd_helo_required = no
smtpd_helo_restrictions =
strict_rfc821_envelopes = no
smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination
smtp_sasl_auth_enable = no
smtpd_sasl_auth_enable = yes
smtpd_use_tls = no
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtp_use_tls = no
alias_maps = hash:/etc/aliases
mailbox_size_limit = 0
message_size_limit = 10240000
/etc/postfix/mysql-canonical.cf

Code: Select all

hosts = localhost
user = mail
password = ******
dbname = mail
table = virtual
select_field = alias
where_field = username
additional_conditions = limit 1
/etc/postfix/mysql-virtual.cf

Code: Select all

hosts = localhost
user = mail
password = ******
dbname = mail
table = virtual
select_field = dest
where_field = alias
additional_conditions =
/etc/postfix/mysql-mydestination.cf

Code: Select all

hosts = localhost
user = mail
password = ******
dbname = mail
table = domain
select_field = domain_name
where_field = domain_name

Code: Select all

mysql> describe virtual;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| username | varchar(255) | YES  |     | NULL    |       |
| alias    | varchar(255) | YES  |     | NULL    |       |
| dest     | varchar(255) | YES  |     | NULL    |       |
| password | varchar(255) | YES  |     | NULL    |       |
| domain   | varchar(255) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

mysql> describe domain;
+-------------+--------------+------+-----+---------+-------+
| Field       | Type         | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| domain_name | varchar(255) | YES  |     | NULL    |       |
+-------------+--------------+------+-----+---------+-------+
1 row in set (0.00 sec)
/etc/sasl2/smtpd.conf

Code: Select all

log_level: 3
pwcheck_method: auxprop
mech_list: PLAIN LOGIN DIGEST-MD5
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: localhost
sql_database: mail
sql_user: mail
sql_passwd: ******
sql_select: SELECT password FROM virtual WHERE username = '%u'
sql_usessl: no
sql_verbose: yes
/etc/imapd.conf

Code: Select all

configdirectory: /var/lib/imap
partition-default: /var/spool/imap
sievedir: /var/lib/sieve
admins: cyrus
allowanonymouslogin: no
autocreatequota: 10000
reject8bit: no
quotawarn: 90
timeout: 30
poptimeout: 10
dracinterval: 0
drachost: localhost
defaultdomain: mail.thomas-worm.de
virtdomains: yes
sasl_mech_list: PLAIN LOGIN DIGEST-MD5
sasl_pwcheck_method: auxprop
sasl_auxprop_plugin: sql
sasl_sql_engine: mysql
sasl_sql_hostnames: localhost
sasl_sql_database: mail
sasl_sql_user: mail
sasl_sql_passwd: ******
sasl_sql_select: SELECT password FROM virtual WHERE alias = '%u@%r'
sasl_sql_usessl: no
sasl_sql_verbose: yes
lmtp_overquota_perm_failure: no
lmtp_downcase_rcpt: yes
#tls_cert_file: /usr/ssl/certs/cert.pem
#tls_key_file: /usr/ssl/certs/skey.pem
#tls_ca_file: /usr/ssl/CA/CAcert.pem
#tls_ca_path: /usr/ssl/CA

Ich hoffe ihr könnt mir da helfen und wisst worans liegt...

Auch wär ich euch ganz dankbar wenn ihr die Config-Files mal anschaut und mir sagt, was man da noch besser machen kann. Also der IMAP-Server läuft soweit. Man kann sich jetzt mit username@domain.tld einloggen und bekommt halt "keine Nachrichten" angezeigt.

Inwieweit die Postfix-Config funktioniert weiß ich nicht, da ja leider der Transport mit deliver nicht klappt.

Wo loggt den deliver hin? bzw. wie kann ich herausfinden was die wirren zahlen hinter segfault heißen?



Liebe Grüße und besten Dank im Voraus, Thomas
Top

captaincrunch
Userprojekt
Userprojekt
Posts: 7225
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Cyrus: Segfault

Post by captaincrunch »

Dec 12 20:55:08 server001 master[11093]: setrlimit: Unable to set file descriptors limit to -1: Operation not permitted
Du hast nicht zufällig nen vServer?
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
Top

thomas-worm
Posts: 5
Joined: 2006-12-12 21:41

Re: Cyrus: Segfault

Post by thomas-worm »

CaptainCrunch wrote:Du hast nicht zufällig nen vServer?
Nö, ist n ganz normaler dedizierter Server mit frisch installiertem openSuSE 10.2 in der Minimal-Konfiguration. Dazu hab ich dann einfach die benötigten Pakete mysql, postfix, postfix-imap, cyrus-sasl, cyrus-imapd, usw. installiert und obige Konfiguration erstellt.

In ner Mailingliste wurde mir jetzt vorgeschlagen ich soll mal den Speicher testen. Wie mach ich das denn am geschicktesten?


Beste Grüße, Thomas
Top

flo
RSAC
Posts: 2297
Joined: 2002-07-28 13:02
Location: Berlin

Re: Cyrus: Segfault

Post by flo »

Wenn das Ding eine serielle Konsole hat, könntest Du in Memtest booten, früher hatten die SuSis das immer mit bei.

Die eigentliche Arbeit ist zu dem Zeitpunkt auch schon geschehen - Mail ist angenommen, Username ist herausgefunden, sogar der IMAP-Login klappt. Versuch doch die Zustellung mal direkt per lmtp zu machen, damit sparst Du Dir noch einen kleinen Schritt, nämlich das deliver-Programm.

Du könntest den Cyrus auch mal "verbose" setzen - sollte im Startscript gehen, dann loggt er weit mehr.

flo.
Top

thomas-worm
Posts: 5
Joined: 2006-12-12 21:41

Re: Cyrus: Segfault

Post by thomas-worm »

Hi,
flo wrote:Wenn das Ding eine serielle Konsole hat, könntest Du in Memtest booten, früher hatten die SuSis das immer mit bei.
Hat leider keine serielle Konsole. Aber ich google da einfach nochmal und schau mal dass ich n Programm finde mit dem ich das machen kann.
Versuch doch die Zustellung mal direkt per lmtp zu machen, damit sparst Du Dir noch einen kleinen Schritt, nämlich das deliver-Programm.
Danke, perfekt! So klappt jetzt alles.


Jetzt hab ich nur noch eine Frage:

Wenn ich in der MySQL die Mailbox anlege ist sie ja noch nicht in Cyrus angelegt (erst beim ersten POP3-Login).
Postfix versucht ja aber schon die Mail an Cyrus weiterzugeben, scheitert dabei und sendet keine Fehler-Mail an den Absender zurück.
Meine Frage wäre jetzt: Wie kann ich eine der folgenden beiden Varianten realisieren:
a) Cyrus erkennt anhand der MySQL, dass diese Mailbox existieren soll und legt sie beim Mailempfang an.
b) Postfix sendet die LMTP-Errormessage an den Mail-Absender zurück.
Oder geht das überhaupt nicht?


Liebe Grüße und nochmals allerbesten Dank, Thomas
Top

flo
RSAC
Posts: 2297
Joined: 2002-07-28 13:02
Location: Berlin

Re: Cyrus: Segfault

Post by flo »

Entweder Du gehst die Datenbank per Cron durch und legst die Mailboxen dann per Perl (o.ä.) an, oder ... es gibt noch einen autocreate-Patch, aber das heißt Cyrus selber zu kompilieren. Die Dependencies sind allerdings nicht wenig.

flo.
Top

thomas-worm
Posts: 5
Joined: 2006-12-12 21:41

Re: Cyrus: Segfault

Post by thomas-worm »

Hi,


danke... Na der werd ich wohl lieber die erste Variante bevorzugen. Cyrus selber zu kompilieren ist bei mir schonmal total fehlgeschlagen.


Nochmals beste Dank und viele Grüße, Thomas
Top