74 lines
1.9 KiB
Perl
Executable File
74 lines
1.9 KiB
Perl
Executable File
#!/usr/bin/perl -wT
|
|
# HTTP handler for incoming e-mail
|
|
|
|
use strict;
|
|
use lib qw(. lib);
|
|
|
|
use Bugzilla;
|
|
use Bugzilla::InMail;
|
|
|
|
my $status;
|
|
if (!Bugzilla->params->{enable_inmail_cgi})
|
|
{
|
|
$status = 'disabled';
|
|
}
|
|
else
|
|
{
|
|
my $mail_text = Bugzilla->cgi->param('POSTDATA');
|
|
if (!$mail_text)
|
|
{
|
|
$status = 'empty-message';
|
|
}
|
|
else
|
|
{
|
|
$status = Bugzilla::InMail::process_inmail($mail_text) == 1 ? 'success' : 'error';
|
|
}
|
|
}
|
|
|
|
Bugzilla->cgi->send_header('application/json');
|
|
print '{"status":"'.$status.'"}';
|
|
exit;
|
|
|
|
__END__
|
|
|
|
Postfix configuration example:
|
|
|
|
1) If you want to log all incoming messages, create /etc/postfix/send-to-bugzilla script with the following content:
|
|
|
|
#!/bin/sh
|
|
echo '-----' >> /var/log/bugzilla-email-in.log
|
|
/usr/bin/tee -a /var/log/bugzilla-email-in.log | curl -X POST -H 'Content-Type: text/plain' --data-binary @- http://127.0.0.1:8157/email_in.cgi
|
|
|
|
2) If you don't want to log all incoming messages, create /etc/postfix/send-to-bugzilla script with the following content:
|
|
|
|
#!/bin/sh
|
|
curl -X POST -H 'Content-Type: text/plain' --data-binary @- http://127.0.0.1:8157/email_in.cgi
|
|
|
|
3) Make it executable:
|
|
|
|
chmod 755 /etc/postfix/send-to-bugzilla
|
|
|
|
4) Add the following to master.cf:
|
|
|
|
bugzilla unix - n n - - pipe
|
|
flags=DRhu user=www-data:www-data argv=/etc/postfix/send-to-bugzilla
|
|
|
|
5) Add the following to your /etc/postfix/transport map:
|
|
|
|
daemon@your.bugzilla.url bugzilla:
|
|
|
|
Where `daemon@your.bugzilla.url` is the same as `mailfrom` Bugzilla parameter from Administration -> Config
|
|
This will make your Postfix feed all messages sent to `daemon@your.bugzilla.url` to email_in.cgi.
|
|
|
|
6) Run `postmap /etc/postfix/transport`
|
|
|
|
7) Ensure that other parts of your Postfix configuration do not prevent it from receiving mail to daemon@your.bugzilla.url
|
|
|
|
8) Turn `enable_inmail_cgi` parameter on in Administration -> Config
|
|
|
|
9) Deny access to `email_in.cgi` in your HTTP server. For example with nginx:
|
|
|
|
location /email_in.cgi {
|
|
deny all;
|
|
}
|