I installed squirrelmail on OpenBSD again


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


cd squirrelmail/config

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 to annouces to get important notices.