I installed squirrelmail on OpenBSD again

2022-09-14T15:52:05Z

Squirrelmail is an old webmail.

"Old" since it looks old.

Actually, it doesn't even require javascript.

And that's fine to me, I'm self-hosting and only need a webmail access for friends who don't configure a mail client.

It is a very simple software, light and easy to set up compared to big alternatives.

No database, no mess.

Just PHP.

Good news, PHP-8 is supported.

So, I installed squirrelmail and it feels great.

This is how it looks with custom CSS.

Notes to install squirrelmail on OpenBSD

Install files and set permissions

mkdir /var/www/htdocs/webmail/
cd /var/www/htdocs/webmail
ftp -o squirrelmail.tar.gz https://squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fsnapshots.squirrelmail.org%2Fsquirrelmail-20220914_0200-SVN.stable.tar.gz
ftp -o locales.tar.gz https://squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fsnapshots.squirrelmail.org%2Fsquirrelmail-20220914_0200-SVN.locales.tar.gz
for i in *.tar.gz; do tar xvzf $i; done
mv squirrelmail.stable squirrelmail
rm *.tar.gz
cp -r squirrelmail.locales/locale/fr_FR squirrelmail/locale/
cp -r squirrelmail.locales/images/*fr_FR* squirrelmail/images/
cp -r squirrelmail.locales/help/fr_FR squirrelmail/help/
rm -r squirrelmail.locales
mkdir -p {data,temp}
chown -R www:daemon .
chmod -R 750 .
chmod 0730 data
chmod 0730 temp

Configure

cd squirrelmail/config
./conf.pl

Have fun in Organization Preferences and Server Settings.

Defaults are fine if webmail is on the same machine that the mail server.

Just make sure in "General Options" to set :

1.  Data Directory               : ../data/
2.  Attachment Directory         : ../temp/

Configure httpd

I suppose here you already have a SSL certificate.

server "squirrelmail.host.tld" {
        listen on * port 80
        no log
        location * { block return 301 "https://$SERVER_NAME$REQUEST_URI" }
}
server "squirrelmail.host.tld" {
        root "/htdocs/squirrelmail.host.tld/squirrelmail"
        connection max request body 36700160
        directory index index.php
	listen on * tls port 443
	hsts preload
	hsts subdomains
	tls {
		certificate "/etc/ssl/host.tld.crt"
		key         "/etc/ssl/private/host.tld.key"
		ticket lifetime default
	}
	location "*.php*" {
		fastcgi socket "/run/php-fpm.sock"
	}
	location "/.well-known/acme-challenge/*" {
		root "/acme"
		request strip 2
	}
	# block everything not listed in .htaccess
        location "README" { block }
        location "class" { block }
        location "config" { block }
        location "configure" { block }
        location "contrib" { block }
        location "data" { block }
        location "doc" { block }
        location "functions" { block }
        location "help" { block }
        location "include" { block }
        location "locale" { block }
        location "po" { block }
}

Subscribe

subscribe to annouces to get important notices.