Project status: Maildiranasaurus has hatched!
Q: Why did the dinosaur cross the road?
A: Because the chicken wasn't invented yet. •ᴗ•
This started as a project to get an insight into using go-guerrilla as a package.
It is uses go-guerrilla with an Maildir backend. See serve.go how the Maildir processor was added!
The Maildir processor repo lives here: https://github.com/flashmob/maildir-processor
You'll need GNU make and Go installed
$ make dependencies
$ make maildirasaurus
copy maildiranasaurus.conf.sample to maildiranasaurus.conf customize it to how you like it, then:
./maildiranasaurus serve
Customize your config as outlined in the readme: https://github.com/flashmob/go-guerrilla
To enable maildir, customize your backend_config like so:
"backend_config" :
{
"save_process": "HeadersParser|Debugger|Hasher|Header|MailDir",
"validate_process": "MailDir",
"maildir_user_map" : "test=1002:2003,guerrilla=1001:1001,flashmob=1000:1000",
"maildir_path" : "/home/[user]/Maildir",
"save_workers_size" : 1,
"primary_mail_host":"sharklasers.com",
"log_received_mails" : false
},
save_process
- configures the processors which work on saving the email envelope.
Working from left to right, i.e. in the end, mail will be saved using the MailDir processor
validate_process
- same as save_process
, however these do validation of recipients
maildir_user_map
- user settings. <username>=<user id>:<group id>
comma separated. Use -1 for <id>
& <group>
if you want to ignore these, otherwise get these numbers from /etc/passwd
maildir_path
- the [user]
part will be replaced with with the actual user from maildir_user_map once the config is loaded. Usually, no need to change this as the default is conventional.
save_workers_size
- how many dinosaur workers to spawn. Roaaaar!
FastCGI you say? Yes, an example of the FastCGI processor is included too. Useful if you want to deliver your emails to a php script (or other fcgi gateway)
Include the following fields in the "backend_config" object:
"backend_config" :
{
"save_process": "HeadersParser|Debugger|Hasher|Header|MailDir|FastCGI",
"validate_process" : "MailDir|FastCGI",
// [other fields here]
"fcgi_script_filename_save" : "/path/to/fastcgi-processor/examples/save.php",
"fcgi_script_filename_validate" : "/path/to/fastcgi-processor/examples/validate.php",
"fcgi_connection_type" : "unix",
"fcgi_connection_address" : "/path/to/php7.0-fpm.sock"
},
fcgi_script_filename_save
- path to save script file.
fcgi_script_filename_validate
- path to validate file.
fcgi_connection_type
- connection type, unix or tcp
fcgi_connection_address
- path to the unix socket, or :
For scripting details, read more documentation about it here FastCGI processor