You are here


Dear "()<>[]:,;@\"!#$%&'*+-/=?^_`{}| ~ ? ^_`{}|~.a"

As I ranted in a recent tweet, "A plus sign is a perfectly valid character in an e-mail address." Yet about half of all sites I visit tell me my e-mail address is invalid when they encounter +.

The format for e-mail addresses is defined in RFC 5321, RFC 5322, and summarized nicely in RFC 3696. For the record, these are all valid e-mail addresses:

I thought my server seemed slow.


but this confirms it. Bear in mind that upload is server to client. I'm betting on a bad cable between the server and the switch, but we'll see what iWeb says.

Follow-up: They had originally configured the NIC for auto-negotiate which it didn't like. Setting it to 10/full fixed it.


Bacula bug 1975: bconsole does not cope with attempt to label with existing label

When labelling a new volume, if an existing volume name is entered, subsequent entries are ignored and the original one is attempted each time.

bacula-dir# bconsole
Connecting to Director localhost:9101
1000 OK: bacula-dir Version: 5.2.10 (28 June 2012)
Enter a period to cancel a command.
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"
Automatically selected Storage: File
Enter new Volume name: 10020
Media record for new Volume "10020" already exists.
Enter new Volume name: 10021
Media record for new Volume "10020" already exists.
Enter new Volume name: 10022
Media record for new Volume "10020" already exists.
Enter new Volume name: 99999
Media record for new Volume "10020" already exists.
Enter new Volume name: .
Automatically selected Storage: File
Enter new Volume name: 10021
Defined Pools:
1: Default
2: File
3: Scratch
Select the Pool (1-3): 2
Connecting to Storage daemon File at ...
Sending label command for Volume "10021" Slot 0 ...

Workaround: exit the prompt with "." and reissue the label command.

Update: The bug has been fixed and will be corrected in version 5.2.14.


Mollom: The configured Mollom API keys are invalid.

When configuring Mollom for Drupal, you may get the message

The configured Mollom API keys are invalid.

even though your keys are correct.

The problem is most likely that your server's clock is out of sync. An error of more than a couple of minutes will result in this error. 


Ports upgrade broke my mail server

A day or two ago I upgraded the ports in my jails. This stopped postfix from accepting mail. The problem was that postgrey, which listens for postfix on [geshifilter-code]tcp/10023[/geshifilter-code] stopped running. It produced an error about not being able to bind to [geshifilter-code]::1[/geshifilter-code]. I got it back running again by altering the flags in the startup script ([geshifilter-code]/usr/local/etc/rc.d/postfix[/geshifilter-code]) from:

[geshifilter-code]postgrey_flags=${postgrey_flags:-"--pidfile=${postgrey_pidfile} --inet=10023 -d --user=postgrey --group=postgrey --dbdir=/var/db/postgrey --x-greylist-header=${postgrey_greylist_header}"}[/geshifilter-code]


[geshifilter-code]postgrey_flags=${postgrey_flags:-"--pidfile=${postgrey_pidfile} --inet= -d --user=postgrey --group=postgrey --dbdir=/var/db/postgrey --x-greylist-header=${postgrey_greylist_header}"}[/geshifilter-code]

This forces binding to the IPv4 port only.

How freebsd-update broke my jails

I usually perform a binary update of my jails using

[geshifilter-code]#freebsd-update fetch install #freebsd-update -d /usr/jails/basejail fetch install[/geshifilter-code]

This has worked for years. After doing it yesterday I was unable to login to any of my jails and pretty much everything broke. For example logging in using [geshifilter-code]ssh[/geshifilter-code] gave logged the error: [geshifilter-code]/bin/sh permission denied[/geshifilter-code]

After spending the day on it I have discovered that the upgrade process changed permissions on [geshifilter-code]/usr/jails/basejail[/geshifilter-code] to [geshifilter-code]700[/geshifilter-code]. Changing it to [geshifilter-code]755[/geshifilter-code] fixed everything.

How to enable password changing on remote host in roundcube on FreeBSD


Roundcube comes with a password change module, through it's disabled by default. Configuring it to change passwords on another server's [geshifilter-code]passwd[/geshifilter-code] database is another matter. The instructions only cover using [geshifilter-code]chpasswd[/geshifilter-code] on a Linux server to update the local password database.

On the mail server:

  • [geshifilter-code]adduser roundcube[/geshifilter-code], set a shell and create a home directory.
  • [geshifilter-code]visudo[/geshifilter-code], adding [geshifilter-code]roundcube ALL = NOPASSWD: /usr/sbin/pw[/geshifilter-code]

On the web server:

  • [geshifilter-code]chpass www[/geshifilter-code], assigning a shell to allow logins.
  • [geshifilter-code]su www[/geshifilter-code], impersonate www.
  • [geshifilter-code]ssh-keygen -t rsa[/geshifilter-code], create an RSA private/public key pair.
  • [geshifilter-code]scp /home/www/.ssh/ roundcube@<em>remotehost</em>/~/.ssh/authorized_keys[/geshifilter-code], copying the public key to the mail server to allow passwordless logins.

The [geshifilter-code]chpasswd[/geshifilter-code] driver ([geshifilter-code]/www/roundcube/plugins/password/drivers/chpasswd.php[/geshifilter-code] will require modification.

[geshifilter-php]function password_save($currpass, $newpass) { $cmd = rcmail::get_instance()-&gt;config-&gt;get('password_chpasswd_cmd'); $username = $_SESSION['username']; $handle = popen($cmd, "w"); fwrite($handle, "$newpass "); if (pclose($handle) == 0) { return PASSWORD_SUCCESS; } else { raise_error(array( 'code' =&gt; 600, 'type' =&gt; 'php', 'file' =&gt; __FILE__, 'line' =&gt; __LINE__, 'message' =&gt; "Password plugin: Unable to execute $cmd" ), true, false); } return PASSWORD_ERROR; }[/geshifilter-php]

And so will this line in [geshifilter-code]/www/roundcube/plugins/password/[/geshifilter-code]

[geshifilter-php]// chpasswd Driver options // --------------------- // Command to use $rcmail_config['password_chpasswd_cmd'] = "ssh roundcube@mailhost sudo pw usermod -n {$_SESSION['username']} -h 0 2&gt; /dev/null";[/geshifilter-php]


Simple Copyright Policy: If you want to reproduce anything on this site, get my permission first.