Request Tracker

This guide will get Request Tracker 4 setup working, with support for emails sent to an mlmmj mailing list to be inserted first into the ticket system, then sent on to mlmmj. It is intended for a HelpDesk-type deployment. This howto assumes that you have a working postfix setup already. 
Note: This document has been tested on Alpine Linux 2.2.2, but contains some packages which are currently in the edge repository.
Note: Use a computer with at least 512MB of RAM.
== Initial package installation and setup ==
* add edge/main repository to /etc/apk/repositories
* 
* Edit /etc/lighttpd/lighttpd.conf and enable fastcgi
* 
* 
* 
 Enter password for new role: rtpass
 Enter it again: rtpass
 Shall the new role be a superuser? (y/n) n
 Shall the new role be allowed to create databases? (y/n) y
 Shall the new role be allowed to create more new roles? (y/n) y
== Setup RT4 environment ==
* 
* 
* Setup RT_SiteConfig.pm with proper queue name, link to your organization's homepage, support postgresql, set outbound email defaults.
** /etc/rt4/RT_SiteConfig.pm:
 Set($rtname, 'support');
 Set($Organization, 'example.com');
 Set($WebDomain, 'fqdn.in.example.com');
 Set($OwnerEmail, 'RTAdmin@example.com');
 Set($LogoLinkURL, 'https://www.example.com/');
 Set($LogoAltText, 'Example.com Support');
 # Set($LogoURL, );
 
 Set($DatabaseType, 'Pg');
 Set($DatabaseUser, 'rt_user');
 Set($DatabasePassword, 'rtpass');
 Set($DatabaseName, 'support_rt');
 
 Set($LogToSyslog, 'warning');
 
 Set($MailCommand, 'sendmailpipe');
 Set($SendmailArguments , '-fpostmaster@example.com -oi -t');
 Set($ParseNewMessageForTicketCCs, 1);
 Set($UseTransactionBatch, 1);
 Set($CorrespondAddress, 'support@example.com');
 Set($CommentAddress, 'support@example.com');
 Set($RecordOutgoingEmail, 0);
 Set($ForwardFromUser, 1);
 Set($SetOutgoingMailFrom, 1);
 Set($FriendlyFromLineFormat, '"%s" <%s>');
* 
* 
* Test and make sure that you can access rt using the built-in webserver first.
** Tools -> Config -> Users -> Create
** Username: Support-lists, Email: support-lists@example.com, etc -> Create
** Tools -> Config -> Groups -> Create
** Name: Support Users, etc -> Create
** Tools -> Configuration -> Queues -> Create... Give it a name like 'support', and set support-list@example.com to be both reply and comment addresses. Remember the name 'support' which you'll use in the next sections (including the email address)
== Modify Postfix Configuration for RT4 and mlmmj ==
* adduser mlmmj
* mkdir /var/spool/mlmmj
* mlmmj-make-ml.sh -L support-list
* Support sending bcc to list
** touch /var/spool/mlmmj/support-list/control/tocc
* Allow support@example.com to send to list without being subscribed to it
** mlmmj-sub -L /var/spool/mlmmj/support-list -a support@example.com -n
* Add to /etc/postfix/master.cf:
 rt4 unix - n n - - pipe flags=DORhu user=lighttpd argv=/usr/bin/rt-mailgate --queue $nexthop --action correspond --url http://fqdn.in.example.com/
 mlmmj unix - n n - - pipe flags=DORhu user=mlmmj argv=/usr/bin/mlmmj-recieve -F -L /var/spool/mlmmj/$nexthop
* Add to /etc/postfix/main.cf:
 myhostname = mx1.example.com
 mydomain = mx1.example.com
 relay_domains = example.com
 recipient_delimiter = +
 transport_maps = hash:/etc/postfix/transport
* Create /etc/postfix/transport (and run "postmap transport" after editing):
 support@example.com rt4:support
 support-list@example.com mlmmj:support-list
 postmaster@example.com local:
 example.com error:No such mailbox.
* Edit /etc/postfix/aliases for the postmaster alias (and run "newaliases")
* Allow users to create tickets by email by checking all General Rights for group Everyone in Tools -> Configuration -> Global -> Group Rights
== Lighttpd configuration ==
* Stop rt-server
* /etc/lightttpd/lighttpd.conf:
 include "rt4.conf"
* /etc/lighttpd/rt4.conf:
 server.modules += ("mod_fastcgi")
 
 $HTTP["host"] == "fqdn.in.example.com" {
 server.document-root = "/usr/share/rt4/html"
 index.file-names = ( "index.html" ) 
 
 fastcgi.server = ( "/" =>
 ((
 "bin-path" => "/usr/sbin/rt-server.fcgi",
 "socket" => "/var/run/lighttpd/rt4.socket",
 "check-local" => "disable",
 "fix-root-scriptname" => "enable"
 )),
 )
 }
* 
== Final RT4 configuration ==
* Login to http://fqdn.in.example.com (your RT server)
** Add AdminCC for Support Users to support queue
** New template called 'Support Users Correspondence' (anyone you add to Support Users group will have their outbound email rewritten to 'Support Team' instead of their realname
 { 
 my $output = undef;
 my $groups = $Transaction->CreatorObj->OwnGroups();
 while( my $group = $groups->Next ) {
 my $queue = $Ticket->QueueObj;
 my $realname = $queue->Description;
 my $email = $queue->CorrespondAddress || RT->Config->Get('CorrespondAddress');
 $output = 'From: "' . $realname . '" <' . $email . '>' if $group->Name eq 'Support Team';
 }
 $output;
 }
 RT-Attach-Message: yes 
 
 {$Transaction->Content()} 
** Edit Resolved template and add the following to the end:
 {
 my $old_user = $Ticket->CurrentUser;
 $Ticket->CurrentUser( $RT::SystemUser );
 my $batch = $Ticket->TransactionBatch;
 my $comment;
 if( !$batch || !ref($batch) ) {
 $RT::Logger->info("TransactionBatch stage is disabled,
 fallback to last comment.
 Turn on TransactionBatch stages for acurate results.");
 my $transactions = $Ticket->Transactions;
 $transactions->Limit( FIELD => 'Type', VALUE => 'Comment' );
 $transactions->OrderByCols( { FIELD => 'Created',
 ORDER => 'DESC' },
 { FIELD => 'id',
 ORDER => 'DESC' } );
 $transactions->RowsPerPage(1);
 $comment = $transactions->First;
 } else {
 $comment = (grep { ($_->Type eq 'Comment')? 1: 0;} @$batch)[0];
 }
 $OUT = " ";
 if ( $comment ) {
 $OUT = "Resolution:\n";
 $OUT .= ("-"x76) ."\n";
 $OUT .= $comment->Content;
 }
 $Ticket->CurrentUser( $old_user );
 } 
* Test that inbound and outbound emails, creating tickets by email and replying to ticket emails works as expected:
** Emails from end-users should be sent to support@example.com
** Those emails are either created as a new ticket in RT, or if the subject line contains a ticket ID, then it's inserted into the appropriate ticket
** Ticket comments and correspondence will be sent on to support-list@example.com, which is an mlmmj list, which can be subscribed to using support-list+subscribe@example.com
** The RT4 web interface is available at http://fqdn.in.example.com
Category:Mail
Category:Server
Category:Programming
== Upgrading RT ==
Upgrading the web interfaces should be easy as upgrading any Alpine package
Now upgrade the database:
Answers to the questions asked.