Perl execution failed

When a client is accessing their webmail using Usermin the following error appears. This does not happen on all logins as far as I have been able to determine.

Usermin 1.460 Webmin 1.530

HTTP/1.0 500 Perl execution failed Server: MiniServ/0.01 Date: Tue, 4 Jan 2011 10:50:18 GMT Content-type: text/html Connection: close
Error - Perl execution failed

sdbm store returned -1, errno 22, key "<1234567891.8411@mydomain.co.uk>" at ./mailbox-lib.pl line 1437,  line 123.
Status: 
Active

Comments

Howdy -- this one may require some insight from Jamie, but two things I'd be curious about are --

  1. Is this particular user at or near their quota?

  2. Whenever that error appears, are there any errors in /var/log/maillog around the same time?

pixel_paul's picture
Submitted by pixel_paul on Tue, 01/04/2011 - 08:46

  1. No, the user has unlimted quota.

  2. From what I can see the following appears around the time of accessing Usermin:

Jan  4 14:43:45 SERVERNAME dovecot: imap-login: Login: user=<an.email.account>, method=PLAIN, rip=::ffff:127.0.0.1, lip=::ffff:127.0.0.1, secured

then

Jan  4 14:43:45 SERVERNAME last message repeated 20 times

This could be due to Usermin index file corruption..

Does this happen for all users, or just one?

Also, is there a particular action in Usermin that triggers it?

pixel_paul's picture
Submitted by pixel_paul on Tue, 01/04/2011 - 15:54

Just one user.

Only action is logging in to Usermin for his user. I have yet to find another user with this issue.

Try deleting all .usermin/mailbox/*index* files under the user's home directory...

pixel_paul's picture
Submitted by pixel_paul on Wed, 01/05/2011 - 03:20

Does this mean all files that contain 'index' in their filename?

Correct, the files with "index" in the filename. Though, be sure you're only doing that in the Usermin directory, "$HOME/.usermin/mailbox/" (where $HOME is the path for the one user who's having trouble accessing their mailbox).

Usermin would then re-create those index files next time the user logs in.

pixel_paul's picture
Submitted by pixel_paul on Wed, 01/05/2011 - 09:41

I've deleted those files, and the error message has disappeared and the correct number of emails are now displayed.

Cheers

Paul

Great! It does sound like some sort of index file corruption occurred. If that happens again, let us know, but hopefully that was just an odd fluke :-)

Automatically closed -- issue fixed for 2 weeks with no activity.

pixel_paul's picture
Submitted by pixel_paul on Wed, 02/16/2011 - 06:28

I've just experienced this again on another user account (different domain)

This time the user had exceeded their quota.

In order to fix this I simply increased their quota and the error disappeared.

Error - Perl execution failed
sdbm store returned -1, errno 122, key "" at /usr/libexec/usermin/mailbox/folders-lib.pl line 3111,  line 51.

I looked in their .usermin folder and there are no files containing index

That is sort-of expected .. if the user is over quota, writing to usermin index files will fail.

The main cause of hitting quota limits is incoming email, so the next Virtualmin release will block email when a user gets within 100k of his quota, to avoid this kind of problem and a related issue with Dovecot.

pixel_paul's picture
Submitted by pixel_paul on Thu, 02/17/2011 - 04:57

Does this mean that people sending email to an over quota account will get their message bounced back?

Yes .. actually this already happens. The change will bounce mail when the account is within 100k of its quota, so that there is a little space left over for index files used by Dovecot and Usermin.