I've discussed this problem some time ago, known as forking problem. Turned
out to be db3 locking problem or whatever. Anyway, here's something I
experience right now:
Let me begin with my system description.
It's Linux RedHat 7.0 with kernel 2.4.2-0.1.28smp running at dual p3/550
with 768 mb ram and several scsi hdds. There are >100000 registered users in
the system, however only half are active. Currently I am running:
1) cyrus-imapd 2.0.16
2) pam_mysql
3) libdb-3.3
4) sendmail 8.12.0
5) kaspersky avp for linux
6) poprelay
Sendmail works in queue mode, -q1m
During that minute it is queuing e-mails everything is fine -- e-mails are
checked for viruses and if everything is fine, placed in queue. At peak
time, the system receives up to 300-400 e-mails per that minute. Once it
starts to deliver the e-mails locally, the problems begin. sendmail opens
huge number of connections to localhost, which look like that:
...
sendmail: ./f8RAK8Jw015602 localhost: client DATA sta
sendmail: ./f8RAJ81C015613 localhost: client DATA sta
sendmail: ./f8RAJ8WU015726 localhost: client DATA sta
sendmail: ./f8RAJ8Vm015734 localhost: client DATA sta
sendmail: ./f8RAK372016522 localhost: client DATA sta
sendmail: ./f8RAK6pN016557 localhost: client DATA sta
sendmail: ./f8RAK6fs016567 localhost: client DATA sta
...
and the system launches approx the same number of lmtpds.
The e-mails are being delivered, but EXTREMELY slow. I don't know where the
problem is, however the system is unable to deliver more than 100-200
e-mails per minute. As you understand, while it is delivering 100-200
e-mails from queue, 300-400 new e-mails come. At next minute it opens even
more lmtpds and within 30-40 minutes it just dies with memory overflow
message.
I've tried everything, but don't know where the problem is. Here are my
config files:
cyrus.conf:
START {
mboxlist cmd="ctl_mboxlist -r"
deliver cmd="ctl_deliver -r"
}
SERVICES {
imap cmd="/usr/cyrus/bin/imapd" listen="imap" prefork=1
pop3 cmd="/usr/cyrus/bin/pop3d" listen="pop3" prefork=1
sieve cmd="/usr/cyrus/bin/timsieved" listen="sieve" prefork=0
lmtpunix cmd="/usr/cyrus/bin/lmtpd" listen="/var/imap/socket/lmtp"
prefork=1 maxchild=50
}
EVENTS {
checkpoint cmd="ctl_mboxlist -c" period=30
#delprune cmd="ctl_deliver -E 3" period=1440
}
imapd.conf:
configdirectory: /var/imap
partition-default: /inbox1
partition-usr2: /inbox2
partition-usr3: /inbox3
partition-usr4: /inbox4
partition-usr5: /inbox5
admins: support
allowanonymouslogin: no
autocreatequota: 5000
quotawarn: 90
defaultacl: lrswipcda
sievedir: /var/imap/sieve
postmaster: support
reject8bit: no
sasl_pwcheck_method: pam
sendmail.mc:
include(`/usr/lib/sendmail-cf/m4/cf.m4')
VERSIONID(`linux setup for Red Hat Linux')dnl
OSTYPE(`linux')
define(`confDEF_USER_ID',``8:12'')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confBIND_OPTS',`-DNSRCH -DEFNAMES')dnl
define(`confTRY_NULL_MX_LIST',true)dnl
define(`confDONT_PROBE_INTERFACES',true)dnl
define(`confTO_IDENT',`0')dnl
define(`confLOCAL_MAILER',`cyrus')dnl
define('ALIAS_FILE','/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/sendmail.st')dnl
define('AVP_LOCAL_HACK')dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(`access_db')dnl
FEATURE(`blacklist_recipients')dnl
FEATURE(dnsbl, `blackholes.mail-abuse.org', `Rejected - see
http://www.mail-abuse.org/rbl/')dnl
FEATURE(dnsbl, `dialups.mail-abuse.org', `Dialup - see
http://www.mail-abuse.org/dul/')dnl
FEATURE(dnsbl, `relays.mail-abuse.org', `Open spam relay - see
http://www.mail-abuse.org/rss/')dnl
FEATURE(`delay_checks')dnl
Klocalip hash -a<MATCH> /etc/mail/localip
Kpopip hash -a<MATCH> /etc/mail/popip
FEATURE(`accept_unresolvable_domains')dnl
MAILER(avpkeeper)dnl
MAILER(smtp)dnl
MAILER(local)dnl
MAILER_DEFINITIONS
Mcyrus, P=[IPC], F=lsDFMnqA5@/:|SmXz, E=\r\n,
S=EnvFromL, R=EnvToL/HdrToL, T=DNS/RFC822/X-Unix,
A=FILE /var/imap/socket/lmtp
LOCAL_RULE_0
Rbb + $+ < @ $=w . > $#cyrus $: + $1
LOCAL_RULESETS
# if there's a plus part, we want to directly deliver it
SLocal_localaddr
R$+ + $* $#cyrus $@ $: $1 + $2
SLocal_check_rcpt
# Put the address into cannonical form (even if it doesn't resolve to an
MX).
R$* $: $>Parse0 $>3 $1
R$* < $* > $* $: $1 < $2 . > $3
Pretend it's canonical.
R$* < $* . . > $* $1 < $2 . > $3
Remove extra dots.
# Allow relaying if the connected host is a local IP address.
R$* $: < $&{client_addr} > Get client
IP address.
R<> $#OK Local is ok.
R< $* . $- > $* $(localip $1.$2 $: < $1 > . $2 $) Check last
three octets.
R$* < MATCH > $#OK
R< $- > $* $: $(localip $1 $: < > $1 $2 $) Check first
octet.
R$* < MATCH > $#OK
# Allow relaying if the connected host has recently POP3 authenticated.
R$* $: < $&{client_addr} > Get client
IP address.
R< $* > $(popip $1 $) Check full
address.
R$* < MATCH > $#OK
# IP address didn't match.
Anyone willing to help? :)
Sincerely,
Nick