Sep42006
SquirrelMail under Nginx
Filed under: nginx squirrelmailThis assumes that SquirrelMail is installed at /var/www/public/webmail.
The Nginx configuration:
location ~ /webmail/.*\.php {
root /var/www/public;
fastcgi_pass 127.0.0.1:1025;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/public$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT /var/www/public/webmail;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REDIRECT_STATUS 200;
}
location ~ /webmail {
index index.php;
root /var/www/public;
}
Next, you must run a PHP FastCGI instance. For this purpose I'm using spawn-fcgi from the Lighttpd distribution:
/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 1025 -u sqmail -g sqmail -f /usr/lib/php4/bin/php-cgi







Squirrelmail install contains lot of files that should not be accessible via web server and also a data directory that should be protected from running php files. Squirrelmail (in this case falsely) assumes that .htaccess files will protect it. You need to rewrite these .htaccess files by hand to nginx config.