From robert.wysocki at contium.pl Wed Feb 1 01:42:29 2012 From: robert.wysocki at contium.pl (Robert Wysocki) Date: Wed, 01 Feb 2012 07:42:29 +0100 Subject: [rt-users] Unknown encoding in rt-mailgate In-Reply-To: References: <1328006542.1969.180.camel@rmwysocki> Message-ID: <1328078549.1969.182.camel@rmwysocki> Dnia 2012-01-31, wto o godzinie 21:43 +0400, Ruslan Zakirov pisze: > > Was it a mistake in encoding or just unsupported one? Anyway, it > should be reported as a bug report with more details about what was in > headers and what is actual encoding of the mail. The actual encoding was iso-8859-2 and the declared one was iso-8852-2. I think it was i typo. Regards, -- Robert Wysocki administrator system?w linuksowych CONTIUM S.A., http://www.contium.pl From gsollazz at sgul.ac.uk Wed Feb 1 06:03:30 2012 From: gsollazz at sgul.ac.uk (Giuseppe Sollazzo) Date: Wed, 01 Feb 2012 11:03:30 +0000 Subject: [rt-users] Set Subject in if/then clause Message-ID: <4F291C02.50006@sgul.ac.uk> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, I'm trying to set up a different subject for different queues in the same template (autoreply). This doesn't seem to work: { if ($Ticket->QueueObj->Name eq 'Work Queue') { Subject: Helpdesk Job Logged: {$Ticket->Subject} "Output this"; } elsif ($Ticket->QueueObj->Name eq 'Task Queue') { Subject: Support Job Logged: {$Ticket->Subject} "Output that"; } else { "Output other"; } } Is there a way to get this work? Thanks, Giuseppe - -- ____________________________________ Giuseppe Sollazzo Senior Systems Analyst Computing Services Information Services St. George's, University Of London Cranmer Terrace London SW17 0RE Email: gsollazz at sgul.ac.uk Direct Dial: +44 20 8725 5160 Fax: +44 20 8725 3583 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJPKRwCAAoJEAqigArPBfJXFCwH/iHe/oMnhx4fUV3AT4r55VFM PZHTLycb7mgsG1Nd4N0aIV3EQoGLIXe2YH1GaJIHLbs58q49r/fhzghjRYSGAYDt byk1NZGSXbItHwKM5D/cHX6xp/4SYDEeybtgCRbYKI51WsGIc7pX71TRjqQfNspv I5t4Pniq8VweKtl6y46eJiZK2cUVYTFmEy51xd32R+p1i5quw4BXV/oAWhC27+AT TlsNCnGye8BUD7NA0GAcaGzKCyKnMIJDbNm9ye14aEr6D/5+QXD2FoTxldI9EX7p qCUOYC+g4o+rBihSpEK5dUH4pJ3wbidBfI1plMLopkTFLI4BSy/8lXqD4bwQzpA= =OqSg -----END PGP SIGNATURE----- From backus at nlcom.nl Wed Feb 1 06:07:44 2012 From: backus at nlcom.nl (Mayk Backus) Date: Wed, 01 Feb 2012 12:07:44 +0100 Subject: [rt-users] view agent attached file/image in a reply/comment Message-ID: <4F291D00.1020502@nlcom.nl> Hi list, I noticed that when a reply is made on a ticket by one of our agents, and there's an attachement i can't view this. For example when someone sends a screenshot of something, i can see the file is attached when downloading the it with headers , but is there a way to view the attachment (image, etc) inside RT ? thanx Greets Mayk Backus From drey111 at gmail.com Wed Feb 1 07:03:21 2012 From: drey111 at gmail.com (Joe Harris) Date: Wed, 1 Feb 2012 07:03:21 -0500 Subject: [rt-users] Set Subject in if/then clause In-Reply-To: <4F291C02.50006@sgul.ac.uk> References: <4F291C02.50006@sgul.ac.uk> Message-ID: I am pretty sure you can define that on the queue edit screen. I set up different subject prefixes per queue when I created them. As long as it is a per queue difference and not changes within a queue based on something else. Someone correct me if I'm wrong. Sent from my mobile device. On Feb 1, 2012, at 6:03 AM, Giuseppe Sollazzo wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Hi, > I'm trying to set up a different subject for different queues in the > same template (autoreply). This doesn't seem to work: > > { > if ($Ticket->QueueObj->Name eq 'Work Queue') { > Subject: Helpdesk Job Logged: {$Ticket->Subject} > "Output this"; > } > elsif ($Ticket->QueueObj->Name eq 'Task Queue') { > Subject: Support Job Logged: {$Ticket->Subject} > "Output that"; > } > else { > "Output other"; > } > } > > Is there a way to get this work? > > Thanks, > Giuseppe > > - -- > ____________________________________ > > Giuseppe Sollazzo > Senior Systems Analyst > Computing Services > Information Services > St. George's, University Of London > Cranmer Terrace > London SW17 0RE > > Email: gsollazz at sgul.ac.uk > Direct Dial: +44 20 8725 5160 > Fax: +44 20 8725 3583 > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.10 (GNU/Linux) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ > > iQEcBAEBAgAGBQJPKRwCAAoJEAqigArPBfJXFCwH/iHe/oMnhx4fUV3AT4r55VFM > PZHTLycb7mgsG1Nd4N0aIV3EQoGLIXe2YH1GaJIHLbs58q49r/fhzghjRYSGAYDt > byk1NZGSXbItHwKM5D/cHX6xp/4SYDEeybtgCRbYKI51WsGIc7pX71TRjqQfNspv > I5t4Pniq8VweKtl6y46eJiZK2cUVYTFmEy51xd32R+p1i5quw4BXV/oAWhC27+AT > TlsNCnGye8BUD7NA0GAcaGzKCyKnMIJDbNm9ye14aEr6D/5+QXD2FoTxldI9EX7p > qCUOYC+g4o+rBihSpEK5dUH4pJ3wbidBfI1plMLopkTFLI4BSy/8lXqD4bwQzpA= > =OqSg > -----END PGP SIGNATURE----- > > -------- > RT Training Sessions (http://bestpractical.com/services/training.html) > * Boston March 5 & 6, 2012 From gsollazz at sgul.ac.uk Wed Feb 1 08:04:03 2012 From: gsollazz at sgul.ac.uk (Giuseppe Sollazzo) Date: Wed, 01 Feb 2012 13:04:03 +0000 Subject: [rt-users] Set Subject in if/then clause In-Reply-To: References: <4F291C02.50006@sgul.ac.uk> Message-ID: <4F293843.7000702@sgul.ac.uk> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 01/02/12 12:03, Joe Harris wrote: > I am pretty sure you can define that on the queue edit screen. I > set up different subject prefixes per queue when I created them. As > long as it is a per queue difference and not changes within a queue > based on something else. > > Someone correct me if I'm wrong. > > Sent from my mobile device. Hi Joe, thanks for that. Your suggestion changes only the SubjectTag, though. What I'd like to understand is if my solution can be made to work - or if there's any reason why it shouldn't. I might need to do more versatile stuff than just adapting the Subject in that very simple way, so if there's anyone who can recommend how to do so, please let me know. Thanks, Giuseppe > > On Feb 1, 2012, at 6:03 AM, Giuseppe Sollazzo > wrote: > >> > Hi, I'm trying to set up a different subject for different queues > in the same template (autoreply). This doesn't seem to work: > > { if ($Ticket->QueueObj->Name eq 'Work Queue') { Subject: Helpdesk > Job Logged: {$Ticket->Subject} "Output this"; } elsif > ($Ticket->QueueObj->Name eq 'Task Queue') { Subject: Support Job > Logged: {$Ticket->Subject} "Output that"; } else { "Output other"; > } } > > Is there a way to get this work? > > Thanks, Giuseppe > >> - -------- RT Training Sessions (http://bestpractical.com/services/training.html) * Boston March 5 & 6, 2012 - -- ____________________________________ Giuseppe Sollazzo Senior Systems Analyst Computing Services Information Services St. George's, University Of London Cranmer Terrace London SW17 0RE Email: gsollazz at sgul.ac.uk Direct Dial: +44 20 8725 5160 Fax: +44 20 8725 3583 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJPKThCAAoJEAqigArPBfJXjiQIAJCAiGyjVuPdmI5qXmRpgKZ9 TAAlcdfM0EUbBw0mamJcscJUbi9Um5n+FfDz6k+UjRceTTzO41O4Vfr60UA1o5t3 SKEZtmizh+jZSAXZm8hojCJC6GKz270XXlGDFkc3GJ65HNnb6KAFzftUAUHT35bv hLYB+urx6JU2rmo4uXMp9bRU3YSPcLMOg5v/jdpyeEarWWUR19WzDbaJix4XcxVG KgCgpojLjP6Y2Y1afzu4MZVShhmJzbpT/w2UGRiwvNtMWrm9ZHSaRMSgmd8KgYLd a3XZEManmvQYrJWvJ7Zsx9x+f56yvW47/lomOlqIK8xkmiLYIxCTm7RfvYJWjRY= =52Sp -----END PGP SIGNATURE----- -------------- next part -------------- An HTML attachment was scrubbed... URL: From gerard at eve-team.com Wed Feb 1 08:08:20 2012 From: gerard at eve-team.com (Gerard FENELON) Date: Wed, 01 Feb 2012 14:08:20 +0100 Subject: [rt-users] Set Subject in if/then clause In-Reply-To: <4F291C02.50006@sgul.ac.uk> References: <4F291C02.50006@sgul.ac.uk> Message-ID: <4F293944.8070700@eve-team.com> Hi Giuseppe what is your definition of "This doesn't seem to work" ? what is the (bad) behaviour that you are seeing ? Does an email get sent or not ? What is its subject line and content ? Anything in the logs ? Gerard On 2012-02-01 12:03, Giuseppe Sollazzo wrote: > Hi, > I'm trying to set up a different subject for different queues in the > same template (autoreply). This doesn't seem to work: > > { > if ($Ticket->QueueObj->Name eq 'Work Queue') { > Subject: Helpdesk Job Logged: {$Ticket->Subject} > "Output this"; > } > elsif ($Ticket->QueueObj->Name eq 'Task Queue') { > Subject: Support Job Logged: {$Ticket->Subject} > "Output that"; > } > else { > "Output other"; > } > } > > Is there a way to get this work? > > Thanks, > Giuseppe From gsollazz at sgul.ac.uk Wed Feb 1 08:18:31 2012 From: gsollazz at sgul.ac.uk (Giuseppe Sollazzo) Date: Wed, 01 Feb 2012 13:18:31 +0000 Subject: [rt-users] Set Subject in if/then clause In-Reply-To: <4F293944.8070700@eve-team.com> References: <4F291C02.50006@sgul.ac.uk> <4F293944.8070700@eve-team.com> Message-ID: <4F293BA7.3020505@sgul.ac.uk> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 01/02/12 13:08, Gerard FENELON wrote: > Hi Giuseppe > > what is your definition of "This doesn't seem to work" ? what is > the (bad) behaviour that you are seeing ? Does an email get sent or > not ? What is its subject line and content ? Anything in the logs > ? > > Gerard > Hi Gerard, I should have been clearer but I thought it was evident: the "Subject" line is not valid Perl, so you can't compile a script built that way. The question is if there's a standard way to add that directive (a non-Perl one) within the if-clause. Thanks, Giuseppe > On 2012-02-01 12:03, Giuseppe Sollazzo wrote: >> Hi, I'm trying to set up a different subject for different queues >> in the same template (autoreply). This doesn't seem to work: >> >> { if ($Ticket->QueueObj->Name eq 'Work Queue') { Subject: >> Helpdesk Job Logged: {$Ticket->Subject} "Output this"; } elsif >> ($Ticket->QueueObj->Name eq 'Task Queue') { Subject: Support Job >> Logged: {$Ticket->Subject} "Output that"; } else { "Output >> other"; } } >> >> Is there a way to get this work? >> >> Thanks, Giuseppe > > -------- RT Training Sessions > (http://bestpractical.com/services/training.html) * Boston March 5 > & 6, 2012 - -- ____________________________________ Giuseppe Sollazzo Senior Systems Analyst Computing Services Information Services St. George's, University Of London Cranmer Terrace London SW17 0RE Email: gsollazz at sgul.ac.uk Direct Dial: +44 20 8725 5160 Fax: +44 20 8725 3583 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJPKTumAAoJEAqigArPBfJXdDgH/A1YiWhrj9/ZutVcvP6pYr+4 dYEYG2kK+usaLVdl5hwsSKhITC7hBvEdHBrNocNbFNJERBMSq6+Uj4SJAWKF7K+c cqc69Uo13VjYjnVECSZVU/NhOG4Xiy0+zJssHmeZN+tDuN7OfBcF309zVfQceveH i/YBNsuc0yY8X9MVnLg4EgymNDZrezfGOJDbLlUDSeD9lDN9SeCvSH0jsRR3UPYq f2N0+88mQp+5KwtR/NMN88fX44uBUk3JOJobIrRPtv3Ti7spocXQBZ6JXP52e7Pi 0XFkbcI3JMTYa9voPKHHD7dxkk7/ToAILXIpRP4cIodlDTlGy7ZNnsLH1HZIhzI= =x7YS -----END PGP SIGNATURE----- From gerard at eve-team.com Wed Feb 1 08:30:59 2012 From: gerard at eve-team.com (Gerard FENELON) Date: Wed, 01 Feb 2012 14:30:59 +0100 Subject: [rt-users] Set Subject in if/then clause In-Reply-To: <4F293BA7.3020505@sgul.ac.uk> References: <4F291C02.50006@sgul.ac.uk> <4F293944.8070700@eve-team.com> <4F293BA7.3020505@sgul.ac.uk> Message-ID: <4F293E93.80602@eve-team.com> Try something like Subject: { if ($Ticket->QueueObj->Name eq 'Work Queue') { "Helpdesk Job Logged: {$Ticket->Subject} Output this"; } elsif ($Ticket->QueueObj->Name eq 'Task Queue') { "Support Job Logged: {$Ticket->Subject} Output that"; } else { "Output other"; } } In other words, your perl script should return a string. Gerard On 2012-02-01 14:18, Giuseppe Sollazzo wrote: > On 01/02/12 13:08, Gerard FENELON wrote: >> Hi Giuseppe >> >> what is your definition of "This doesn't seem to work" ? what is >> the (bad) behaviour that you are seeing ? Does an email get sent or >> not ? What is its subject line and content ? Anything in the logs >> ? >> >> Gerard > Hi Gerard, > > I should have been clearer but I thought it was evident: the "Subject" > line is not valid Perl, so you can't compile a script built that way. > > The question is if there's a standard way to add that directive (a > non-Perl one) within the if-clause. > > Thanks, > Giuseppe > >> On 2012-02-01 12:03, Giuseppe Sollazzo wrote: >>> Hi, I'm trying to set up a different subject for different queues >>> in the same template (autoreply). This doesn't seem to work: >>> >>> { if ($Ticket->QueueObj->Name eq 'Work Queue') { Subject: >>> Helpdesk Job Logged: {$Ticket->Subject} "Output this"; } elsif >>> ($Ticket->QueueObj->Name eq 'Task Queue') { Subject: Support Job >>> Logged: {$Ticket->Subject} "Output that"; } else { "Output >>> other"; } } >>> >>> Is there a way to get this work? >>> >>> Thanks, Giuseppe From gsollazz at sgul.ac.uk Wed Feb 1 08:46:21 2012 From: gsollazz at sgul.ac.uk (Giuseppe Sollazzo) Date: Wed, 01 Feb 2012 13:46:21 +0000 Subject: [rt-users] Set Subject in if/then clause In-Reply-To: <4F293E93.80602@eve-team.com> References: <4F291C02.50006@sgul.ac.uk> <4F293944.8070700@eve-team.com> <4F293BA7.3020505@sgul.ac.uk> <4F293E93.80602@eve-team.com> Message-ID: <4F29422D.8000600@sgul.ac.uk> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 01/02/12 13:30, Gerard FENELON wrote: > Try something like > > Subject: { if ($Ticket->QueueObj->Name eq 'Work Queue') { "Helpdesk > Job Logged: {$Ticket->Subject} Output this"; } elsif > ($Ticket->QueueObj->Name eq 'Task Queue') { "Support Job Logged: > {$Ticket->Subject} Output that"; } else { "Output other"; } } > > In other words, your perl script should return a string. > > Gerard Hi Gerard, I begin to understand. However, there is a problem with the {$Ticket->Subject} which I'm not sure I know how to deal with I get a subject line like: *Helpdesk Job Logged: {RT::Ticket=HASH(0x1034ec88)->Subject} Output that* which suggests the compiler is getting the object as a pointer rather than its content. Any idea? Thanks, Giuseppe - -- ____________________________________ Giuseppe Sollazzo Senior Systems Analyst Computing Services Information Services St. George's, University Of London Cranmer Terrace London SW17 0RE Email: gsollazz at sgul.ac.uk Direct Dial: +44 20 8725 5160 Fax: +44 20 8725 3583 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJPKUItAAoJEAqigArPBfJXlsMH/juz/RJQ6jq+UZoVGfsEk7G2 tpVIX1aUX8CSUq1YXd0I5VyULEqFAJechFJUi997b/LHp4CjtCPKHpNBpeE/TQW0 GsELSs623ie6HcVXY9LLkr5ZQNiugbYbIIBH067vJvf+JNg0B/cvkVI82nPbOAGI FxRk2Z1ZNr5wmzxbayngAnpjY4pV1ulGz/2Hiwla3LAmf1UbSfCQPFi5Ystqq+BZ /429yaA8UlFz5v94YaxqEUZukf7Q8Vc33rnVICRdEgg0aPec/CtHLxJNyBu/3fm/ RTyppExdD8wKvoQDKs9Iax7J6B+2FTLQpHp7QCv1goS51hd/o1Cij6D3wqgDT1E= =PwsE -----END PGP SIGNATURE----- -------------- next part -------------- An HTML attachment was scrubbed... URL: From gerard at eve-team.com Wed Feb 1 08:49:22 2012 From: gerard at eve-team.com (Gerard FENELON) Date: Wed, 01 Feb 2012 14:49:22 +0100 Subject: [rt-users] Set Subject in if/then clause In-Reply-To: <4F293E93.80602@eve-team.com> References: <4F291C02.50006@sgul.ac.uk> <4F293944.8070700@eve-team.com> <4F293BA7.3020505@sgul.ac.uk> <4F293E93.80602@eve-team.com> Message-ID: <4F2942E2.5060604@eve-team.com> I suspect my proposal is wrong Try instead Subject: { if ($Ticket->QueueObj->Name eq 'Work Queue') { "Helpdesk Job Logged: " . $Ticket->Subject . " Output this"; } elsif ($Ticket->QueueObj->Name eq 'Task Queue') { "Support Job Logged: " . $Ticket->Subject . " Output that"; } else { "Output other"; } } Gerard On 2012-02-01 14:30, Gerard FENELON wrote: > Try something like > > Subject: { if ($Ticket->QueueObj->Name eq 'Work Queue') > { "Helpdesk Job Logged: {$Ticket->Subject} Output this"; } > elsif ($Ticket->QueueObj->Name eq 'Task Queue') > { "Support Job Logged: {$Ticket->Subject} Output that"; } > else > { "Output other"; } > } > > In other words, your perl script should return a string. > > Gerard > > On 2012-02-01 14:18, Giuseppe Sollazzo wrote: >> On 01/02/12 13:08, Gerard FENELON wrote: >>> Hi Giuseppe >>> >>> what is your definition of "This doesn't seem to work" ? what is >>> the (bad) behaviour that you are seeing ? Does an email get sent or >>> not ? What is its subject line and content ? Anything in the logs >>> ? >>> >>> Gerard >> Hi Gerard, >> >> I should have been clearer but I thought it was evident: the "Subject" >> line is not valid Perl, so you can't compile a script built that way. >> >> The question is if there's a standard way to add that directive (a >> non-Perl one) within the if-clause. >> >> Thanks, >> Giuseppe >> >>> On 2012-02-01 12:03, Giuseppe Sollazzo wrote: >>>> Hi, I'm trying to set up a different subject for different queues >>>> in the same template (autoreply). This doesn't seem to work: >>>> >>>> { if ($Ticket->QueueObj->Name eq 'Work Queue') { Subject: >>>> Helpdesk Job Logged: {$Ticket->Subject} "Output this"; } elsif >>>> ($Ticket->QueueObj->Name eq 'Task Queue') { Subject: Support Job >>>> Logged: {$Ticket->Subject} "Output that"; } else { "Output >>>> other"; } } >>>> >>>> Is there a way to get this work? >>>> >>>> Thanks, Giuseppe > -------- > RT Training Sessions (http://bestpractical.com/services/training.html) > * Boston March 5 & 6, 2012 > -- Gerard FENELON Corporate Support Emulation& Verification Engineering 2 bis, voie La Cardon phone: +33 1 6453 2734 Parc Gutenberg fax: +33 1 6453 2740 91120 Palaiseau http://www.eve-team.com FRANCE -------------- next part -------------- An HTML attachment was scrubbed... URL: From matthias at leisi.net Wed Feb 1 08:50:55 2012 From: matthias at leisi.net (Matthias Leisi) Date: Wed, 1 Feb 2012 14:50:55 +0100 Subject: [rt-users] Prepared statement already exists... Message-ID: Hello, I got some support debugging my "prepared statement already exists" issue with RT 4.0.4 on #rt, but I believe it is more efficient on the mailing list. I'm not fully sure whether this is an issue in RT, in Postgresql or DBI, or something completely different, but I'll try to start at RT. We recently upgraded to RT 4.0.4 (using Postgresql 8.4 as in the previous RT 3.8.7, see upgrade steps below). Since then, we have the "prepared statement already exists" error; this results in RT being inaccessible. We currently see no other option than to restart the DB server (or issue "select * from pg_terminate_backend();" as super-user within Postgres). The error condition pops up about once a day, after a couple of hours of usage. The usage is minimal (usually, only a handful of transactions on a single-digit tickets are executed each day). On the RT side, the error usually looks like | [Mon Jan 30 22:58:00 2012] [warning]: DBD::Pg::st execute failed: ERROR: prepared statement | "dbdpg_p27347_5" already exists at /usr/lib/perl5/site_perl/5.12.1/Apache/Session/Store/DBI.pm | line 44. (/usr/lib/perl5/site_perl/5.12.1/Apache/Session/Store/DBI.pm:44) On the Postfix side: | 2012-01-31 00:18:31 CET rt4 rt_user 4f270fbe.633d ERROR: prepared statement "dbdpg_p27347_5" already exists "27347" is always equal to the PID of the httpd parent process on the webserver, which obviously is used as an identifier for the prepared statement, together with a seemingly increasing counter. I have also seen another error messages mixed in with "already exists": | 2012-01-29 22:46:09 CET rt4 rt_user 4f25be1e.304 ERROR: bind message supplies 2 parameters, | but prepared statement "dbdpg_p27347_5" requires 1 And on the Apache side: | [Sun Jan 29 21:46:09 2012] [warning]: DBD::Pg::st execute failed: ERROR: bind message supplies | 2 parameters, but prepared statement "dbdpg_p27347_5" requires 1 at | usr/lib/perl5/site_perl/5.12.1/DBIx/SearchBuilder/Handle.pm line 509. If the error condition pops up, the mail gateway is also affected (with the same error message). Things I tried (partially based on suggestions on #rt), unfortunately without success: * Upgrade DBI-related stuff (done on both machines, as non-RT stuff could potentially profit on both ends) * Upgrade Postgresql to latest supported release * "SetHandler perl-script" instead of "SetHandler modperl" Some setup information: The webserver / RT installation is on one physical box (together with other web apps), the database sits on a different physical box (sharing a Postgres instance with other databases). This backend access runs over IPv6 (if this makes a difference). * openSUSE 11.3 (x86_64) on both systems. * perl -MDBI -le 'print $DBI::VERSION' => 1.609 on both systems. * perl --version => 5.12.1 on both systems * psql (server, clients, lib etc) is on version 8.4.7 on both systems. RT_SiteConfig is set to "Set($WebExternalAuth , 1);"., RT4 lives in subdirectory /rt4, Basic Auth happens on the root directory. Everything runs over https. There is only a small number of users who access RT at all, interaction with external users happens via incoming and outgoing email. Upgrade steps from 3.8.7 to 4.0.4: | Backup RT3 database: postgres at db:/home/backup> | /usr/bin/pg_dump -Ft rt3 > /home/backup/psqldbs/rt3-pre-rt4-upgrade.tar | Create new RT4 database: postgres at db:~> createdb rt4 | Restore RT4 DB from RT3 dump: postgres at db:~> pg_restore | --dbname=rt4 --verbose /home/backup/psqldbs/rt3-pre-rt4-upgrade.tar | wget http://download.bestpractical.com/pub/rt/release/rt-4.0.4.tar.gz | tar xvf rt-4.0.4.tar.gz | cd rt-4.0.4/ | ./configure prefix= --enable-gpg --with-web-user=wwwrun | --with-web-group=www --with-db-type=Pg --with-db-host=db --with-db-rt-pass= | make testdeps and make fixdeps (repeated) | make upgrade | Add a line for rt_user access to rt4 to | postgres at db:/var/lib/pgsql/data/pg_hba.conf | make upgrade-database | Enter RT version you're upgrading from: 3.8.7 I don't want to spam the (public) group with the output of Admin/Tools/Configuration.html, but I can put it somewhere if it would help diagnosing the issue. I'm honestly at a loss on how to identify the root cause of this. Any hints appreciated, and I'm more than happy to provide more config/setup information or perform additional tests. Since the problem can not be directly reproduced, but only observed over about 24 hours, it is difficult to judge whether a change actually improved things, or was irrelevant, but I'll do my best ;) Thanks, -- Matthias From gsollazz at sgul.ac.uk Wed Feb 1 08:55:34 2012 From: gsollazz at sgul.ac.uk (Giuseppe Sollazzo) Date: Wed, 01 Feb 2012 13:55:34 +0000 Subject: [rt-users] Set Subject in if/then clause In-Reply-To: <4F2942E2.5060604@eve-team.com> References: <4F291C02.50006@sgul.ac.uk> <4F293944.8070700@eve-team.com> <4F293BA7.3020505@sgul.ac.uk> <4F293E93.80602@eve-team.com> <4F2942E2.5060604@eve-team.com> Message-ID: <4F294456.6070606@sgul.ac.uk> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Gerard, many thanks - that worked. I really need to refresh my Perl... Cheers, Giuseppe On 01/02/12 13:49, Gerard FENELON wrote: > I suspect my proposal is wrong Try instead > > Subject: { if ($Ticket->QueueObj->Name eq 'Work Queue') { "Helpdesk > Job Logged: " . $Ticket->Subject . " Output this"; } elsif > ($Ticket->QueueObj->Name eq 'Task Queue') { "Support Job Logged: " > . $Ticket->Subject . " Output that"; } else { "Output other"; } } > > Gerard - -- ____________________________________ Giuseppe Sollazzo Senior Systems Analyst Computing Services Information Services St. George's, University Of London Cranmer Terrace London SW17 0RE Email: gsollazz at sgul.ac.uk Direct Dial: +44 20 8725 5160 Fax: +44 20 8725 3583 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJPKURWAAoJEAqigArPBfJX1IsIAJAdOa4b89lPwNIj5mfInbs6 ItG4KHAA8CbzrUQ22bcNxO7JS1UaVnoRb+gZZkyDy5r4hiyuHu7BjBE5EscwF2So /Zm0Q9iX7DIGorIHNzfiDxW9qkLE8aCjLOMMDxaG//RMIpmzPgtHXvzNc2bjYFIM 2V5IxZoC/tVdrpDUsKnyiytWQWMGI8nn+rSejr0xaZV/zI7wvXaAdEPPZdA94N20 GIP8JGdGF4NhGLBPm+8Vvshw/k3cKV2WDEze2yNhY3z0uHmGpi2ECjkH8QuuQOZU BzetFR8VzAi4JElb05PwKkT+BKmOnM1YeOizXaao3JnWJ6Gg/Jcu5hEZZlBWUsc= =YrLQ -----END PGP SIGNATURE----- -------------- next part -------------- An HTML attachment was scrubbed... URL: From matthias at leisi.net Wed Feb 1 09:03:05 2012 From: matthias at leisi.net (Matthias Leisi) Date: Wed, 1 Feb 2012 15:03:05 +0100 Subject: [rt-users] Prepared statement already exists... In-Reply-To: References: Message-ID: One addition: > * perl -MDBI -le 'print $DBI::VERSION' => 1.609 on both systems. DBD::Pg is at 2.18.1, which seems to be the most recent released version according to http://search.cpan.org/dist/DBD-Pg/Pg.pm -- Matthias From bart at pleh.info Wed Feb 1 09:49:45 2012 From: bart at pleh.info (Bart) Date: Wed, 1 Feb 2012 15:49:45 +0100 Subject: [rt-users] view agent attached file/image in a reply/comment In-Reply-To: <4F291D00.1020502@nlcom.nl> References: <4F291D00.1020502@nlcom.nl> Message-ID: Add these options to your RT_SiteConfig.pm: # --- > # HTML Attachments > # --- > Set($TrustHTMLAttachments, 1); > Set($PreferRichText, 1); -- Bart Op 1 februari 2012 12:07 schreef Mayk Backus het volgende: > Hi list, > > I noticed that when a reply is made on a ticket by one of our agents, > and there's an attachement i can't view this. For example when someone > sends a screenshot of something, i can see the file is attached when > downloading the it with headers , but is there a way to view the > attachment (image, etc) inside RT ? > > thanx > > Greets > > Mayk Backus > > > -------- > RT Training Sessions (http://bestpractical.com/services/training.html) > * Boston March 5 & 6, 2012 > -------------- next part -------------- An HTML attachment was scrubbed... URL: From bart at pleh.info Wed Feb 1 10:05:28 2012 From: bart at pleh.info (Bart) Date: Wed, 1 Feb 2012 16:05:28 +0100 Subject: [rt-users] Help installing RT4 on Ubuntu In-Reply-To: <8CEAE66CC35259E-1B14-1DEE4@webmail-m076.sysops.aol.com> References: <8CEAA636B3B3E9B-2444-63944@webmail-d182.sysops.aol.com> <20120126214009.GL95897@jibsheet.com> <8CEAD9C927D0CBE-1B14-16399@webmail-m076.sysops.aol.com> <20120130202502.GU95897@jibsheet.com> <8CEADB34E8A73CF-1B14-17819@webmail-m076.sysops.aol.com> <20120130233238.GV95897@jibsheet.com> <8CEAE66CC35259E-1B14-1DEE4@webmail-m076.sysops.aol.com> Message-ID: Hi, Are you trying to do the source installation on Ubuntu? (btw, which version of Ubuntu?) At least, it looks that way. If the above is what you've done then I really don't understand the external auth errors your getting, a clean installation doesn't contain external auth... My advise would be to make sure you have a clean installation up and running first before playing with plugins (theres really no point). Also, if you have the latest Ubuntu server then you can also install RT using Aptitude ( aptitude search request-tracker4 ). I assume you've documented all your steps up to this point, could you show us exactly what you've done? (you've installed plugins, so undo that to begin with or at least turn off the plugins in the RT_SiteConfig). -- Bart Op 31 januari 2012 20:36 schreef Borngunners het volgende: > Okay. Now I have try to reinstall RT again and so far these are the > configurations I have: > > root at helpdesks:/var/tmp/rt-4.0.4# make initialize-database > /usr/bin/perl -I/opt/rt4/local/lib -I/opt/rt4/lib sbin/rt-setup-database > --action init --prompt-for-dba-password > In order to create or update your RT database, this script needs to > connect to your mysql instance on localhost as root > Please specify that user's database password below. If the user has no > database > password, just press return. > > Password: > Working with: > Type: mysql > Host: localhost > Name: rt4 > User: rtuser > DBA: root > Now creating a mysql database rt4 for RT. > Done. > Now populating database schema. > Done. > Now inserting database ACLs. > Granting access to rtuser@'localhost' on rt4. > Done. > Now inserting RT core system objects. > Done. > [Tue Jan 31 19:32:37 2012] [warning]: The ActiveStatus configuration has > been replaced by the new Lifecycles > functionality. You should set the 'active' property of the 'default' > lifecycle and add transition rules; see RT_Config.pm for documentation. > (/var/tmp/rt-4.0.4/sbin/../lib/RT/Config.pm:766) > Now inserting data. > [Tue Jan 31 19:32:37 2012] [info]: > RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Comments: > SuperUser, Disabled: 0, EmailAddress: root at localhost, Gecos: root, Name: > root, Password: password, Privileged: 1, RealName: Enoch Root > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:536) > [Tue Jan 31 19:32:37 2012] [error]: Could not set user info > (/var/tmp/rt-4.0.4/sbin/../lib/RT/Handle.pm:826) > [Tue Jan 31 19:32:38 2012] [error]: Unable to load user: root : Couldn't > find row (/var/tmp/rt-4.0.4/sbin/../lib/RT/Handle.pm:956) > Done inserting data. > Done. > > > Apache configuration: > > ErrorLog /opt/rt4/var/log/apache2.error > TransferLog /opt/rt4/var/log/apache2.access > # LogLevel debug > > AddDefaultCharset UTF-8 > > DocumentRoot "/opt/rt4/share/html" > > Order allow,deny > Allow from all > > SetHandler perl-script > > PerlResponseHandler Plack::Handler::Apache2 > PerlSetVar psgi_app /opt/rt4/sbin/rt-server > > > > use Plack::Handler::Apache2; > Plack::Handler::Apache2->preload("/opt/rt4/sbin/rt-server"); > > > > > thanks, > > > -----Original Message----- > From: Kevin Falcone > To: rt-users > Sent: Mon, Jan 30, 2012 6:32 pm > Subject: Re: [rt-users] Help installing RT4 on Ubuntu > > On Mon, Jan 30, 2012 at 05:11:54PM -0500, Borngunners wrote: > > Hello Falcone, > > I have tried the config as stated. This is the message I receive after > starting apche: > > root at helpdesks:/etc/apache2# /etc/init.d/apache2 start > > * Starting web server > > apache2 > > [Mon Jan 30 22:08:01 2012] [warning]: DBD::mysql::st execute failed: Table > 'rt4.Users' doesn't > > exist at /usr/local/share/perl/5.10.1/DBIx/SearchBuilder/Handle.pm line > 587. > > (/usr/local/share/perl/5.10.1/DBIx/SearchBuilder/Handle.pm:587) > > You don't appear to have created the RT database. > > When you said > > > > On Thu, Jan 26, 2012 at 12:02:28PM -0500, Borngunners wrote: > > > > I have installed RT 4 on ubuntu and have tested the web after > > What did you do to install RT? It'd be great if you looked through > the README and compared the steps to the notes about what you did. > > -kevin > > -------- > RT Training Sessions (http://bestpractical.com/services/training.html) > * Boston ? March 5 & 6, 2012 > > > -------- > RT Training Sessions (http://bestpractical.com/services/training.html) > * Boston ? March 5 & 6, 2012 > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jblaine at kickflop.net Wed Feb 1 11:43:29 2012 From: jblaine at kickflop.net (Jeff Blaine) Date: Wed, 01 Feb 2012 11:43:29 -0500 Subject: [rt-users] RT 4 "Approvals"? Message-ID: <4F296BB1.9030104@kickflop.net> Where might I find information on the per-queue setting for "Workflow" which has a choice called "Approval" What is the idea? Where is it explained? How does one make use of it? I converted a test queue to use the "Approval" workflow, submitted a ticket, resolved the ticket, and saw nothing out of the ordinary. It's quite possible this has been around for awhile, but we made the jump from 3.4.4 to 4.0.4. From falcone at bestpractical.com Wed Feb 1 13:53:34 2012 From: falcone at bestpractical.com (Kevin Falcone) Date: Wed, 1 Feb 2012 13:53:34 -0500 Subject: [rt-users] RT Bounce messages In-Reply-To: <7e05c4cd-2b99-437b-8a1b-fd1517ffddb9@li289-212> References: <7e05c4cd-2b99-437b-8a1b-fd1517ffddb9@li289-212> Message-ID: <20120201185334.GZ95897@jibsheet.com> On Tue, Jan 31, 2012 at 09:30:44PM -0000, Tim Dunphy wrote: > Hello list! > > I have an RT setup that functions pretty nicely if I do say so myself! However whenever a ticket is generated or a reply/correspondence action is taken by RT I see messages similar to this one sent to my email address (I'm the $OwnerEmail): > > RT Bounce: [Operations #99] set up nagios monitoring for snmp-controller on bpapp01/bpapp02 > > And in the body of the email I see this message: > > RT thinks this message may be a bounce > > As an attachment I see a text file as an attachment that's named something like ATT00001.[4].txt > > And in this attachment I'll see the contents of the ticket...i.e. > > --------------------------- > > http://rt.example.com/helpdesk/Ticket/Display.html?id=84 > This is a comment. It is not sent to the Requestor(s): > > The nagios instance in EC2 is running and monitoring localhost. > [redacted] > > > ----------------------------- > > > Below I'm including my RT_SiteConfig.pm file.. I would like to be familiar enough with RT to be able to select the most important bits for your perusal and I apologize in advance for the inconvenience... This looks like an RT_Config.pm file. Have you been editing RT_Config.pm directly or did you copy all of RT_Config.pm to RT_SiteConfig.pm? Neither of those are recommended and it makes following what is going on really hard. Usually this means RT was configured to send mail back into itself and something has a X-RT-Loop-Prevention header. Often this is a misconfigured Template or a too-broad RTAddressRegexp setting. -kevin > ------------------------------------ > > > > # RT was configured with: > # > # $ ./configure --enable-graphviz --enable-gd --enable-gpg --with-db-host=localhost --with-db-rt-host=localhost --with-db-dba=admin --with-db-rt-user=admin --with-db-rt-pass=Duk30fZh0u --with-web-user=apache --with-web-group=apache --with-apachectl /usr/sbin/apachectl --localstatedir=/var/rt4 --sysconfdir=/etc/rt4 --prefix=/usr/local/rt4 --exec-prefix=/usr/local/sbin > # > > package RT; > > ############################# WARNING ############################# > # # > # NEVER EDIT RT_Config.pm ! # > # # > # Instead, copy any sections you want to change to # > # RT_SiteConfig.pm and edit them there. Otherwise, # > # your changes will be lost when you upgrade RT. # > # # > ############################# WARNING ############################# > > =head1 NAME > > RT::Config > > =head1 Base configuration > > =over 4 > > =item C<$rtname> > > C<$rtname> is the string that RT will look for in mail messages to > figure out what ticket a new piece of mail belongs to. > > Your domain name is recommended, so as not to pollute the namespace. > Once you start using a given tag, you should probably never change it; > otherwise, mail for existing tickets won't get put in the right place. > > =cut > > Set($rtname, "mlb.com"); > > =item C<$Organization> > > You should set this to your organization's DNS domain. For example, > I or I. It is used by the linking > interface to guarantee that ticket URIs are unique and easy to > construct. Changing it after you have created tickets in the system > will B all existing ticket links! > > =cut > > Set($Organization, "mlb.com"); > > =item C<$CorrespondAddress>, C<$CommentAddress> > > RT is designed such that any mail which already has a ticket-id > associated with it will get to the right place automatically. > > C<$CorrespondAddress> and C<$CommentAddress> are the default addresses > that will be listed in From: and Reply-To: headers of correspondence > and comment mail tracked by RT, unless overridden by a queue-specific > address. They should be set to email addresses which have been > configured as aliases for F. > > =cut > > Set($CorrespondAddress, 'rt at mm3.mlbam.com'); > > Set($CommentAddress, 'rt-comment at mm3.mlbam.com'); > > =item C<$WebDomain> > > Domain name of the RT server, e.g. 'www.example.com'. It should not > contain anything except the server name. > > =cut > > Set($WebDomain, "rt.mm3.mlbam.com"); > > =item C<$WebPort> > > If we're running as a superuser, run on port 80. Otherwise, pick a > high port for this user. > > 443 is default port for https protocol. > > =cut > > Set($WebPort, 80);# + ($< * 7274) % 32766 + ($< && 1024)); > > =item C<$WebPath> > > If you're putting the web UI somewhere other than at the root of your > server, you should set C<$WebPath> to the path you'll be serving RT > at. > > C<$WebPath> requires a leading / but no trailing /, or it can be > blank. > > In most cases, you should leave C<$WebPath> set to "" (an empty > value). > > =cut > > Set($WebPath, "/helpdesk"); > > =item C<$Timezone> > > C<$Timezone> is the default timezone, used to convert times entered by > users into GMT, as they are stored in the database, and back again; > users can override this. It should be set to a timezone recognized by > your server. > > =cut > > Set($Timezone, "US/Eastern"); > > =item C<@Plugins> > > Set C<@Plugins> to a list of external RT plugins that should be > enabled (those plugins have to be previously downloaded and > installed). > > Example: > > C > > =cut > > Set(@Plugins, qw(RT::Authen::ExternalAuth)); > > =back > > > > > =head1 Database connection > > =over 4 > > =item C<$DatabaseType> > > Database driver being used; case matters. Valid types are "mysql", > "Oracle" and "Pg". > > =cut > > Set($DatabaseType, "mysql"); > > =item C<$DatabaseHost>, C<$DatabaseRTHost> > > The domain name of your database server. If you're running MySQL and > on localhost, leave it blank for enhanced performance. > > C is the fully-qualified hostname of your RT server, > for use in granting ACL rights on MySQL. > > =cut > > Set($DatabaseHost, "localhost"); > Set($DatabaseRTHost, "localhost"); > > =item C<$DatabasePort> > > The port that your database server is running on. Ignored unless it's > a positive integer. It's usually safe to leave this blank; RT will > choose the correct default. > > =cut > > Set($DatabasePort, ""); > > =item C<$DatabaseUser> > > The name of the user to connect to the database as. > > =cut > > Set($DatabaseUser, "admin"); > > =item C<$DatabasePassword> > > The password the C<$DatabaseUser> should use to access the database. > > =cut > > Set($DatabasePassword, q{Duk30fZh0u}); > > =item C<$DatabaseName> > > The name of the RT database on your database server. For Oracle, the > SID and database objects are created in C<$DatabaseUser>'s schema. > > =cut > > Set($DatabaseName, q{rt4}); > > =item C<$DatabaseRequireSSL> > > If you're using PostgreSQL and have compiled in SSL support, set > C<$DatabaseRequireSSL> to 1 to turn on SSL communication with the > database. > > =cut > > Set($DatabaseRequireSSL, undef); > > =back > > > > > =head1 Logging > > The default is to log anything except debugging information to syslog. > Check the L POD for information about how to get things > by syslog, mail or anything else, get debugging info in the log, etc. > > It might generally make sense to send error and higher by email to > some administrator. If you do this, be careful that this email isn't > sent to this RT instance. Mail loops will generate a critical log > message. > > =over 4 > > =item C<$LogToSyslog>, C<$LogToScreen> > > The minimum level error that will be logged to the specific device. > From lowest to highest priority, the levels are: > > debug info notice warning error critical alert emergency > > =cut > > Set($LogToSyslog, "info"); > Set($LogToScreen, "info"); > > =item C<$LogToFile>, C<$LogDir>, C<$LogToFileNamed> > > Logging to a standalone file is also possible, but note that the file > should needs to both exist and be writable by all direct users of the > RT API. This generally includes the web server and whoever > rt-crontool runs as. Note that rt-mailgate and the RT CLI go through > the webserver, so their users do not need to have write permissions to > this file. If you expect to have multiple users of the direct API, > Best Practical recommends using syslog instead of direct file logging. > > =cut > > Set($LogToFile, undef); > Set($LogDir, q{var/log}); > Set($LogToFileNamed, "rt.log"); #log to rt.log > > =item C<$LogStackTraces> > > If set to a log level then logging will include stack traces for > messages with level equal to or greater than specified. > > NOTICE: Stack traces include parameters supplied to functions or > methods. It is possible for stack trace logging to reveal sensitive > information such as passwords or ticket content in your logs. > > =cut > > Set($LogStackTraces, ""); > > =item C<@LogToSyslogConf> > > On Solaris or UnixWare, set to ( socket => 'inet' ). Options here > override any other options RT passes to L. > Other interesting flags include facility and logopt. (See the > L documentation for more information.) (Maybe > ident too, if you have multiple RT installations.) > > =cut > > Set(@LogToSyslogConf, ()); > > =back > > > > =head1 Incoming mail gateway > > =over 4 > > =item C<$EmailSubjectTagRegex> > > This regexp controls what subject tags RT recognizes as its own. If > you're not dealing with historical C<$rtname> values, you'll likely > never have to change this configuration. > > Be B with it. Note that it overrides C<$rtname> for > subject token matching and that you should use only "non-capturing" > parenthesis grouping. For example: > > C > > and NOT > > C > > The setting below would make RT behave exactly as it does without the > setting enabled. > > =cut > > # Set($EmailSubjectTagRegex, qr/\Q$rtname\E/i ); > > =item C<$OwnerEmail> > > C<$OwnerEmail> is the address of a human who manages RT. RT will send > errors generated by the mail gateway to this address. This address > should I be an address that's managed by your RT instance. > > =cut > > Set($OwnerEmail, 'tim.dunphy at example.com'); > > =item C<$LoopsToRTOwner> > > If C<$LoopsToRTOwner> is defined, RT will send mail that it believes > might be a loop to C<$OwnerEmail>. > > =cut > > Set($LoopsToRTOwner, 1); > > =item C<$StoreLoops> > > If C<$StoreLoops> is defined, RT will record messages that it believes > to be part of mail loops. As it does this, it will try to be careful > not to send mail to the sender of these messages. > > =cut > > Set($StoreLoops, undef); > > =item C<$MaxAttachmentSize> > > C<$MaxAttachmentSize> sets the maximum size (in bytes) of attachments > stored in the database. > > For MySQL and Oracle, we set this size to 10 megabytes. If you're > running a PostgreSQL version earlier than 7.1, you will need to drop > this to 8192. (8k) > > =cut > > > Set($MaxAttachmentSize, 10_000_000); > > =item C<$TruncateLongAttachments> > > If this is set to a non-undef value, RT will truncate attachments > longer than C<$MaxAttachmentSize>. > > =cut > > Set($TruncateLongAttachments, undef); > > =item C<$DropLongAttachments> > > If this is set to a non-undef value, RT will silently drop attachments > longer than C. C<$TruncateLongAttachments>, above, > takes priority over this. > > =cut > > Set($DropLongAttachments, undef); > > =item C<$RTAddressRegexp> > > C<$RTAddressRegexp> is used to make sure RT doesn't add itself as a > ticket CC if C<$ParseNewMessageForTicketCcs>, above, is enabled. It > is important that you set this to a regular expression that matches > all addresses used by your RT. This lets RT avoid sending mail to > itself. It will also hide RT addresses from the list of "One-time Cc" > and Bcc lists on ticket reply. > > If you have a number of addresses configured in your RT database > already, you can generate a naive first pass regexp by using: > > perl etc/upgrade/generate-rtaddressregexp > > If left blank, RT will generate a regexp for you, based on your > comment and correspond address settings on your queues; this comes at > a small cost in start-up speed. > > =cut > > Set($RTAddressRegexp, undef); > > =item C<$CanonicalizeEmailAddressMatch>, C<$CanonicalizeEmailAddressReplace> > > RT provides functionality which allows the system to rewrite incoming > email addresses. In its simplest form, you can substitute the value > in C for the value in > C (These values are passed to the > C subroutine in F) > > By default, that routine performs a C on any > address passed to it. > > =cut > > # Set($CanonicalizeEmailAddressMatch, '@subdomain\.example\.com$'); > # Set($CanonicalizeEmailAddressReplace, '@example.com'); > > =item C<$CanonicalizeOnCreate> > > Set this to 1 and the create new user page will use the values that > you enter in the form but use the function CanonicalizeUserInfo in > F > > =cut > > Set($CanonicalizeOnCreate, 0); > > =item C<$ValidateUserEmailAddresses> > > If C<$ValidateUserEmailAddresses> is 1, RT will refuse to create > users with an invalid email address (as specified in RFC 2822) or with > an email address made of multiple email addresses. > > =cut > > Set($ValidateUserEmailAddresses, undef); > > =item C<@MailPlugins> > > C<@MailPlugins> is a list of authentication plugins for > L to use; see L > > =cut > > =item C<$UnsafeEmailCommands> > > C<$UnsafeEmailCommands>, if set to 1, enables 'take' and 'resolve' > as possible actions via the mail gateway. As its name implies, this > is very unsafe, as it allows email with a forged sender to possibly > resolve arbitrary tickets! > > =cut > > =item C<$ExtractSubjectTagMatch>, C<$ExtractSubjectTagNoMatch> > > The default "extract remote tracking tags" scrip settings; these > detect when your RT is talking to another RT, and adjust the subject > accordingly. > > =cut > > Set($ExtractSubjectTagMatch, qr/\[.+? #\d+\]/); > Set($ExtractSubjectTagNoMatch, ( ${RT::EmailSubjectTagRegex} > ? qr/\[(?:${RT::EmailSubjectTagRegex}) #\d+\]/ > : qr/\[\Q$RT::rtname\E #\d+\]/)); > > =back > > Set($SendmailPath , "/usr/local/rt4/bin/msmtp_wrapper"); > > > > =head1 Outgoing mail > > =over 4 > > =item C<$MailCommand> > > C<$MailCommand> defines which method RT will use to try to send mail. > We know that 'sendmailpipe' works fairly well. If 'sendmailpipe' > doesn't work well for you, try 'sendmail'. Other options are 'smtp' > or 'qmail'. > > Note that you should remove the '-t' from C<$SendmailArguments> if you > use 'sendmail' rather than 'sendmailpipe' > > For testing purposes, or to simply disable sending mail out into the > world, you can set C<$MailCommand> to 'testfile' which writes all mail > to a temporary file. RT will log the location of the temporary file > so you can extract mail from it afterward. > > =cut > > Set($MailCommand, "sendmailpipe"); > > =item C<$SetOutgoingMailFrom> > > C<$SetOutgoingMailFrom> tells RT to set the sender envelope to the > Correspond mail address of the ticket's queue. > > Warning: If you use this setting, bounced mails will appear to be > incoming mail to the system, thus creating new tickets. > > =cut > > Set($SetOutgoingMailFrom, 0); > > =item C<$OverrideOutgoingMailFrom> > > C<$OverrideOutgoingMailFrom> is used for overwriting the Correspond > address of the queue as it is handed to sendmail -f. This helps force > the From_ header away from www-data or other email addresses that show > up in the "Sent by" line in Outlook. > > The option is a hash reference of queue name to email address. If > there is no ticket involved, then the value of the C key will > be used. > > This option is irrelevant unless C<$SetOutgoingMailFrom> is set. > > =cut > > Set($OverrideOutgoingMailFrom, { > # 'Default' => 'admin at rt.example.com', > # 'General' => 'general at rt.example.com', > }); > > =item C<$DefaultMailPrecedence> > > C<$DefaultMailPrecedence> is used to control the default Precedence > level of outgoing mail where none is specified. By default it is > C, but if you only send mail to your staff, you may wish to > change it. > > Note that you can set the precedence of individual templates by > including an explicit Precedence header. > > If you set this value to C then we do not set a default > Precedence header to outgoing mail. However, if there already is a > Precedence header, it will be preserved. > > =cut > > Set($DefaultMailPrecedence, "bulk"); > > =item C<$DefaultErrorMailPrecedence> > > C<$DefaultErrorMailPrecedence> is used to control the default > Precedence level of outgoing mail that indicates some kind of error > condition. By default it is C, but if you only send mail to your > staff, you may wish to change it. > > If you set this value to C then we do not add a Precedence > header to error mail. > > =cut > > Set($DefaultErrorMailPrecedence, "bulk"); > > =item C<$UseOriginatorHeader> > > C<$UseOriginatorHeader> is used to control the insertion of an > RT-Originator Header in every outgoing mail, containing the mail > address of the transaction creator. > > =cut > > Set($UseOriginatorHeader, 1); > > =item C<$UseFriendlyFromLine> > > By default, RT sets the outgoing mail's "From:" header to "SenderName > via RT". Setting C<$UseFriendlyFromLine> to 0 disables it. > > =cut > > Set($UseFriendlyFromLine, 1); > > =item C<$FriendlyFromLineFormat> > > C format of the friendly 'From:' header; its arguments are > SenderName and SenderEmailAddress. > > =cut > > Set($FriendlyFromLineFormat, "\"%s via RT\" <%s>"); > > =item C<$UseFriendlyToLine> > > RT can optionally set a "Friendly" 'To:' header when sending messages > to Ccs or AdminCcs (rather than having a blank 'To:' header. > > This feature DOES NOT WORK WITH SENDMAIL[tm] BRAND SENDMAIL. If you > are using sendmail, rather than postfix, qmail, exim or some other > MTA, you _must_ disable this option. > > =cut > > Set($UseFriendlyToLine, 0); > > =item C<$FriendlyToLineFormat> > > C format of the friendly 'To:' header; its arguments are > WatcherType and TicketId. > > =cut > > Set($FriendlyToLineFormat, "\"%s of ". RT->Config->Get('rtname') ." Ticket #%s\":;"); > > =item C<$NotifyActor> > > By default, RT doesn't notify the person who performs an update, as > they already know what they've done. If you'd like to change this > behavior, Set C<$NotifyActor> to 1 > > =cut > > Set($NotifyActor, 0); > > =item C<$RecordOutgoingEmail> > > By default, RT records each message it sends out to its own internal > database. To change this behavior, set C<$RecordOutgoingEmail> to 0 > > =cut > > Set($RecordOutgoingEmail, 1); > > =item C<$VERPPrefix>, C<$VERPDomain> > > Setting these options enables VERP support > L. > > Uncomment the following two directives to generate envelope senders > of the form C<${VERPPrefix}${originaladdress}@${VERPDomain}> > (i.e. rt-jesse=fsck.com at rt.example.com ). > > This currently only works with sendmail and sendmailpipe. > > =cut > > # Set($VERPPrefix, "rt-"); > # Set($VERPDomain, $RT::Organization); > > > =item C<$ForwardFromUser> > > By default, RT forwards a message using queue's address and adds RT's > tag into subject of the outgoing message, so recipients' replies go > into RT as correspondents. > > To change this behavior, set C<$ForwardFromUser> to 1 and RT > will use the address of the current user and remove RT's subject tag. > > =cut > > Set($ForwardFromUser, 0); > > =back > > =head2 Email dashboards > > =over 4 > > =item C<$DashboardAddress> > > The email address from which RT will send dashboards. If none is set, > then C<$OwnerEmail> will be used. > > =cut > > Set($DashboardAddress, ''); > > =item C<$DashboardSubject> > > Lets you set the subject of dashboards. Arguments are the frequency (Daily, > Weekly, Monthly) of the dashboard and the dashboard's name. > > =cut > > Set($DashboardSubject, "%s Dashboard: %s"); > > =item C<@EmailDashboardRemove> > > A list of regular expressions that will be used to remove content from > mailed dashboards. > > =cut > > Set(@EmailDashboardRemove, ()); > > =back > > > > =head2 Sendmail configuration > > These options only take effect if C<$MailCommand> is 'sendmail' or > 'sendmailpipe' > > =over 4 > > =item C<$SendmailArguments> > > C<$SendmailArguments> defines what flags to pass to C<$SendmailPath> > If you picked 'sendmailpipe', you MUST add a -t flag to > C<$SendmailArguments> These options are good for most sendmail > wrappers and work-a-likes. > > These arguments are good for sendmail brand sendmail 8 and newer: > C > > =cut > > Set($SendmailArguments, "-oi -t"); > > > =item C<$SendmailBounceArguments> > > C<$SendmailBounceArguments> defines what flags to pass to C<$Sendmail> > assuming RT needs to send an error (i.e. bounce). > > =cut > > Set($SendmailBounceArguments, '-f "<>"'); > > =item C<$SendmailPath> > > If you selected 'sendmailpipe' above, you MUST specify the path to > your sendmail binary in C<$SendmailPath>. > > =cut > > Set($SendmailPath, "/usr/sbin/sendmail"); > > > =back > > =head2 SMTP configuration > > These options only take effect if C<$MailCommand> is 'smtp' > > =over 4 > > =item C<$SMTPServer> > > C<$SMTPServer> should be set to the hostname of the SMTP server to use > > =cut > > Set($SMTPServer, undef); > > =item C<$SMTPFrom> > > C<$SMTPFrom> should be set to the 'From' address to use, if not the > email's 'From' > > =cut > > Set($SMTPFrom, undef); > > =item C<$SMTPDebug> > > C<$SMTPDebug> should be set to 1 to debug SMTP mail sending > > =cut > > Set($SMTPDebug, 0); > > =back > > =head2 Other mailers > > =over 4 > > =item C<@MailParams> > > C<@MailParams> defines a list of options passed to $MailCommand if it > is not 'sendmailpipe', 'sendmail', or 'smtp' > > =cut > > Set(@MailParams, ()); > > =back > > > =head1 Web interface > > =over 4 > > =item C<$WebDefaultStylesheet> > > This determines the default stylesheet the RT web interface will use. > RT ships with several themes by default: > > web2 The default layout for RT 3.8 > aileron The default layout for RT 4.0 > ballard Theme which doesn't rely on JavaScript for menuing > > This value actually specifies a directory in F > from which RT will try to load the file main.css (which should @import > any other files the stylesheet needs). This allows you to easily and > cleanly create your own stylesheets to apply to RT. This option can > be overridden by users in their preferences. > > =cut > > Set($WebDefaultStylesheet, "aileron"); > #Set($WebDefaultStylesheet, "ballard"); > > =item C<$DefaultQueue> > > Use this to select the default queue name that will be used for > creating new tickets. You may use either the queue's name or its > ID. This only affects the queue selection boxes on the web interface. > > =cut > > Set($DefaultQueue, "Ops"); > > =item C<$RememberDefaultQueue> > > When a queue is selected in the new ticket dropdown, make it the new > default for the new ticket dropdown. > > =cut > > # Set($RememberDefaultQueue, 1); > > =item C<$EnableReminders> > > Hide all links and portlets related to Reminders by setting this to 0 > > =cut > > Set($EnableReminders, 1); > > =item C<@CustomFieldValuesSources> > > Set C<@CustomFieldValuesSources> to a list of class names which extend > L. This can be used to pull lists of > custom field values from external sources at runtime. > > =cut > > Set(@CustomFieldValuesSources, ()); > > =item C<$CanonicalizeRedirectURLs> > > Set C<$CanonicalizeRedirectURLs> to 1 to use C<$WebURL> when > redirecting rather than the one we get from C<%ENV>. > > If you use RT behind a reverse proxy, you almost certainly want to > enable this option. > > =cut > > Set($CanonicalizeRedirectURLs, 0); > > =item C<@JSFiles> > > A list of JavaScript files to be included in head. Removing any of > the default entries is not suggested. > > =cut > > Set(@JSFiles, qw/ > jquery-1.4.2.min.js > jquery_noconflict.js > jquery-ui-1.8.4.custom.min.js > jquery-ui-patch-datepicker.js > ui.timepickr.js > titlebox-state.js > util.js > userautocomplete.js > jquery.event.hover-1.0.js > superfish.js > supersubs.js > jquery.supposition.js > history-folding.js > late.js > /); > > =item C<$JSMinPath> > > Path to the jsmin binary, available from > http://www.crockford.com/javascript/jsmin.html > > If specified, it will be used to minify C. If it cannot be > found, RT will fall back to the L module; > failing that, RT will will simply concatenate the files. > > =cut > > # Set($JSMinPath, "/path/to/jsmin"); > > =item C<@CSSFiles> > > A list of additional CSS files to be included in head. > > =cut > > Set(@CSSFiles, qw//); > > =item C<$UsernameFormat> > > This determines how user info is displayed. 'concise' will show one of > either NickName, RealName, Name or EmailAddress, depending on what > exists and whether the user is privileged or not. 'verbose' will show > RealName and EmailAddress. > > =cut > > #Set($UsernameFormat, "concise"); > Set($UsernameFormat, "verbose"); > > =item C<$WebBaseURL>, C<$WebURL> > > Usually you don't want to set these options. The only obvious reason > is if RT is accessible via https protocol on a non standard port, e.g. > 'https://rt.example.com:9999'. In all other cases these options are > computed using C<$WebDomain>, C<$WebPort> and C<$WebPath>. > > C<$WebBaseURL> is the scheme, server and port > (e.g. 'http://rt.example.com') for constructing URLs to the web > UI. C<$WebBaseURL> doesn't need a trailing /. > > C<$WebURL> is the C<$WebBaseURL>, C<$WebPath> and trailing /, for > example: 'http://www.example.com/rt/'. > > =cut > > my $port = RT->Config->Get('WebPort'); > Set($WebBaseURL, > ($port == 443? 'https': 'http') .'://' > . RT->Config->Get('WebDomain') > . ($port != 80 && $port != 443? ":$port" : '') > ); > > Set($WebURL, RT->Config->Get('WebBaseURL') . RT->Config->Get('WebPath') . "/"); > > =item C<$WebImagesURL> > > C<$WebImagesURL> points to the base URL where RT can find its images. > Define the directory name to be used for images in RT web documents. > > =cut > > Set($WebImagesURL, RT->Config->Get('WebPath') . "/NoAuth/images/"); > > =item C<$LogoURL> > > C<$LogoURL> points to the URL of the RT logo displayed in the web UI. > This can also be configured via the web UI. > > =cut > > Set($LogoURL, RT->Config->Get('WebImagesURL') . "bpslogo.png"); > > =item C<$LogoLinkURL> > > C<$LogoLinkURL> is the URL that the RT logo hyperlinks to. > > =cut > > Set($LogoLinkURL, "http://bestpractical.com"); > > =item C<$LogoAltText> > > C<$LogoAltText> is a string of text for the alt-text of the logo. It > will be passed through C for localization. > > =cut > > Set($LogoAltText, "Best Practical Solutions, LLC corporate logo"); > > =item C<$LogoImageHeight> > > C<$LogoImageHeight> is the value of the C attribute of the logo > C tag. > > =cut > > Set($LogoImageHeight, 38); > > =item C<$LogoImageWidth> > > C<$LogoImageWidth> is the value of the C attribute of the logo > C tag. > > =cut > > Set($LogoImageWidth, 181); > > =item C<$WebNoAuthRegex> > > What portion of RT's URL space should not require authentication. The > default is almost certainly correct, and should only be changed if you > are extending RT. > > =cut > > Set($WebNoAuthRegex, qr{^ (?:/+NoAuth/ | /+REST/\d+\.\d+/NoAuth/) }x ); > > =item C<$SelfServiceRegex> > > What portion of RT's URLspace should be accessible to Unprivileged > users This does not override the redirect from F > to F when Unprivileged users attempt to > access ticked displays. > > =cut > > Set($SelfServiceRegex, qr!^(?:/+SelfService/)!x ); > > =item C<$WebFlushDbCacheEveryRequest> > > By default, RT clears its database cache after every page view. This > ensures that you've always got the most current information when > working in a multi-process (mod_perl or FastCGI) Environment. Setting > C<$WebFlushDbCacheEveryRequest> to 0 will turn this off, which will > speed RT up a bit, at the expense of a tiny bit of data accuracy. > > =cut > > Set($WebFlushDbCacheEveryRequest, 1); > > =item C<%ChartFont> > > The L module (which RT uses for graphs) ships with a built-in font > that doesn't have full Unicode support. You can use a given TrueType > font for a specific language by setting %ChartFont to (language =E > the absolute path of a font) pairs. Your GD library must have support > for TrueType fonts to use this option. If there is no entry for a > language in the hash then font with 'others' key is used. > > RT comes with two TrueType fonts covering most available languages. > > =cut > > Set( > %ChartFont, > 'zh-cn' => "$RT::BasePath/share/fonts/DroidSansFallback.ttf", > 'zh-tw' => "$RT::BasePath/share/fonts/DroidSansFallback.ttf", > 'ja' => "$RT::BasePath/share/fonts/DroidSansFallback.ttf", > 'others' => "$RT::BasePath/share/fonts/DroidSans.ttf", > ); > > =item C<$ChartsTimezonesInDB> > > RT stores dates using the UTC timezone in the DB, so charts grouped by > dates and time are not representative. Set C<$ChartsTimezonesInDB> to 1 > to enable timezone conversions using your DB's capabilities. You may > need to do some work on the DB side to use this feature, read more in > F. > > At this time, this feature only applies to MySQL and PostgreSQL. > > =cut > > Set($ChartsTimezonesInDB, 0); > > =back > > > > =head2 Home page > > =over 4 > > =item C<$DefaultSummaryRows> > > C<$DefaultSummaryRows> is default number of rows displayed in for > search results on the front page. > > =cut > > Set($DefaultSummaryRows, 10); > > =item C<$HomePageRefreshInterval> > > C<$HomePageRefreshInterval> is default number of seconds to refresh > the RT home page. Choose from [0, 120, 300, 600, 1200, 3600, 7200]. > > =cut > > Set($HomePageRefreshInterval, 0); > > =item C<$HomepageComponents> > > C<$HomepageComponents> is an arrayref of allowed components on a > user's customized homepage ("RT at a glance"). > > =cut > > Set($HomepageComponents, [qw(QuickCreate Quicksearch MyAdminQueues MySupportQueues MyReminders RefreshHomepage Dashboards SavedSearches)]); > > =back > > > > > =head2 Ticket search > > =over 4 > > =item C<$UseSQLForACLChecks> > > Historically, ACLs were checked on display, which could lead to empty > search pages and wrong ticket counts. Set C<$UseSQLForACLChecks> to 1 > to limit search results in SQL instead, which eliminates these > problems. > > This option is still relatively new; it may result in performance > problems in some cases, or significant speedups in others. > > =cut > > Set($UseSQLForACLChecks, undef); > > =item C<$TicketsItemMapSize> > > On the display page of a ticket from search results, RT provides links > to the first, next, previous and last ticket from the results. In > order to build these links, RT needs to fetch the full result set from > the database, which can be resource-intensive. > > Set C<$TicketsItemMapSize> to number of tickets you want RT to examine > to build these links. If the full result set is larger than this > number, RT will omit the "last" link in the menu. Set this to zero to > always examine all results. > > =cut > > Set($TicketsItemMapSize, 1000); > > =item C<$SearchResultsRefreshInterval> > > C<$SearchResultsRefreshInterval> is default number of seconds to > refresh search results in RT. Choose from [0, 120, 300, 600, 1200, > 3600, 7200]. > > =cut > > Set($SearchResultsRefreshInterval, 0); > > =item C<$DefaultSearchResultFormat> > > C<$DefaultSearchResultFormat> is the default format for RT search > results > > =cut > > Set ($DefaultSearchResultFormat, qq{ > '__id__/TITLE:#', > '__Subject__/TITLE:Subject', > Status, > QueueName, > OwnerName, > Priority, > '__NEWLINE__', > '', > '__Requestors__', > '__CreatedRelative__', > '__ToldRelative__', > '__LastUpdatedRelative__', > '__TimeLeft__'}); > > =item C<$DefaultSelfServiceSearchResultFormat> > > C<$DefaultSelfServiceSearchResultFormat> is the default format of > searches displayed in the SelfService interface. > > =cut > > Set($DefaultSelfServiceSearchResultFormat, qq{ > '__id__/TITLE:#', > '__Subject__/TITLE:Subject', > Status, > Requestors, > OwnerName}); > > =item C<%FullTextSearch> > > Full text search (FTS) without database indexing is a very slow > operation, and is thus disabled by default. > > Before setting C to 1, read F for > the full details of FTS on your particular database. > > It is possible to enable FTS without database indexing support, simply > by setting the C key to 1, while leaving C set to 0. > This is not generally suggested, as unindexed full-text searching can > cause severe performance problems. > > =cut > > Set(%FullTextSearch, > Enable => 0, > Indexed => 0, > ); > > > =item C<$OnlySearchActiveTicketsInSimpleSearch> > > When query in simple search doesn't have status info, use this to only > search active ones. > > =cut > > Set($OnlySearchActiveTicketsInSimpleSearch, 1); > > =item C<$SearchResultsAutoRedirect> > > When only one ticket is found in search, use this to redirect to the > ticket display page automatically. > > =cut > > Set($SearchResultsAutoRedirect, 0); > > =back > > > > =head2 Ticket display > > =over 4 > > =item C<$ShowMoreAboutPrivilegedUsers> > > This determines if the 'More about requestor' box on > Ticket/Display.html is shown for Privileged Users. > > =cut > > Set($ShowMoreAboutPrivilegedUsers, 0); > > =item C<$MoreAboutRequestorTicketList> > > This can be set to Active, Inactive, All or None. It controls what > ticket list will be displayed in the 'More about requestor' box on > Ticket/Display.html. This option can be controlled by users also. > > =cut > > Set($MoreAboutRequestorTicketList, "Active"); > > =item C<$MoreAboutRequestorExtraInfo> > > By default, the 'More about requestor' box on Ticket/Display.html > shows the Requestor's name and ticket list. If you would like to see > extra information about the user, this expects a Format string of user > attributes. Please note that not all the attributes are supported in > this display because we're not building a table. > > =cut > > Set($MoreAboutRequestorExtraInfo, ""); > > =item C<$MoreAboutRequestorGroupsLimit> > > By default, the 'More about requestor' box on Ticket/Display.html > shows all the groups of the Requestor. Use this to limit the number > of groups; a value of undef removes the group display entirely. > > =cut > > Set($MoreAboutRequestorGroupsLimit, 0); > > =item C<$UseSideBySideLayout> > > Should the ticket create and update forms use a more space efficient > two column layout. This layout may not work in narrow browsers if you > set a MessageBoxWidth (below). > > =cut > > Set($UseSideBySideLayout, 1); > > =item C<$EditCustomFieldsSingleColumn> > > When displaying a list of Ticket Custom Fields for editing, RT > defaults to a 2 column list. If you set this to 1, it will instead > display the Custom Fields in a single column. > > =cut > > Set($EditCustomFieldsSingleColumn, 0); > > =item C<$ShowUnreadMessageNotifications> > > If set to 1, RT will prompt users when there are new, > unread messages on tickets they are viewing. > > =cut > > Set($ShowUnreadMessageNotifications, 0); > > =item C<$AutocompleteOwners> > > If set to 1, the owner drop-downs for ticket update/modify and the query > builder are replaced by text fields that autocomplete. This can > alleviate the sometimes huge owner list for installations where many > users have the OwnTicket right. > > =cut > > Set($AutocompleteOwners, 0); > > =item C<$UserAutocompleteFields> > > Specifies which fields of L to match against and how to > match each field when autocompleting users. Valid match methods are > LIKE, STARTSWITH, ENDSWITH, =, and !=. > > =cut > > Set($UserAutocompleteFields, { > EmailAddress => 'STARTSWITH', > Name => 'STARTSWITH', > RealName => 'LIKE', > }); > > =item C<$AllowUserAutocompleteForUnprivileged> > > Should unprivileged users be allowed to autocomplete users. Setting > this option to 1 means unprivileged users will be able to search all > your users. > > =cut > > Set($AllowUserAutocompleteForUnprivileged, 0); > > =item C<$DisplayTicketAfterQuickCreate> > > Enable this to redirect to the created ticket display page > automatically when using QuickCreate. > > =cut > > Set($DisplayTicketAfterQuickCreate, 0); > > =item C<$WikiImplicitLinks> > > Support implicit links in WikiText custom fields? Setting this to 1 > causes InterCapped or ALLCAPS words in WikiText fields to automatically > become links to searches for those words. If used on Articles, it links > to the Article with that name. > > =cut > > Set($WikiImplicitLinks, 0); > > =item C<$PreviewScripMessages> > > Set C<$PreviewScripMessages> to 1 if the scrips preview on the ticket > reply page should include the content of the messages to be sent. > > =cut > > Set($PreviewScripMessages, 0); > > =item C<$SimplifiedRecipients> > > If C<$SimplifiedRecipients> is set, a simple list of who will receive > B kind of mail will be shown on the ticket reply page, instead of a > detailed breakdown by scrip. > > =cut > > Set($SimplifiedRecipients, 0); > > =back > > > > =head2 Articles > > =over 4 > > =item C<$ArticleOnTicketCreate> > > Set this to 1 to display the Articles interface on the Ticket Create > page in addition to the Reply/Comment page. > > =cut > > Set($ArticleOnTicketCreate, 0); > > =item C<$HideArticleSearchOnReplyCreate> > > Set this to 1 to hide the search and include boxes from the Article > UI. This assumes you have enabled Article Hotlist feature, otherwise > you will have no access to Articles. > > =cut > > Set($HideArticleSearchOnReplyCreate, 0); > > =back > > > > =head2 Message box properties > > =over 4 > > =item C<$MessageBoxWidth>, C<$MessageBoxHeight> > > For message boxes, set the entry box width, height and what type of > wrapping to use. These options can be overridden by users in their > preferences. > > When the width is set to undef, no column count is specified and the > message box will take up 100% of the available width. Combining this > with HARD messagebox wrapping (below) is not recommended, as it will > lead to inconsistent width in transactions between browsers. > > These settings only apply to the non-RichText message box. See below > for Rich Text settings. > > =cut > > Set($MessageBoxWidth, undef); > Set($MessageBoxHeight, 15); > > =item C<$MessageBoxWrap> > > Wrapping is disabled when using MessageBoxRichText because of a bad > interaction between IE and wrapping with the Rich Text Editor. > > =cut > > Set($MessageBoxWrap, "SOFT"); > > =item C<$MessageBoxRichText> > > Should "rich text" editing be enabled? This option lets your users > send HTML email messages from the web interface. > > =cut > > Set($MessageBoxRichText, 1); > > =item C<$MessageBoxRichTextHeight> > > Height of rich text JavaScript enabled editing boxes (in pixels) > > =cut > > Set($MessageBoxRichTextHeight, 200); > > =item C<$MessageBoxIncludeSignature> > > Should your users' signatures (from their Preferences page) be > included in Comments and Replies. > > =cut > > Set($MessageBoxIncludeSignature, 1); > > =item C<$MessageBoxIncludeSignatureOnComment> > > Should your users' signatures (from their Preferences page) be > included in Comments. Setting this to false overrides > C<$MessageBoxIncludeSignature>. > > =cut > > Set($MessageBoxIncludeSignatureOnComment, 1); > > =back > > > =head2 Transaction display > > =over 4 > > =item C<$OldestTransactionsFirst> > > By default, RT shows newest transactions at the bottom of the ticket > history page, if you want see them at the top set this to 0. This > option can be overridden by users in their preferences. > > =cut > > Set($OldestTransactionsFirst, 1); > > =item C<$DeferTransactionLoading> > > When set, defers loading ticket history until the user clicks a link. > This should end up serving pages to users quicker, since generating > all the HTML for transaction history can be slow for long tickets. > > =cut > > # Set($DeferTransactionLoading, 1); > > =item C<$ShowBccHeader> > > By default, RT hides from the web UI information about blind copies > user sent on reply or comment. > > =cut > > Set($ShowBccHeader, 0); > > =item C<$TrustHTMLAttachments> > > If C is not defined, we will display them as > text. This prevents malicious HTML and JavaScript from being sent in a > request (although there is probably more to it than that) > > =cut > > Set($TrustHTMLAttachments, undef); > > =item C<$AlwaysDownloadAttachments> > > Always download attachments, regardless of content type. If set, this > overrides C. > > =cut > > Set($AlwaysDownloadAttachments, undef); > > =item C<$AttachmentUnits> > > Controls the units (kilobytes or bytes) that attachment sizes use for > display. The default is to display kilobytes if the attachment is > larger than 1024 bytes, bytes otherwise. If you set > C<$AttachmentUnits> to C<'k'> then attachment sizes will always be > displayed in kilobytes. If set to C<'b'>, then sizes will be bytes. > > =cut > > Set($AttachmentUnits, undef); > > =item C<$PreferRichText> > > If C<$PreferRichText> is set to 1, RT will show HTML/Rich text messages > in preference to their plain-text alternatives. RT "scrubs" the HTML to > show only a minimal subset of HTML to avoid possible contamination by > cross-site-scripting attacks. > > =cut > > Set($PreferRichText, undef); > > =item C<$MaxInlineBody> > > C<$MaxInlineBody> is the maximum attachment size that we want to see > inline when viewing a transaction. RT will inline any text if the > value is undefined or 0. This option can be overridden by users in > their preferences. > > =cut > > Set($MaxInlineBody, 12000); > > =item C<$ShowTransactionImages> > > By default, RT shows images attached to incoming (and outgoing) ticket > updates inline. Set this variable to 0 if you'd like to disable that > behavior. > > =cut > > Set($ShowTransactionImages, 1); > > =item C<$PlainTextPre> > > Normally plaintext attachments are displayed as HTML with line breaks > preserved. This causes space- and tab-based formatting not to be > displayed correctly. By setting $PlainTextPre messages will be > displayed using
; this option overrides C<$PlainTextMono>.
> 
> =cut
> 
> Set($PlainTextPre, 0);
> 
> 
> =item C<$PlainTextMono>
> 
> Set C<$PlainTextMono> to 1 to use monospaced font and preserve
> formatting; unlike C<$PlainTextPre>, the text will wrap to fit width
> of the browser window.
> 
> =cut
> 
> Set($PlainTextMono, 0);
> 
> =item C<$SuppressInlineTextFiles>
> 
> If C<$SuppressInlineTextFiles> is set to 1, then uploaded text files
> (text-type attachments with file names) are prevented from being
> displayed in-line when viewing a ticket's history.
> 
> =cut
> 
> Set($SuppressInlineTextFiles, undef);
> 
> 
> =item C<@Active_MakeClicky>
> 
> MakeClicky detects various formats of data in headers and email
> messages, and extends them with supporting links.  By default, RT
> provides two formats:
> 
> * 'httpurl': detects http:// and https:// URLs and adds '[Open URL]'
>   link after the URL.
> 
> * 'httpurl_overwrite': also detects URLs as 'httpurl' format, but
>   replaces the URL with a link and *adds spaces* into the text if it
>   is longer then 30 characters. This allows the browser to wrap long
>   URLs and avoid horizontal scrolling.
> 
> See F for documentation on how to add
> your own styles of link detection.
> 
> =cut
> 
> Set(@Active_MakeClicky, qw());
> 
> =back
> 
> 
> 
> =head1 Application logic
> 
> =over 4
> 
> =item C<$ParseNewMessageForTicketCcs>
> 
> If C<$ParseNewMessageForTicketCcs> is set to 1, RT will attempt to
> divine Ticket 'Cc' watchers from the To and Cc lines of incoming
> messages.  Be forewarned that if you have I addresses which forward
> mail to RT automatically and you enable this option without modifying
> C<$RTAddressRegexp> below, you will get yourself into a heap of trouble.
> 
> =cut
> 
> Set($ParseNewMessageForTicketCcs, undef);
> 
> =item C<$UseTransactionBatch>
> 
> Set C<$UseTransactionBatch> to 1 to execute transactions in batches,
> such that a resolve and comment (for example) would happen
> simultaneously, instead of as two transactions, unaware of each
> others' existence.
> 
> =cut
> 
> Set($UseTransactionBatch, 1);
> 
> =item C<$StrictLinkACL>
> 
> When this feature is enabled a user needs I rights on
> both tickets to link them together; otherwise, I rights
> on either of them is sufficient.
> 
> =cut
> 
> Set($StrictLinkACL, 1);
> 
> =item C<$RedistributeAutoGeneratedMessages>
> 
> Should RT redistribute correspondence that it identifies as machine
> generated?  A 1 will do so; setting this to 0 will cause no
> such messages to be redistributed.  You can also use 'privileged' (the
> default), which will redistribute only to privileged users. This helps
> to protect against malformed bounces and loops caused by auto-created
> requestors with bogus addresses.
> 
> =cut
> 
> Set($RedistributeAutoGeneratedMessages, "privileged");
> 
> =item C<$ApprovalRejectionNotes>
> 
> Should rejection notes from approvals be sent to the requestors?
> 
> =back
> 
> =cut
> 
> Set($ApprovalRejectionNotes, 1);
> 
> =head1 Extra security
> 
> =over 4
> 
> This is a list of extra security measures to enable that help keep your RT
> safe.  If you don't know what these mean, you should almost certainly leave the
> defaults alone.
> 
> =item C<$DisallowExecuteCode>
> 
> If set to a true value, the C right will be removed from
> all users, B the superuser.  This is intended for when RT is
> installed into a shared environment where even the superuser should not
> be allowed to run arbitrary Perl code on the server via scrips.
> 
> =cut
> 
> Set($DisallowExecuteCode, 0);
> 
> =item C<$Framebusting>
> 
> If set to a false value, framekiller javascript will be disabled and the
> X-Frame-Options: DENY header will be suppressed from all responses.
> This disables RT's clickjacking protection.
> 
> =cut
> 
> Set($Framebusting, 1);
> 
> =back
> 
> =head1 Authorization and user configuration
> 
> =over 4
> 
> =item C<$WebExternalAuth>
> 
> If C<$WebExternalAuth> is defined, RT will defer to the environment's
> REMOTE_USER variable.
> 
> =cut
> 
> Set($WebExternalAuth, undef);
> 
> =item C<$WebExternalAuthContinuous>
> 
> If C<$WebExternalAuthContinuous> is defined, RT will check for the
> REMOTE_USER on each access.  If you would prefer this to only happen
> once (at initial login) set this to a false value.  The default
> setting will help ensure that if your external authentication system
> deauthenticates a user, RT notices as soon as possible.
> 
> =cut
> 
> Set($WebExternalAuthContinuous, 1);
> 
> =item C<$WebFallbackToInternalAuth>
> 
> If C<$WebFallbackToInternalAuth> is defined, the user is allowed a
> chance of fallback to the login screen, even if REMOTE_USER failed.
> 
> =cut
> 
> Set($WebFallbackToInternalAuth, undef);
> 
> =item C<$WebExternalGecos>
> 
> C<$WebExternalGecos> means to match 'gecos' field as the user
> identity); useful with mod_auth_pwcheck and IIS Integrated Windows
> logon.
> 
> =cut
> 
> Set($WebExternalGecos, undef);
> 
> =item C<$WebExternalAuto>
> 
> C<$WebExternalAuto> will create users under the same name as
> REMOTE_USER upon login, if it's missing in the Users table.
> 
> =cut
> 
> Set($WebExternalAuto, undef);
> 
> =item C<$AutoCreate>
> 
> If C<$WebExternalAuto> is set to 1, C<$AutoCreate> will be passed to
> User's Create method.  Use it to set defaults, such as creating
> Unprivileged users with C<{ Privileged => 0 }> This must be a hashref.
> 
> =cut
> 
> Set($AutoCreate, undef);
> 
> =item C<$WebSessionClass>
> 
> C<$WebSessionClass> is the class you wish to use for managing
> Sessions.  It defaults to use your SQL database, but if you are using
> MySQL 3.x and plans to use non-ascii Queue names, uncomment and add
> this line to F to prevent session corruption.
> 
> =cut
> 
> # Set($WebSessionClass, "Apache::Session::File");
> 
> =item C<$AutoLogoff>
> 
> By default, RT's user sessions persist until a user closes his or her
> browser. With the C<$AutoLogoff> option you can setup session lifetime
> in minutes. A user will be logged out if he or she doesn't send any
> requests to RT for the defined time.
> 
> =cut
> 
> Set($AutoLogoff, 0);
> 
> =item C<$LogoutRefresh>
> 
> The number of seconds to wait after logout before sending the user to
> the login page. By default, 1 second, though you may want to increase
> this if you display additional information on the logout page.
> 
> =cut
> 
> Set($LogoutRefresh, 1);
> 
> =item C<$WebSecureCookies>
> 
> By default, RT's session cookie isn't marked as "secure". Some web
> browsers will treat secure cookies more carefully than non-secure
> ones, being careful not to write them to disk, only sending them over
> an SSL secured connection, and so on. To enable this behavior, set
> C<$WebSecureCookies> to 1.  NOTE: You probably don't want to turn this
> on I users are only connecting via SSL encrypted HTTPS
> connections.
> 
> =cut
> 
> Set($WebSecureCookies, 0);
> 
> =item C<$MinimumPasswordLength>
> 
> C<$MinimumPasswordLength> defines the minimum length for user
> passwords. Setting it to 0 disables this check.
> 
> =cut
> 
> Set($MinimumPasswordLength, 5);
> 
> =back
> 
> 
> =head1 Internationalization
> 
> =over 4
> 
> =item C<@LexiconLanguages>
> 
> An array that contains languages supported by RT's
> internationalization interface.  Defaults to all *.po lexicons;
> setting it to C will make RT bilingual instead of
> multilingual, but will save some memory.
> 
> =cut
> 
> Set(@LexiconLanguages, qw(*));
> 
> =item C<@EmailInputEncodings>
> 
> An array that contains default encodings used to guess which charset
> an attachment uses, if it does not specify one explicitly.  All
> options must be recognized by L.  The first element may
> also be '*', which enables encoding detection using
> L, if installed.
> 
> =cut
> 
> Set(@EmailInputEncodings, qw(utf-8 iso-8859-1 us-ascii));
> 
> =item C<$EmailOutputEncoding>
> 
> The charset for localized email.  Must be recognized by Encode.
> 
> =cut
> 
> Set($EmailOutputEncoding, "utf-8");
> 
> =back
> 
> 
> 
> 
> 
> 
> 
> =head1 Date and time handling
> 
> =over 4
> 
> =item C<$DateTimeFormat>
> 
> You can choose date and time format.  See the "Output formatters"
> section in perldoc F for more options.  This option
> can be overridden by users in their preferences.
> 
> Some examples:
> 
> C
> C "ISO", Seconds => 0 });>
> C
> C "RFC2822", Seconds => 0, DayOfWeek => 0 });>
> 
> =cut
> 
> Set($DateTimeFormat, "DefaultFormat");
> 
> # Next two options are for Time::ParseDate
> 
> =item C<$DateDayBeforeMonth>
> 
> Set this to 1 if your local date convention looks like "dd/mm/yy"
> instead of "mm/dd/yy". Used only for parsing, not for displaying
> dates.
> 
> =cut
> 
> Set($DateDayBeforeMonth, 1);
> 
> =item C<$AmbiguousDayInPast>, C<$AmbiguousDayInFuture>
> 
> Should an unspecified day or year in a date refer to a future or a
> past value? For example, should a date of "Tuesday" default to mean
> the date for next Tuesday or last Tuesday? Should the date "March 1"
> default to the date for next March or last March?
> 
> Set C<$AmbiguousDayInPast> for the last date, or
> C<$AmbiguousDayInFuture> for the next date; the default is usually
> correct.  If both are set, C<$AmbiguousDayInPast> takes precedence.
> 
> =cut
> 
> Set($AmbiguousDayInPast, 0);
> Set($AmbiguousDayInFuture, 0);
> 
> =item C<$DefaultTimeUnitsToHours>
> 
> Use this to set the default units for time entry to hours instead of
> minutes.  Note that this only effects entry, not display.
> 
> =cut
> 
> Set($DefaultTimeUnitsToHours, 0);
> 
> =back
> 
> 
> 
> 
> =head1 GnuPG integration
> 
> A full description of the (somewhat extensive) GnuPG integration can
> be found by running the command `perldoc L` (or
> `perldoc lib/RT/Crypt/GnuPG.pm` from your RT install directory).
> 
> =over 4
> 
> =item C<%GnuPG>
> 
> Set C to 'inline' to use inline encryption and
> signatures instead of 'RFC' (GPG/MIME: RFC3156 and RFC1847) format.
> 
> If you want to allow people to encrypt attachments inside the DB then
> set C to 1.
> 
> Set C to false if you don't want to reject
> emails encrypted for key RT doesn't have and can not decrypt.
> 
> Set C to false if you don't want to reject letters
> with incorrect GnuPG data.
> 
> =cut
> 
> Set(%GnuPG,
>     Enable => 1,
>     OutgoingMessagesFormat => "RFC", # Inline
>     AllowEncryptDataInDB   => 0,
> 
>     RejectOnMissingPrivateKey => 1,
>     RejectOnBadData           => 1,
> );
> 
> =item C<%GnuPGOptions>
> 
> Options to pass to the GnuPG program.
> 
> If you override this in your RT_SiteConfig, you should be sure to
> include a homedir setting.
> 
> Note that options with '-' character MUST be quoted.
> 
> =cut
> 
> Set(%GnuPGOptions,
>     homedir => q{var/data/gpg},
> 
> # URL of a keyserver
> #    keyserver => 'hkp://subkeys.pgp.net',
> 
> # enables the automatic retrieving of keys when encrypting
> #    'auto-key-locate' => 'keyserver',
> 
> # enables the automatic retrieving of keys when verifying signatures
> #    'auto-key-retrieve' => undef,
> );
> 
> =back
> 
> 
> 
> =head1 Lifecycles
> 
> =head2 Lifecycle definitions
> 
> Each lifecycle is a list of possible statuses split into three logic
> sets: B, B and B. Each status in a
> lifecycle must be unique. (Statuses may not be repeated across sets.)
> Each set may have any number of statuses.
> 
> For example:
> 
>     default => {
>         initial  => ['new'],
>         active   => ['open', 'stalled'],
>         inactive => ['resolved', 'rejected', 'deleted'],
>         ...
>     },
> 
> Status names can be from 1 to 64 ASCII characters.  Statuses are
> localized using RT's standard internationalization and localization
> system.
> 
> =over 4
> 
> =item initial
> 
> You can define multiple B statuses for tickets in a given
> lifecycle.
> 
> RT will automatically set its B date when you change a
> ticket's status from an B state to an B or
> B status.
> 
> =item active
> 
> B tickets are "currently in play" - they're things that are
> being worked on and not yet complete.
> 
> =item inactive
> 
> B tickets are typically in their "final resting state".
> 
> While you're free to implement a workflow that ignores that
> description, typically once a ticket enters an inactive state, it will
> never again enter an active state.
> 
> RT will automatically set the B date when a ticket's status
> is changed from an B or B status to an B
> status.
> 
> B is still a special status and protected by the
> B right, unless you re-defined rights (read below). If
> you don't want to allow ticket deletion at any time simply don't
> include it in your lifecycle.
> 
> =back
> 
> Statuses in each set are ordered and listed in the UI in the defined
> order.
> 
> Changes between statuses are constrained by transition rules, as
> described below.
> 
> =head2 Default values
> 
> In some cases a default value is used to display in UI or in API when
> value is not provided. You can configure defaults using the following
> syntax:
> 
>     default => {
>         ...
>         defaults => {
>             on_create => 'new',
>             on_resolve => 'resolved',
>             ...
>         },
>     },
> 
> The following defaults are used.
> 
> =over 4
> 
> =item on_create
> 
> If you (or your code) doesn't specify a status when creating a ticket,
> RT will use the this status. See also L ticket creation>.
> 
> =item on_merge
> 
> When tickets are merged, the status of the ticket that was merged
> away is forced to this value.  It should be one of inactive statuses;
> 'resolved' or its equivalent is most probably the best candidate.
> 
> =item approved
> 
> When an approval is accepted, the status of depending tickets will
> be changed to this value.
> 
> =item denied
> 
> When an approval is denied, the status of depending tickets will
> be changed to this value.
> 
> =back
> 
> =head2 Transitions between statuses and UI actions
> 
> A B is a change of status from A to B. You should define
> all possible transitions in each lifecycle using the following format:
> 
>     default => {
>         ...
>         transitions => {
>             ''       => [qw(new open resolved)],
>             new      => [qw(open resolved rejected deleted)],
>             open     => [qw(stalled resolved rejected deleted)],
>             stalled  => [qw(open)],
>             resolved => [qw(open)],
>             rejected => [qw(open)],
>             deleted  => [qw(open)],
>         },
>         ...
>     },
> 
> =head3 Statuses available during ticket creation
> 
> By default users can create tickets with any status, except
> deleted. If you want to restrict statuses available during creation
> then describe transition from '' (empty string), like in the example
> above.
> 
> =head3 Protecting status changes with rights
> 
> A transition or group of transitions can be protected by a specific
> right.  Additionally, you can name new right names, which will be added
> to the system to control that transition.  For example, if you wished to
> create a lesser right than ModifyTicket for rejecting tickets, you could
> write:
> 
>     default => {
>         ...
>         rights => {
>             '* -> deleted'  => 'DeleteTicket',
>             '* -> rejected' => 'RejectTicket',
>             '* -> *'        => 'ModifyTicket',
>         },
>         ...
>     },
> 
> This would create a new C right in the system which you
> could assign to whatever groups you choose.
> 
> On the left hand side you can have the following variants:
> 
>     ' -> '
>     '* -> '
>     ' -> *'
>     '* -> *'
> 
> Valid transitions are listed in order of priority. If a user attempts
> to change a ticket's status from B to B then the lifecycle
> is checked for presence of an exact match, then for 'any to B',
> 'B to any' and finally 'any to any'.
> 
> If you don't define any rights, or there is no match for a transition,
> RT will use the B or B as appropriate.
> 
> =head3 Labeling and defining actions
> 
> For each transition you can define an action that will be shown in the
> UI; each action annotated with a label and an update type.
> 
> Each action may provide a default update type, which can be
> B, B, or absent. For example, you may want your
> staff to write a reply to the end user when they change status from
> B to B, and thus set the update to B.  Neither
> B nor B are mandatory, and user may leave the
> message empty, regardless of the update type.
> 
> This configuration can be used to accomplish what
> $ResolveDefaultUpdateType was used for in RT 3.8.
> 
> Use the following format to define labels and actions of transitions:
> 
>     default => {
>         ...
>         actions => [
>             'new -> open'     => { label => 'Open it', update => 'Respond' },
>             'new -> resolved' => { label => 'Resolve', update => 'Comment' },
>             'new -> rejected' => { label => 'Reject',  update => 'Respond' },
>             'new -> deleted'  => { label => 'Delete' },
> 
>             'open -> stalled'  => { label => 'Stall',   update => 'Comment' },
>             'open -> resolved' => { label => 'Resolve', update => 'Comment' },
>             'open -> rejected' => { label => 'Reject',  update => 'Respond' },
> 
>             'stalled -> open'  => { label => 'Open it' },
>             'resolved -> open' => { label => 'Re-open', update => 'Comment' },
>             'rejected -> open' => { label => 'Re-open', update => 'Comment' },
>             'deleted -> open'  => { label => 'Undelete' },
>         ],
>         ...
>     },
> 
> In addition, you may define multiple actions for the same transition.
> Alternately, you may use '* -> x' to match more than one transition.
> For example:
> 
>     default => {
>         ...
>         actions => [
>             ...
>             'new -> rejected' => { label => 'Reject', update => 'Respond' },
>             'new -> rejected' => { label => 'Quick Reject' },
>             ...
>             '* -> deleted' => { label => 'Delete' },
>             ...
>         ],
>         ...
>     },
> 
> =head2 Moving tickets between queues with different lifecycles
> 
> Unless there is an explicit mapping between statuses in two different
> lifecycles, you can not move tickets between queues with these
> lifecycles.  Such a mapping is defined as follows:
> 
>     __maps__ => {
>         'from lifecycle -> to lifecycle' => {
>             'status in left lifecycle' => 'status in right lifecycle',
>             ...
>         },
>         ...
>     },
> 
> =cut
> 
> Set(%Lifecycles,
>     default => {
>         initial         => [ 'new' ],
>         active          => [ 'open', 'stalled' ],
>         inactive        => [ 'resolved', 'rejected', 'deleted' ],
> 
>         defaults => {
>             on_create => 'new',
>             on_merge  => 'resolved',
>             approved  => 'open',
>             denied    => 'rejected',
>         },
> 
>         transitions => {
>             ''       => [qw(new open resolved)],
> 
>             # from   => [ to list ],
>             new      => [qw(open stalled resolved rejected deleted)],
>             open     => [qw(new stalled resolved rejected deleted)],
>             stalled  => [qw(new open rejected resolved deleted)],
>             resolved => [qw(new open stalled rejected deleted)],
>             rejected => [qw(new open stalled resolved deleted)],
>             deleted  => [qw(new open stalled rejected resolved)],
>         },
>         rights => {
>             '* -> deleted'  => 'DeleteTicket',
>             '* -> *'        => 'ModifyTicket',
>         },
>         actions => [
>             'new -> open'      => {
>                 label  => 'Open It', # loc
>                 update => 'Respond',
>             },
>             'new -> resolved'  => {
>                 label  => 'Resolve', # loc
>                 update => 'Comment',
>             },
>             'new -> rejected'  => {
>                 label  => 'Reject', # loc
>                 update => 'Respond',
>             },
>             'new -> deleted'   => {
>                 label  => 'Delete', # loc
>             },
> 
>             'open -> stalled'  => {
>                 label  => 'Stall', # loc
>                 update => 'Comment',
>             },
>             'open -> resolved' => {
>                 label  => 'Resolve', # loc
>                 update => 'Comment',
>             },
>             'open -> rejected' => {
>                 label  => 'Reject', # loc
>                 update => 'Respond',
>             },
> 
>             'stalled -> open'  => {
>                 label  => 'Open It', # loc
>             },
>             'resolved -> open' => {
>                 label  => 'Re-open', # loc
>                 update => 'Comment',
>             },
>             'rejected -> open' => {
>                 label  => 'Re-open', # loc
>                 update => 'Comment',
>             },
>             'deleted -> open'  => {
>                 label  => 'Undelete', # loc
>             },
>         ],
>     },
> # don't change lifecyle of the approvals, they are not capable to deal with
> # custom statuses
>     approvals => {
>         initial         => [ 'new' ],
>         active          => [ 'open', 'stalled' ],
>         inactive        => [ 'resolved', 'rejected', 'deleted' ],
> 
>         defaults => {
>             on_create => 'new',
>             on_merge => 'resolved',
>         },
> 
>         transitions => {
>             ''       => [qw(new open resolved)],
> 
>             # from   => [ to list ],
>             new      => [qw(open stalled resolved rejected deleted)],
>             open     => [qw(new stalled resolved rejected deleted)],
>             stalled  => [qw(new open rejected resolved deleted)],
>             resolved => [qw(new open stalled rejected deleted)],
>             rejected => [qw(new open stalled resolved deleted)],
>             deleted  => [qw(new open stalled rejected resolved)],
>         },
>         rights => {
>             '* -> deleted'  => 'DeleteTicket',
>             '* -> rejected' => 'ModifyTicket',
>             '* -> *'        => 'ModifyTicket',
>         },
>         actions => [
>             'new -> open'      => {
>                 label  => 'Open It', # loc
>                 update => 'Respond',
>             },
>             'new -> resolved'  => {
>                 label  => 'Resolve', # loc
>                 update => 'Comment',
>             },
>             'new -> rejected'  => {
>                 label  => 'Reject', # loc
>                 update => 'Respond',
>             },
>             'new -> deleted'   => {
>                 label  => 'Delete', # loc
>             },
> 
>             'open -> stalled'  => {
>                 label  => 'Stall', # loc
>                 update => 'Comment',
>             },
>             'open -> resolved' => {
>                 label  => 'Resolve', # loc
>                 update => 'Comment',
>             },
>             'open -> rejected' => {
>                 label  => 'Reject', # loc
>                 update => 'Respond',
>             },
> 
>             'stalled -> open'  => {
>                 label  => 'Open It', # loc
>             },
>             'resolved -> open' => {
>                 label  => 'Re-open', # loc
>                 update => 'Comment',
>             },
>             'rejected -> open' => {
>                 label  => 'Re-open', # loc
>                 update => 'Comment',
>             },
>             'deleted -> open'  => {
>                 label  => 'Undelete', # loc
>             },
>         ],
>     },
> );
> 
> 
> 
> 
> 
> =head1 Administrative interface
> 
> =over 4
> 
> =item C<$ShowRTPortal>
> 
> RT can show administrators a feed of recent RT releases and other
> related announcements and information from Best Practical on the top
> level Configuration page.  This feature helps you stay up to date on
> RT security announcements and version updates.
> 
> RT provides this feature using an "iframe" on C
> which asks the administrator's browser to show an inline page from
> Best Practical's website.
> 
> If you'd rather not make this feature available to your
> administrators, set C<$ShowRTPortal> to a false value.
> 
> =cut
> 
> Set($ShowRTPortal, 1);
> 
> =item C<%AdminSearchResultFormat>
> 
> In the admin interface, format strings similar to tickets result
> formats are used. Use C<%AdminSearchResultFormat> to define the format
> strings used in the admin interface on a per-RT-class basis.
> 
> =cut
> 
> Set(%AdminSearchResultFormat,
>     Queues =>
>         q{'__id__/TITLE:#'}
>         .q{,'__Name__/TITLE:Name'}
>         .q{,__Description__,__Address__,__Priority__,__DefaultDueIn__,__Disabled__},
> 
>     Groups =>
>         q{'__id__/TITLE:#'}
>         .q{,'__Name__/TITLE:Name'}
>         .q{,'__Description__'},
> 
>     Users =>
>         q{'__id__/TITLE:#'}
>         .q{,'__Name__/TITLE:Name'}
>         .q{,__RealName__, __EmailAddress__},
> 
>     CustomFields =>
>         q{'__id__/TITLE:#'}
>         .q{,'__Name__/TITLE:Name'}
>         .q{,__AppliedTo__, __FriendlyType__, __FriendlyPattern__},
> 
>     Scrips =>
>         q{'__id__/TITLE:#'}
>         .q{,'__Description__/TITLE:Description'}
>         .q{,__Stage__, __Condition__, __Action__, __Template__},
> 
>     Templates =>
>         q{'__id__/TITLE:#'}
>         .q{,'__Name__/TITLE:Name'}
>         .q{,'__Description__'},
>     Classes =>
>         q{ '__id__/TITLE:#'}
>         .q{,'__Name__/TITLE:Name'}
>         .q{,__Description__},
> );
> 
> =back
> 
> 
> 
> 
> =head1 Development options
> 
> =over 4
> 
> =item C<$DevelMode>
> 
> RT comes with a "Development mode" setting.  This setting, as a
> convenience for developers, turns on several of development options
> that you most likely don't want in production:
> 
> =over 4
> 
> =item *
> 
> Uses L to reload changed Perl modules on each
> request.
> 
> =item *
> 
> Turns off Mason's C directive; this causes Mason to
> reload template files which have been modified on disk.
> 
> =item *
> 
> Turns on Mason's HTML C; this renders compilation errors
> to the browser, along with a full stack trace.  It is possible for
> stack traces to reveal sensitive information such as passwords or
> ticket content.
> 
> =item *
> 
> Turns off caching of callbacks; this enables additional callbacks to
> be added while the server is running.
> 
> =back
> 
> =cut
> 
> Set($DevelMode, "0");
> 
> 
> =item C<$RecordBaseClass>
> 
> What abstract base class should RT use for its records. You should
> probably never change this.
> 
> Valid values are C or
> C
> 
> =cut
> 
> Set($RecordBaseClass, "DBIx::SearchBuilder::Record::Cachable");
> 
> 
> =item C<@MasonParameters>
> 
> C<@MasonParameters> is the list of parameters for the constructor of
> HTML::Mason's Apache or CGI Handler.  This is normally only useful for
> debugging, e.g. profiling individual components with:
> 
>     use MasonX::Profiler; # available on CPAN
>     Set(@MasonParameters, (preamble => 'my $p = MasonX::Profiler->new($m, $r);'));
> 
> =cut
> 
> Set(@MasonParameters, ());
> 
> =item C<$StatementLog>
> 
> RT has rudimentary SQL statement logging support; simply set
> C<$StatementLog> to be the level that you wish SQL statements to be
> logged at.
> 
> Enabling this option will also expose the SQL Queries page in the
> Configuration -> Tools menu for SuperUsers.
> 
> =cut
> 
> Set($StatementLog, undef);
> 
> =back
> 
> 
> 
> 
> =head1 Deprecated options
> 
> =over 4
> 
> =item C<$LinkTransactionsRun1Scrip>
> 
> RT-3.4 backward compatibility setting. Add/Delete Link used to record
> one transaction and run one scrip. Set this value to 1 if you want
> only one of the link transactions to have scrips run.
> 
> =cut
> 
> Set($LinkTransactionsRun1Scrip, 0);
> 
> # The order in which the services defined in ExternalSettings
> # should be used to authenticate users. User is authenticated
> # if successfully confirmed by any service - no more services
> # are checked.
> Set($ExternalAuthPriority,  [   'My_LDAP',
>                                 'My_MySQL',
>                                 'My_SSO_Cookie'
>                             ]
> );
> 
> # The order in which the services defined in ExternalSettings
> # should be used to get information about users. This includes
> # RealName, Tel numbers etc, but also whether or not the user
> # should be considered disabled. 
> #
> # Once user info is found, no more services are checked.
> #
> # You CANNOT use a SSO cookie for authentication.
> Set($ExternalInfoPriority,  [   'My_MySQL',
>                                 'My_LDAP'
>                             ]
> );
> 
> # If this is set to true, then the relevant packages will
> # be loaded to use SSL/TLS connections. At the moment,
> # this just means "use Net::SSLeay;"
> Set($ExternalServiceUsesSSLorTLS,    0);
> 
> # If this is set to 1, then users should be autocreated by RT
> # as internal users if they fail to authenticate from an
> # external service.
> Set($AutoCreateNonExternalUsers,    1);
> 
> # These are the full settings for each external service as a HashOfHashes
> # Note that you may have as many external services as you wish. They will
> # be checked in the order specified in the Priority directives above.
> # e.g. 
> #   Set(ExternalAuthPriority,['My_LDAP','My_MySQL','My_Oracle','SecondaryLDAP','Other-DB']);
> #
> Set($ExternalSettings,      {   
>                                 # AN EXAMPLE LDAP SERVICE
>                                 'My_LDAP'       =>  {   ## GENERIC SECTION
>                                                         # The type of service (db/ldap/cookie) 
>                                                         'type'                      =>  'ldap',
>                                                         # The server hosting the service
>                                                         'server'                    =>  'ldap01.example.com',
>                                                         ## SERVICE-SPECIFIC SECTION
>                                                         # If you can bind to your LDAP server anonymously you should 
>                                                         # remove the user and pass config lines, otherwise specify them here:
>                                                         # 
>                                                         # The username RT should use to connect to the LDAP server 
>                                                         #'user'                      =>  'uid=Dunphy,ou=People,cn=mlbam,cn=com',
>                                                         # The password RT should use to connect to the LDAP server
>                                                         #'pass'                    =>  'secret',
>                                                         #
>                                                         # The LDAP search base
>                                                         'base'                      =>  'ou=People,dc=example,dc=com',
>                                                         #
>                                                         # ALL FILTERS MUST BE VALID LDAP FILTERS ENCASED IN PARENTHESES!
>                                                         # YOU **MUST** SPECIFY A filter AND A d_filter!!
>                                                         #
>                                                         # The filter to use to match RT-Users
>                                                         'filter'                    =>  '(objectclass=*)',
>                                                         # A catch-all example filter: '(objectClass=*)'
>                                                         #
>                                                         # The filter that will only match disabled users
>                                                         'd_filter'                  =>  '(objectClass=FooBarBaz)',
>                                                         # A catch-none example d_filter: '(objectClass=FooBarBaz)'
>                                                         #
>                                                         # Should we try to use TLS to encrypt connections?
>                                                         'tls'                       =>  0,
>                                                         # SSL Version to provide to Net::SSLeay *if* using SSL
>                                                         #'ssl_version'               =>  2,
>                                                         # What other args should I pass to Net::LDAP->new($host, at args)?
>                                                         'net_ldap_args'             => [    version =>  3   ],
>                                                         # Does authentication depend on group membership? What group name?
>                                                         #'group'                     =>  'RTUsers',
>                                                         # What is the attribute for the group object that determines membership?
>                                                         #'group_attr'                =>  'cn',
>                                                         ## RT ATTRIBUTE MATCHING SECTION
>                                                         # The list of RT attributes that uniquely identify a user
> 							# This example shows what you *can* specify.. I recommend reducing this
>                                                         # to just the Name and EmailAddress to save encountering problems later.
>                                                         'attr_match_list'           => [    'Name',
>                                                                                             'EmailAddress', 
>                                                                                         ],
>                                                         # The mapping of RT attributes on to LDAP attributes
>                                                         'attr_map'                  =>  {   'Name' => 'uid',
>                                                                                             'EmailAddress' => 'mail',
>                                                                                         }
>                                                     },
>                                 # An example SSO cookie service
>                                 'My_SSO_Cookie'  => {   # # The type of service (db/ldap/cookie)
>                                                         'type'                      =>  'cookie',
>                                                         # The name of the cookie to be used
>                                                         'name'                      =>  'loginCookieValue',
>                                                         # The users table
>                                                         'u_table'                   =>  'users',
>                                                         # The username field in the users table
>                                                         'u_field'                   =>  'username',
>                                                         # The field in the users table that uniquely identifies a user
>                                                         # and also exists in the cookies table
>                                                         'u_match_key'               =>  'userID',
>                                                         # The cookies table
>                                                         'c_table'                   =>  'login_cookie',
>                                                         # The field that stores cookie values
>                                                         'c_field'                   =>  'loginCookieValue',
>                                                         # The field in the cookies table that uniquely identifies a user
>                                                         # and also exists in the users table
>                                                         'c_match_key'               =>  'loginCookieUserID',
>                                                         # The DB service in this configuration to use to lookup the cookie information
>                                                         'db_service_name'           =>  'My_MySQL'
>                                                     }
>                                 }
> );
> 
> 1;
> 
> 
> Set($LogToFile,      'debug');
> Set($LogToFileNamed, 'rt.log');
> Set($LogDir,         '/usr/local/rt4/var/log');
> 
> 1;
> 
> 
> 
> ---------
> 
> 
> thank you very much for any advice you may have!
> 
> tim
> 
> 
> 
>  
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston  March 5 & 6, 2012
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Wed Feb  1 14:05:35 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Wed, 1 Feb 2012 14:05:35 -0500
Subject: [rt-users] Two questions
In-Reply-To: 
References: 
	<20120131173512.GX95897@jibsheet.com>
	
Message-ID: <20120201190535.GA95897@jibsheet.com>

On Tue, Jan 31, 2012 at 12:54:04PM -0500, Josh Narins wrote:
> > On Tue, Jan 31, 2012 at 09:28:00AM -0500, Josh Narins wrote:
> > >    I got partway along writing a Mail Plugin for RT3.8, but,
> > somewhere along the way, I lost it.
> > >
> > >    Can anyone point me to any documentation on them? My goal is to
> > remove the endlessly
> > >    duplicating newlines of the quoted text on each reply to our
> > tickets and to remove the
> > >    signatures.
> >
> > There is actually code in 3.8.10 or later to work around Outlook's
> > bugs with newlines.
> 
> I'm running 4.0.2 and still have the problem.

Please followup with some sample data to rt-bugs?  Thanks

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Wed Feb  1 14:11:21 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Wed, 1 Feb 2012 14:11:21 -0500
Subject: [rt-users] Unknown encoding in rt-mailgate
In-Reply-To: <1328078549.1969.182.camel@rmwysocki>
References: <1328006542.1969.180.camel@rmwysocki>
	
	<1328078549.1969.182.camel@rmwysocki>
Message-ID: <20120201191121.GB95897@jibsheet.com>

On Wed, Feb 01, 2012 at 07:42:29AM +0100, Robert Wysocki wrote:
> Dnia 2012-01-31, wto o godzinie 21:43 +0400, Ruslan Zakirov pisze:
> > 
> > Was it a mistake in encoding or just unsupported one? Anyway, it
> > should be reported as a bug report with more details about what was in
> > headers and what is actual encoding of the mail.
> 
> The actual encoding was iso-8859-2 and the declared one was iso-8852-2.
> I think it was i typo.

I think your options come down to:

running sed over your mail queue
temporary hack in RT::I18N::_CanonicalizeCharset
use Encode::Alias in the right place to 
    define_alias( "newName" => ENCODING)

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Wed Feb  1 14:16:08 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Wed, 1 Feb 2012 14:16:08 -0500
Subject: [rt-users] Full text search problem on sphinx v4.0.4
In-Reply-To: <20120201.133230.262170999.tooru@kk.iij4u.or.jp>
References: <20120201.133230.262170999.tooru@kk.iij4u.or.jp>
Message-ID: <20120201191608.GA5178@jibsheet.com>

On Wed, Feb 01, 2012 at 01:32:30PM +0900, Toru wrote:
> I am testing rt v4.0.4 with mysql(compiled with sphinx capability) and having 
> some trouble in full text searching. 
> 
> Here are some sample search queries from rt.
> 
> 
> - Case1: full text search ok with returning right results.
> 
> ------------------------------------------------------------------------------
> ( Content LIKE 'aaaa' ) AND ( Status = 'new' OR Status = 'open' OR Status = 'stalled' )
> 
> ( Content LIKE 'aaaa' OR  Content LIKE 'bbbb') AND ( Status = 'new' OR Status = 'open' OR Status = 'stalled' )
> ------------------------------------------------------------------------------
> 
> - Case2: full text search  "not" ok returning no results and  rt seems  not sending any search query through sphinx.(no result log in sphinx's query.log)
> 
> ------------------------------------------------------------------------------
> ( Content LIKE 'aaaa' AND Content LIKE 'bbbb' ) AND ( Status = 'new' OR Status = 'open' OR Status = 'stalled' )
> ------------------------------------------------------------------------------
> 
> 
> I checked both search queries without fulltext configuration and Case1 and 2 both seems returning ok result.
> 
> 
> My v4.0.4 environment is as follow,
> 
> - rt   v4.0.4
> - perl v5.14.2
> - mysql v5.1.61
> - sphinx 2.0.3
> 
> My configurations (sphinx.conf and RT_SiteConfig.pm) are almost default setting and I haven't done any customization of rt codes.

I've bounced this into the bugtracker as
http://issues.bestpractical.com/Ticket/Display.html?id=19357
to see if we can replicate.  Thanks

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Wed Feb  1 14:19:28 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Wed, 1 Feb 2012 14:19:28 -0500
Subject: [rt-users] Set Subject in if/then clause
In-Reply-To: <4F294456.6070606@sgul.ac.uk>
References: <4F291C02.50006@sgul.ac.uk> <4F293944.8070700@eve-team.com>
	<4F293BA7.3020505@sgul.ac.uk> <4F293E93.80602@eve-team.com>
	<4F2942E2.5060604@eve-team.com> <4F294456.6070606@sgul.ac.uk>
Message-ID: <20120201191928.GB5178@jibsheet.com>

On Wed, Feb 01, 2012 at 01:55:34PM +0000, Giuseppe Sollazzo wrote:
>    -----BEGIN PGP SIGNED MESSAGE-----
>    Hash: SHA1
> 
>    Hi Gerard,
>    many thanks - that worked.
> 
>    I really need to refresh my Perl...
> 
>    Cheers,
>    Giuseppe
> 
>    On 01/02/12 13:49, Gerard FENELON wrote:
>    > I suspect my proposal is
>          wrong Try instead
> 
>          >
> 
>          > Subject: { if ($Ticket->QueueObj->Name eq 'Work
>          Queue') { "Helpdesk
> 
>          > Job Logged: " . $Ticket->Subject . " Output this"; }
>          elsif
> 
>          > ($Ticket->QueueObj->Name eq 'Task Queue') { "Support
>          Job Logged: "
> 
>          > . $Ticket->Subject . " Output that"; } else { "Output
>          other"; } }
> 
>          >
> 
>          > Gerard
> 

Guiseppe - for reference, the syntax Gerard gave you came from the
fact that RT's templates are Text::Templates and you can read more
about them on CPAN:

http://search.cpan.org/dist/Text-Template/lib/Text/Template.pm

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From ruz at bestpractical.com  Wed Feb  1 14:25:26 2012
From: ruz at bestpractical.com (Ruslan Zakirov)
Date: Wed, 1 Feb 2012 23:25:26 +0400
Subject: [rt-users] Prepared statement already exists...
In-Reply-To: 
References: 
Message-ID: 

Hi,

>From what you have posted I suspect that problem is in DBI/DBD::Pg
modules. When you check version of the modules, double check with RT's
UI to make sure what you get in command line interface matches what RT
loads. Try downgrading DBD::Pg.

As workaround you can try to disable server side preparing of statements:

http://search.cpan.org/~turnstep/DBD-Pg-2.18.1/Pg.pm#pg_server_prepare_(integer)

On Wed, Feb 1, 2012 at 17:50, Matthias Leisi  wrote:
> Hello,
>
> I got some support debugging my "prepared statement already exists"
> issue with RT 4.0.4 on #rt, but I believe it is more efficient on the
> mailing list. I'm not fully sure whether this is an issue in RT, in
> Postgresql or DBI, or something completely different, but I'll try to
> start at RT.
>
> We recently upgraded to RT 4.0.4 (using Postgresql 8.4 as in the
> previous RT 3.8.7, see upgrade steps below). Since then, we have the
> "prepared statement already exists" error; this results in RT being
> inaccessible. We currently see no other option than to restart the DB
> server (or issue "select * from pg_terminate_backend();" as
> super-user within Postgres).
>
> The error condition pops up about once a day, after a couple of hours
> of usage. The usage is minimal (usually, only a handful of
> transactions on a single-digit tickets are executed each day). On the
> RT side, the error usually looks like
>
> | [Mon Jan 30 22:58:00 2012] [warning]: DBD::Pg::st execute failed:
> ERROR: ?prepared statement
> | ? ?"dbdpg_p27347_5" already exists at
> /usr/lib/perl5/site_perl/5.12.1/Apache/Session/Store/DBI.pm
> | ? ?line 44. (/usr/lib/perl5/site_perl/5.12.1/Apache/Session/Store/DBI.pm:44)
>
> On the Postfix side:
>
> | 2012-01-31 00:18:31 CET rt4 rt_user 4f270fbe.633d ERROR: ?prepared
> statement "dbdpg_p27347_5" already exists
>
> "27347" is always equal to the PID of the httpd parent process on the
> webserver, which obviously is used as an identifier for the prepared
> statement, together with a seemingly increasing counter.
>
> I have also seen another error messages mixed in with "already exists":
>
> | 2012-01-29 22:46:09 CET rt4 rt_user 4f25be1e.304 ERROR: ?bind
> message supplies 2 parameters,
> | ? but prepared statement "dbdpg_p27347_5" requires 1
>
> And on the Apache side:
>
> | [Sun Jan 29 21:46:09 2012] [warning]: DBD::Pg::st execute failed:
> ERROR: ?bind message supplies
> | ? 2 parameters, but prepared statement "dbdpg_p27347_5" requires 1 at
> | ? usr/lib/perl5/site_perl/5.12.1/DBIx/SearchBuilder/Handle.pm line 509.
>
> If the error condition pops up, the mail gateway is also affected
> (with the same error message).
>
> Things I tried (partially based on suggestions on #rt), unfortunately
> without success:
>
> * Upgrade DBI-related stuff (done on both machines, as non-RT stuff
> could potentially profit on both ends)
> * Upgrade Postgresql to latest supported release
> * "SetHandler perl-script" instead of "SetHandler modperl"
>
> Some setup information:
>
> The webserver / RT installation is on one physical box (together with
> other web apps), the database sits on a different physical box
> (sharing a Postgres instance with other databases). This backend
> access runs over IPv6 (if this makes a difference).
>
> * openSUSE 11.3 (x86_64) on both systems.
> * perl -MDBI -le 'print $DBI::VERSION' => 1.609 on both systems.
> * perl --version => 5.12.1 on both systems
> * psql (server, clients, lib etc) is on version 8.4.7 on both systems.
>
> RT_SiteConfig is set to "Set($WebExternalAuth , 1);"., RT4 lives in
> subdirectory /rt4, Basic Auth happens on the root directory.
> Everything runs over https. There is only a small number of users who
> access RT at all, interaction with external users happens via incoming
> and outgoing email.
>
> Upgrade steps from 3.8.7 to 4.0.4:
>
> | Backup RT3 database: postgres at db:/home/backup>
> | ? /usr/bin/pg_dump -Ft rt3 > /home/backup/psqldbs/rt3-pre-rt4-upgrade.tar
> | Create new RT4 database: postgres at db:~> createdb rt4
> | Restore RT4 DB from RT3 dump: postgres at db:~> pg_restore
> | ? ?--dbname=rt4 --verbose /home/backup/psqldbs/rt3-pre-rt4-upgrade.tar
> | wget http://download.bestpractical.com/pub/rt/release/rt-4.0.4.tar.gz
> | tar xvf rt-4.0.4.tar.gz
> | cd rt-4.0.4/
> | ./configure prefix= --enable-gpg --with-web-user=wwwrun
> | ? ?--with-web-group=www --with-db-type=Pg --with-db-host=db
> --with-db-rt-pass=
> | make testdeps and make fixdeps (repeated)
> | make upgrade
> | Add a line for rt_user access to rt4 to
> | ? ?postgres at db:/var/lib/pgsql/data/pg_hba.conf
> | make upgrade-database
> | Enter RT version you're upgrading from: 3.8.7
>
> I don't want to spam the (public) group with the output of
> Admin/Tools/Configuration.html, but I can put it somewhere if it would
> help diagnosing the issue.
>
> I'm honestly at a loss on how to identify the root cause of this. Any
> hints appreciated, and I'm more than happy to provide more
> config/setup information or perform additional tests. Since the
> problem can not be directly reproduced, but only observed over about
> 24 hours, it is difficult to judge whether a change actually improved
> things, or was irrelevant, but I'll do my best ;)
>
> Thanks,
> -- Matthias
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston ?March 5 & 6, 2012



-- 
Best regards, Ruslan.


From falcone at bestpractical.com  Wed Feb  1 14:27:20 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Wed, 1 Feb 2012 14:27:20 -0500
Subject: [rt-users] view agent attached file/image in a reply/comment
In-Reply-To: 
References: <4F291D00.1020502@nlcom.nl>
	
Message-ID: <20120201192720.GC5178@jibsheet.com>

On Wed, Feb 01, 2012 at 03:49:45PM +0100, Bart wrote:
>    Add these options to your RT_SiteConfig.pm:
> 
>      # ---
>      # HTML Attachments
>      # ---

This is the config that will do what he wants
>      Set($PreferRichText, 1);

This one means that when you click Download on an HTML attachment, we
don't disable the javascript. It's important to read and understand the
docs for it. This also makes no difference to the inline history
display of RT.
>      Set($TrustHTMLAttachments, 1);

Often you need PreferRichText + MaxAllowedInline.  Rarely do you need
TrustHTMLAttachments.

-kevin

>    -- Bart
> 
>    Op 1 februari 2012 12:07 schreef Mayk Backus <[1]backus at nlcom.nl> het volgende:
> 
>      Hi list,
> 
>      I noticed that when a reply is made on a ticket by one of our agents,
>      and there's an attachement i can't view this. For example when someone
>      sends a screenshot of something, i can see the file is attached when
>      downloading the it with headers , but is there a way to view the
>      attachment (image, etc) inside RT ?
> 
>      thanx
> 
>      Greets
> 
>      Mayk Backus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Wed Feb  1 14:29:41 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Wed, 1 Feb 2012 14:29:41 -0500
Subject: [rt-users] RT 4 "Approvals"?
In-Reply-To: <4F296BB1.9030104@kickflop.net>
References: <4F296BB1.9030104@kickflop.net>
Message-ID: <20120201192941.GD5178@jibsheet.com>

On Wed, Feb 01, 2012 at 11:43:29AM -0500, Jeff Blaine wrote:
> Where might I find information on the per-queue
> setting for "Workflow" which has a choice called
> "Approval"
> 
> What is the idea?  Where is it explained?
> 
> How does one make use of it?
> 
> I converted a test queue to use the "Approval" workflow,
> submitted a ticket, resolved the ticket, and saw nothing
> out of the ordinary.
> 
> It's quite possible this has been around for awhile,
> but we made the jump from 3.4.4 to 4.0.4.

The Lifecycle (I'm not sure where Workflow came from) field on a Queue 
changes which statuses are available in that queue.  Changing a random
queue from default to approval doesn't turn it into an Approval queue.
That Lifecycle is only intended to be used on the ___Approvals queue
and there's a bug open to hide it from normal queues to avoid the
confusion that it causes.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From ruz at bestpractical.com  Wed Feb  1 14:48:32 2012
From: ruz at bestpractical.com (Ruslan Zakirov)
Date: Wed, 1 Feb 2012 23:48:32 +0400
Subject: [rt-users] Unknown encoding in rt-mailgate
In-Reply-To: <20120201191121.GB95897@jibsheet.com>
References: <1328006542.1969.180.camel@rmwysocki>
	
	<1328078549.1969.182.camel@rmwysocki>
	<20120201191121.GB95897@jibsheet.com>
Message-ID: 

On Wed, Feb 1, 2012 at 23:11, Kevin Falcone  wrote:
> On Wed, Feb 01, 2012 at 07:42:29AM +0100, Robert Wysocki wrote:
>> Dnia 2012-01-31, wto o godzinie 21:43 +0400, Ruslan Zakirov pisze:
>> >
>> > Was it a mistake in encoding or just unsupported one? Anyway, it
>> > should be reported as a bug report with more details about what was in
>> > headers and what is actual encoding of the mail.
>>
>> The actual encoding was iso-8859-2 and the declared one was iso-8852-2.
>> I think it was i typo.
>
> I think your options come down to:
>
> running sed over your mail queue
> temporary hack in RT::I18N::_CanonicalizeCharset
> use Encode::Alias in the right place to
> ? ?define_alias( "newName" => ENCODING)

It's a workaround. RT may be improved:

* send error to owner of RT, I hope we already do this
* we can check encoding in email with Encode and if encode doesn't
know it then we ignore value and guess

So this deserves a bug report and I'm Bccing ticket.

> -kevin
>
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston ? March 5 & 6, 2012



-- 
Best regards, Ruslan.


From jblaine at kickflop.net  Wed Feb  1 15:39:45 2012
From: jblaine at kickflop.net (Jeff Blaine)
Date: Wed, 01 Feb 2012 15:39:45 -0500
Subject: [rt-users] RT 4 "Approvals"?
In-Reply-To: <20120201192941.GD5178@jibsheet.com>
References: <4F296BB1.9030104@kickflop.net>
	<20120201192941.GD5178@jibsheet.com>
Message-ID: <4F29A311.6040107@kickflop.net>

> The Lifecycle (I'm not sure where Workflow came from) field on a Queue
> changes which statuses are available in that queue.  Changing a random
> queue from default to approval doesn't turn it into an Approval queue.
> That Lifecycle is only intended to be used on the ___Approvals queue
> and there's a bug open to hide it from normal queues to avoid the
> confusion that it causes.

Yes, lifecycle.  I don't know where workflow came from.

Turns out I can't switch the queue's lifecycle back to
'default' now.  RT won't let me (no error, just won't
save the change).


From falcone at bestpractical.com  Wed Feb  1 15:50:59 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Wed, 1 Feb 2012 15:50:59 -0500
Subject: [rt-users] RT 4 "Approvals"?
In-Reply-To: <4F29A311.6040107@kickflop.net>
References: <4F296BB1.9030104@kickflop.net>
	<20120201192941.GD5178@jibsheet.com>
	<4F29A311.6040107@kickflop.net>
Message-ID: <20120201205059.GE5178@jibsheet.com>

On Wed, Feb 01, 2012 at 03:39:45PM -0500, Jeff Blaine wrote:
> >The Lifecycle (I'm not sure where Workflow came from) field on a Queue
> >changes which statuses are available in that queue.  Changing a random
> >queue from default to approval doesn't turn it into an Approval queue.
> >That Lifecycle is only intended to be used on the ___Approvals queue
> >and there's a bug open to hide it from normal queues to avoid the
> >confusion that it causes.
> 
> Yes, lifecycle.  I don't know where workflow came from.
> 
> Turns out I can't switch the queue's lifecycle back to
> 'default' now.  RT won't let me (no error, just won't
> save the change).

Yeah, one of the other folks here found that recently, unfortunately
the fix didn't get rolled in before 4.0.5 hit the pre-release track.

http://issues.bestpractical.com/Ticket/Display.html?id=19286

You can test out his branch, or just go fiddle in the DB.  It's a
special case of the default lifecycle.  You can switch between other
lifecycles just fine which is why it took so long to spot.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From van.howell at lcu.edu  Wed Feb  1 18:04:38 2012
From: van.howell at lcu.edu (Howell, Van)
Date: Wed, 1 Feb 2012 23:04:38 +0000
Subject: [rt-users] External Auth using Active Directory 2008
Message-ID: <84E70F84D007E14BBD13A402719AF27C15832CC1@SN2PRD0102MB153.prod.exchangelabs.com>

I am new to RT, Just setup a 4.0.4 server this week.
I am using CentOS 6.2 64 bit.
MySQL
Apache

I used Ken Prickett's CentOS5InstallPlus Some WIKI instructions and made the necessary mods to get things working, so to speak.

I am using the RT_SiteConfig.pm provided in the install doc. The only changes I made was to add my information.

The problem I am having is strange.
I have added several users into the RTUsers group I set up in AD.
The AD Administrator, a common Domain User called Test.Account that is located in the OU with all my other users, my personal account also located in the OU with all the other users and an alternate administrative account I use.

I can logon to RT with the AD Administrator account. I can logon to RT with the Test.Account and I can log in using my alternate account. But I cannot logon using my personal account. I also had my assistant test with her account and she cannot log on.
I have studied the problem and cannot find anything unique about the accounts that cannot logon.

Has anyone seen this problem before?


Van Howell
System Administrator
Lubbock Christian University

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From falcone at bestpractical.com  Wed Feb  1 18:32:43 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Wed, 1 Feb 2012 18:32:43 -0500
Subject: [rt-users] External Auth using Active Directory 2008
In-Reply-To: <84E70F84D007E14BBD13A402719AF27C15832CC1@SN2PRD0102MB153.prod.exchangelabs.com>
References: <84E70F84D007E14BBD13A402719AF27C15832CC1@SN2PRD0102MB153.prod.exchangelabs.com>
Message-ID: <20120201233243.GF5178@jibsheet.com>

On Wed, Feb 01, 2012 at 11:04:38PM +0000, Howell, Van wrote:
>    I have added several users into the RTUsers group I set up in AD.
> 
>    The AD Administrator, a common Domain User called Test.Account that is located in the OU with
>    all my other users, my personal account also located in the OU with all the other users and an
>    alternate administrative account I use.
> 
> 
> 
>    I can logon to RT with the AD Administrator account. I can logon to RT with the Test.Account
>    and I can log in using my alternate account. But I cannot logon using my personal account. I
>    also had my assistant test with her account and she cannot log on.
> 
>    I have studied the problem and cannot find anything unique about the accounts that cannot
>    logon.

We really need to see your configuration for RT-Authen-ExternalAuth
and your logs for the failed login, turned up to debug.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From lab at pacbell.net  Wed Feb  1 18:36:42 2012
From: lab at pacbell.net (20/20 Lab)
Date: Wed, 01 Feb 2012 15:36:42 -0800
Subject: [rt-users] Help installing RT4 on Ubuntu
In-Reply-To: <8CEAE66CC35259E-1B14-1DEE4@webmail-m076.sysops.aol.com>
References: <8CEAA636B3B3E9B-2444-63944@webmail-d182.sysops.aol.com><20120126214009.GL95897@jibsheet.com><8CEAD9C927D0CBE-1B14-16399@webmail-m076.sysops.aol.com><20120130202502.GU95897@jibsheet.com><8CEADB34E8A73CF-1B14-17819@webmail-m076.sysops.aol.com>
	<20120130233238.GV95897@jibsheet.com>
	<8CEAE66CC35259E-1B14-1DEE4@webmail-m076.sysops.aol.com>
Message-ID: <4F29CC8A.4080607@pacbell.net>

It looks like your running this as a dedicated server (or a virtual host 
[ie rt.place.tld]).  I run it as a page.  Its on the same server as my 
nagios install.  here is my rt section.  There are a number of 
differences, but its someplace to start trying.

I also had to add "LoadModule perl_module 
/usr/lib/apache2/modules/mod_perl.so" to my apache2.conf.  This config 
is in my apache2.conf.


             Order allow,deny
             Allow from all

             SetHandler perl-script
             PerlResponseHandler Plack::Handler::Apache2
             PerlSetVar psgi_app /opt/rt4/sbin/rt-server


             use Plack::Handler::Apache2;
             Plack::Handler::Apache2->preload("/opt/rt4/sbin/rt-server");


Now, I dont even begin think that I understand why this works.  I had to 
try a ton of things to get the two to play nice with eachother.  I'm 
running 11.10 (I think)

It looks like your running from an elevated prompt (in case your not I'd 
start there).  If you have no data in your database yet, do a make 
dropdb and redo your make initialize-database.

Hope this helps,
Matt

On 01/31/2012 11:36 AM, Borngunners wrote:
> Okay. Now I have try to reinstall RT again and so far these are the 
> configurations I have:
>
> root at helpdesks:/var/tmp/rt-4.0.4# make initialize-database
> /usr/bin/perl -I/opt/rt4/local/lib -I/opt/rt4/lib 
> sbin/rt-setup-database --action init --prompt-for-dba-password
> In order to create or update your RT database, this script needs to 
> connect to your  mysql instance on localhost as root
> Please specify that user's database password below. If the user has no 
> database
> password, just press return.
>
> Password:
> Working with:
> Type:   mysql
> Host:   localhost
> Name:   rt4
> User:   rtuser
> DBA:    root
> Now creating a mysql database rt4 for RT.
> Done.
> Now populating database schema.
> Done.
> Now inserting database ACLs.
> Granting access to rtuser@'localhost' on rt4.
> Done.
> Now inserting RT core system objects.
> Done.
> [Tue Jan 31 19:32:37 2012] [warning]: The ActiveStatus configuration 
> has been replaced by the new Lifecycles
> functionality. You should set the 'active' property of the 'default'
> lifecycle and add transition rules; see RT_Config.pm for 
> documentation. (/var/tmp/rt-4.0.4/sbin/../lib/RT/Config.pm:766)
> Now inserting data.
> [Tue Jan 31 19:32:37 2012] [info]: 
> RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Comments: 
> SuperUser, Disabled: 0, EmailAddress: root at localhost, Gecos: root, 
> Name: root, Password: password, Privileged: 1, RealName: Enoch Root 
> (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:536)
> [Tue Jan 31 19:32:37 2012] [error]: Could not set user info 
> (/var/tmp/rt-4.0.4/sbin/../lib/RT/Handle.pm:826)
> [Tue Jan 31 19:32:38 2012] [error]: Unable to load user: root : 
> Couldn't find row (/var/tmp/rt-4.0.4/sbin/../lib/RT/Handle.pm:956)
> Done inserting data.
> Done.
>
>
> Apache configuration:
> 
>   ErrorLog /opt/rt4/var/log/apache2.error
>   TransferLog /opt/rt4/var/log/apache2.access
>   # LogLevel debug
>
>   AddDefaultCharset UTF-8
>
>   DocumentRoot "/opt/rt4/share/html"
> 
>        Order allow,deny
>        Allow from all
>
>        SetHandler perl-script
>        PerlResponseHandler Plack::Handler::Apache2
>        PerlSetVar psgi_app /opt/rt4/sbin/rt-server
> 
> 
>         use Plack::Handler::Apache2;
>         Plack::Handler::Apache2->preload("/opt/rt4/sbin/rt-server");
> 
> 
>
>
> thanks,
>
>
> -----Original Message-----
> From: Kevin Falcone 
> To: rt-users 
> Sent: Mon, Jan 30, 2012 6:32 pm
> Subject: Re: [rt-users] Help installing RT4 on Ubuntu
>
> On Mon, Jan 30, 2012 at 05:11:54PM -0500, Borngunners wrote:
> >     Hello Falcone,
> >     I have tried the config as stated. This is the message I receive after
> starting apche:
> >     root at helpdesks:/etc/apache2# /etc/init.d/apache2 start
> >      * Starting web server
> >     apache2
> >     [Mon Jan 30 22:08:01 2012] [warning]: DBD::mysql::st execute failed: Table
> 'rt4.Users' doesn't
> >     exist at /usr/local/share/perl/5.10.1/DBIx/SearchBuilder/Handle.pm line
> 587.
> >     (/usr/local/share/perl/5.10.1/DBIx/SearchBuilder/Handle.pm:587)
>
> You don't appear to have created the RT database.
>
> When you said
>
> >   >       On Thu, Jan 26, 2012 at 12:02:28PM -0500, Borngunners wrote:
> >   >       >     I have installed RT 4 on ubuntu and have tested the web after
>
> What did you do to install RT?  It'd be great if you looked through
> the README and compared the steps to the notes about what you did.
>
> -kevin
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston ? March 5&  6, 2012
>
>
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston --- March 5&  6, 2012

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From srikumarp at fb.com  Wed Feb  1 20:33:38 2012
From: srikumarp at fb.com (Srikumar Nair)
Date: Thu, 2 Feb 2012 01:33:38 +0000
Subject: [rt-users] RT-Authen-ExternalAuth plugin causes 'Can't locate
 Apache.pm in @INC' issue
In-Reply-To: 
Message-ID: 



We have a RT 4.0.4 installation running on Apache.
We have some front end PHP code that calls Perl scripts which use Perl RT APIs for RT interactions.

Recently we installed the RT-Authen-ExternalAuth plugin (version 0.09) to RT.
This creates the the following error when ever the php tries to invoke the perl scripts.
But if I remove the plugin from the RT_SiteConfig.pm file everything works fine again.

Has anyone see this issue?


Can't locate Apache.pm in @INC (@INC contains: /opt/rt4/local/lib /opt/rt4/local/plugins/RT-Site-Facebook-TicketPageMenu/lib /opt/rt4/local/plugins/RT-Site-Facebook-SetQueue/lib /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib /opt/rt4/local/plugins/RT-Extension-ArticleTemplates/lib /opt/rt4/lib /opt/rt4/share/html/fb/perl /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/lib/perl5/5.8.8/CGI/Cookie.pm line 38,  line 558.
Compilation failed in require at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/DBI/Cookie.pm line 3,  line 558.
BEGIN failed--compilation aborted at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/DBI/Cookie.pm line 3,  line 558.
Compilation failed in require at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/DBI.pm line 4,  line 558.
BEGIN failed--compilation aborted at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/DBI.pm line 4,  line 558.
Compilation failed in require at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm line 27,  line 558.
BEGIN failed--compilation aborted at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm line 27,  line 558.

Thanks a bunch.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From bart at pleh.info  Thu Feb  2 02:31:54 2012
From: bart at pleh.info (Bart)
Date: Thu, 2 Feb 2012 08:31:54 +0100
Subject: [rt-users] RT-Authen-ExternalAuth plugin causes 'Can't locate
 Apache.pm in @INC' issue
In-Reply-To: 
References:  
Message-ID: 

Are you only getting the errors when executing the custom PHP/Perl code? Or
does this also affect RT's user interface/functionality?

-- Bart


Op 2 februari 2012 02:33 schreef Srikumar Nair  het
volgende:

>
>
>   We have a RT 4.0.4 installation running on Apache.
> We have some front end PHP code that calls Perl scripts which use Perl RT
> APIs for RT interactions.
>
>  Recently we installed the RT-Authen-ExternalAuth plugin (version 0.09)
> to RT.
> This creates the the following error when ever the php tries to invoke the
> perl scripts.
> But if I remove the plugin from the RT_SiteConfig.pm file everything works
> fine again.
>
>  Has anyone see this issue?
>
>
>  Can't locate Apache.pm in @INC (@INC contains: /opt/rt4/local/lib
> /opt/rt4/local/plugins/RT-Site-Facebook-TicketPageMenu/lib
> /opt/rt4/local/plugins/RT-Site-Facebook-SetQueue/lib
> /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib
> /opt/rt4/local/plugins/RT-Extension-ArticleTemplates/lib /opt/rt4/lib
> /opt/rt4/share/html/fb/perl
> /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi
> /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl
> /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi
> /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl
> /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at
> /usr/lib/perl5/5.8.8/CGI/Cookie.pm line 38,  line 558.
> Compilation failed in require at
> /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/DBI/Cookie.pm
> line 3,  line 558.
> BEGIN failed--compilation aborted at
> /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/DBI/Cookie.pm
> line 3,  line 558.
> Compilation failed in require at
> /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/DBI.pm
> line 4,  line 558.
> BEGIN failed--compilation aborted at
> /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/DBI.pm
> line 4,  line 558.
> Compilation failed in require at
> /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm
> line 27,  line 558.
> BEGIN failed--compilation aborted at
> /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm
> line 27,  line 558.
>
>  Thanks a bunch.
>
>
>
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston ? March 5 & 6, 2012
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From matthias at leisi.net  Thu Feb  2 03:15:21 2012
From: matthias at leisi.net (Matthias Leisi)
Date: Thu, 2 Feb 2012 09:15:21 +0100
Subject: [rt-users] Prepared statement already exists...
In-Reply-To: 
References: 
	
	
Message-ID: 

(I just realized that I originally sent my response to Ruslan only. My bad.)

On Wed, Feb 1, 2012 at 8:25 PM, Ruslan Zakirov  wrote:

>
> From what you have posted I suspect that problem is in DBI/DBD::Pg
> modules. When you check version of the modules, double check with RT's
> UI to make sure what you get in command line interface matches what RT


Admin/Tools/Configuration.html says:

| DB ? ? 1.26
| DBD::Pg ? ? ? ?2.18.1
/usr/lib/perl5/site_perl/5.12.1/x86_64-linux-thread-multi/DBD/Pg.pm
| DBD::Sponge ? ?12.010002
/usr/lib/perl5/vendor_perl/5.12.1/x86_64-linux-thread-multi/DBD/Sponge.pm
| DBI ? ?1.609
/usr/lib/perl5/vendor_perl/5.12.1/x86_64-linux-thread-multi/DBI.pm

> loads. Try downgrading DBD::Pg.

I'm a bit uneasy about messing around with Perl modules, so I'll try
the next one first:

> As workaround you can try to disable server side preparing of statements:
>
> http://search.cpan.org/~turnstep/DBD-Pg-2.18.1/Pg.pm#pg_server_prepare_(integer)

Is there a safe way to add that option within RT? I see that
lib/RT/Handle.pm has sub Connect which get's passed %args which
supposedly is prepared in sub BuildDSN in the same file? Is there a
conceptually better alternative to this:

(in sub BuildDSN, after %args has been set):

? ?if ( $db_type eq 'Pg' ) {
? ? ? ?$args{'pg_server_prepare' = 1;
? ?}

-- Matthias


From bart at pleh.info  Thu Feb  2 03:40:32 2012
From: bart at pleh.info (Bart)
Date: Thu, 2 Feb 2012 09:40:32 +0100
Subject: [rt-users] Add queue change to Update.html (comment/reply) & CF
 Columns under Basic view
Message-ID: 

Hi,

*Change queue during comment/reply (on Update.html)*

I'm wondering of there's an easy way of adding Queue change to the
comment/reply page (Update.html).

It would be a nice addition to habe the ability to enable/disable this. We
have several departments that communicate with each other, having the
ability to change the queue when placing a comment/reply would help with
the communication (easier then placing the comment and then changing the
queue via Basics, or easier then using the Jumbo page.

The reason I'm asking is because I want to stay away from editing these
files (they break on updates ^_~), I'd like a more general solution which
will persist during updates. (same goes for the next question)

*CustomField Single column view under Basics*

Also, I've found this plugin (thanks Rus!)
RT::Extension::CustomFieldsOnUpdate (
http://search.cpan.org/dist/RT-Extension-CustomFieldsOnUpdate/lib/RT/Extension/CustomFieldsOnUpdate.pm)
The plugin works great but the order in which the CustomFields are shown is
kinda messy. The reason for the order being messy is because we've set the
order based upon the two column view under Basics. (which goes from right
to left and then from top to down)

In the RT Config there's this option which should make it possible to show
a single column view of the Custom Fields:

=item C<$EditCustomFieldsSingleColumn>
> When displaying a list of Ticket Custom Fields for editing, RT
> defaults to a 2 column list.  If you set this to 1, it will instead
> display the Custom Fields in a single column.
> =cut
> Set($EditCustomFieldsSingleColumn, 0);


This option however doesn't seem to have any effect.

Will this option get a fix during a future release?

This would be great, if I can display the CustomFields in a single column
on all pages then I can have a uniform CF order which will be the same on
the Ticket overview, basics and comment/reply page. (or any other tip to
achieve this would be appreciated)

-- Bart
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From gsollazz at sgul.ac.uk  Thu Feb  2 03:51:28 2012
From: gsollazz at sgul.ac.uk (Giuseppe Sollazzo)
Date: Thu, 02 Feb 2012 08:51:28 +0000
Subject: [rt-users] Set Subject in if/then clause
In-Reply-To: <20120201191928.GB5178@jibsheet.com>
References: <4F291C02.50006@sgul.ac.uk> <4F293944.8070700@eve-team.com>
	<4F293BA7.3020505@sgul.ac.uk> <4F293E93.80602@eve-team.com>
	<4F2942E2.5060604@eve-team.com> <4F294456.6070606@sgul.ac.uk>
	<20120201191928.GB5178@jibsheet.com>
Message-ID: <4F2A4E90.5040506@sgul.ac.uk>


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 01/02/12 19:19, Kevin Falcone wrote:
>
>
> Guiseppe - for reference, the syntax Gerard gave you came from the
> fact that RT's templates are Text::Templates and you can read more
> about them on CPAN:
>
> http://search.cpan.org/dist/Text-Template/lib/Text/Template.pm
>

Hi Kevin - that's what I was missing! This is very useful for further
developments. Many thanks!

G

> -kevin
>
>
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston ? March 5 & 6, 2012


- -- 
____________________________________

Giuseppe Sollazzo
Senior Systems Analyst
Computing Services
Information Services
St. George's, University Of London
Cranmer Terrace
London SW17 0RE

Email: gsollazz at sgul.ac.uk
Direct Dial: +44 20 8725 5160
Fax: +44 20 8725 3583

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJPKk6LAAoJEAqigArPBfJXnrUH/12aMtr+ZDAr7nz6vXES730K
ESRKexikKHORLlcD9sSSTy54xgCsW64XKleHdK78bZnml93wKkVwF2UYo7w596d1
KuqcmgKgF6GUfPNXsn8nDQ6VfMgmoAPpBdk1JaB2fsBkf6ejT3SWftq1uzePcy+k
f7Z8VZNW1w6CnkfE5G2rUCTJWr4KhEoWOKXG45GXhqp7MLmtwJTXJwiCICvOk73C
U/hrE/ez7xuVePKRXsHP4+FfrMZPvVd2yOmkvXRj2eIz9rVMbuBkjrOSuXG4VLbQ
hK8MJhGpJJGzusckaalIp3INpeWX/RA8ik4pnzCtU27njQedbDx/B6uwocQAP6M=
=rtya
-----END PGP SIGNATURE-----

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From guadagnino.cristiano at creval.it  Thu Feb  2 04:41:41 2012
From: guadagnino.cristiano at creval.it (Guadagnino Cristiano)
Date: Thu, 2 Feb 2012 09:41:41 +0000
Subject: [rt-users] Improvement suggestions
Message-ID: <4F2A5A0C.6090700@creval.it>

Hi all,
I have a few problems that, if solved, I think may enhance the quality 
of RT.

1) RT displays a lot of notification messages through a pale yellow 
message box on top of the ticket page. Everything is displayed the same 
way regardless of nature (info, error, etc.).
I think that it would be good to separate this messages at least into 
two categories: info (usual pale yellow box) and error (pale red box).
Presently, since you cannot easily tell the difference, it happens quite 
often that one operator tries to take a ticket just half a second 
another operator took it, gets an error box, thinks it is the usual 
confirmation box, and starts working on the ticket. Sometimes he even 
does not realize he is doing duplicate work until he tries to resolve!

2) Beginning users of RT often fall into this error: click "resolve" on 
top of the ticket, write some message, then click "resolve" again 
instead of clicking on "update ticket" at the bottom. Why does "resolve" 
still show on top of the ticket when you're resolving? Is it possible to 
remove it? I think it doesn't belongs there.

3) Custom field of type "check multiple values" (check-box) could be 
ticked directly from the display page of a ticket instead of having to 
go into the modify page. It would help streamlining the work on tickets.

Just a few thoughts.

Thank you
Cris

p.s. We are using RT 3.8.10 and testing 4.02. Both have the mentioned 
"problems".

-- 
Cristiano Guadagnino
Servizio Data Administration
Bankadati S.I.
Gruppo Credito Valtellinese
Tel. +39-0342-522172


From Guy.Jeffery at baesystemsdetica.com  Thu Feb  2 07:42:32 2012
From: Guy.Jeffery at baesystemsdetica.com (Jeffery, Guy)
Date: Thu, 2 Feb 2012 12:42:32 -0000
Subject: [rt-users] How to adjust 'Organization' in 'About me'
Message-ID: 

Hi,
 
Quick question that hopefully is fairly easy to resolve - my users want to be able to adjust their 'Organization' within 'About me' in the Preferences menu. 
 
Providing 'ModifySelf' privileges to users allows adjustment of every other field on that screen, apart from Organization. What privilege do users need to alter this? 
 
I'm using RT 3.8.7 and 3.8.9.
 
 
Thanks,
 
Guy

Please consider the environment before printing this email.
 
This message should be regarded as confidential. If you have received this email in error please notify the sender and destroy it immediately.
 
Statements of intent shall only become binding when confirmed in hard copy by an authorised signatory. 
 
The contents of this email may relate to dealings with other companies under the control of BAE Systems plc details of which can be found at http://www.baesystems.com/Businesses/index.htm.
 
Detica Limited is a BAE Systems company trading as BAE Systems Detica.
Detica Limited is registered in England and Wales under No: 1337451.
Registered office: Surrey Research Park, Guildford, Surrey, GU2 7YP, England.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From kamber.dalal at verizon.com  Thu Feb  2 09:00:06 2012
From: kamber.dalal at verizon.com (Dalal, Kamber Z)
Date: Thu, 2 Feb 2012 09:00:06 -0500
Subject: [rt-users] CanonicalizeEmailAddressMatch
Message-ID: <7C3070F471BFF44C8967FEE9CCF0B18528D01621@FHDP1LUMXC7V42.us.one.verizon.com>

Need the proper syntax for 'CanonicalizeEmailAddressMatch' setting to match either @domaina or @domainb

to allow 'CanonicalizeEmailAddressReplace' it with @domainc.


Thank you,
Kamber Dalal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From borngunners at aol.com  Thu Feb  2 09:03:37 2012
From: borngunners at aol.com (Borngunners)
Date: Thu, 2 Feb 2012 09:03:37 -0500 (EST)
Subject: [rt-users] Help installing RT4 on Ubuntu
In-Reply-To: 
References: <8CEAA636B3B3E9B-2444-63944@webmail-d182.sysops.aol.com><20120126214009.GL95897@jibsheet.com><8CEAD9C927D0CBE-1B14-16399@webmail-m076.sysops.aol.com><20120130202502.GU95897@jibsheet.com><8CEADB34E8A73CF-1B14-17819@webmail-m076.sysops.aol.com><20120130233238.GV95897@jibsheet.com><8CEAE66CC35259E-1B14-1DEE4@webmail-m076.sysops.aol.com>
	
Message-ID: <8CEAFCA97A6097A-1C60-8B16@webmail-m076.sysops.aol.com>

I have reinstalled everything again, starting from the OS. I installed ubuntu 11 and I installed RT using the following command apt-get install request-tracker4. Everything has being installed, but I am still getting the It Works! message. It seems like this version of RT is a bit complicated to install, right? Don't know what else to do regarding the installing RT. I seriously need help with detail how-to, please....

Thanks,

 

 

 

-----Original Message-----
From: Bart 
To: rt-users 
Sent: Wed, Feb 1, 2012 10:06 am
Subject: Re: [rt-users] Help installing RT4 on Ubuntu


Hi,


Are you trying to do the source installation on Ubuntu? (btw, which version of Ubuntu?)


At least, it looks that way. If the above is what you've done then I really don't understand the external auth errors your getting, a clean installation doesn't contain external auth...


My advise would be to make sure you have a clean installation up and running first before playing with plugins (theres really no point).


Also, if you have the latest Ubuntu server then you can also install RT using Aptitude ( aptitude search request-tracker4 ).


I assume you've documented all your steps up to this point, could you show us exactly what you've done? (you've installed plugins, so undo that to begin with or at least turn off the plugins in the RT_SiteConfig).



-- Bart



Op 31 januari 2012 20:36 schreef Borngunners  het volgende:

 Okay. Now I have try to reinstall RT again and so far these are the configurations I have:

root at helpdesks:/var/tmp/rt-4.0.4# make initialize-database
/usr/bin/perl -I/opt/rt4/local/lib -I/opt/rt4/lib sbin/rt-setup-database --action init --prompt-for-dba-password
In order to create or update your RT database, this script needs to connect to your  mysql instance on localhost as root
Please specify that user's database password below. If the user has no database
password, just press return.

Password:
Working with:
Type:   mysql
Host:   localhost
Name:   rt4
User:   rtuser
DBA:    root
Now creating a mysql database rt4 for RT.
Done.
Now populating database schema.
Done.
Now inserting database ACLs.
Granting access to rtuser@'localhost' on rt4.
Done.
Now inserting RT core system objects.
Done.
[Tue Jan 31 19:32:37 2012] [warning]: The ActiveStatus configuration has been replaced by the new Lifecycles
functionality. You should set the 'active' property of the 'default'
lifecycle and add transition rules; see RT_Config.pm for documentation. (/var/tmp/rt-4.0.4/sbin/../lib/RT/Config.pm:766)
Now inserting data.
[Tue Jan 31 19:32:37 2012] [info]: RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Comments: SuperUser, Disabled: 0, EmailAddress: root at localhost, Gecos: root, Name: root, Password: password, Privileged: 1, RealName: Enoch Root (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:536)
[Tue Jan 31 19:32:37 2012] [error]: Could not set user info (/var/tmp/rt-4.0.4/sbin/../lib/RT/Handle.pm:826)
[Tue Jan 31 19:32:38 2012] [error]: Unable to load user: root : Couldn't find row (/var/tmp/rt-4.0.4/sbin/../lib/RT/Handle.pm:956)
Done inserting data.
Done.


Apache configuration:

  ErrorLog /opt/rt4/var/log/apache2.error
  TransferLog /opt/rt4/var/log/apache2.access
  # LogLevel debug

  AddDefaultCharset UTF-8

  DocumentRoot "/opt/rt4/share/html"
   
       Order allow,deny
       Allow from all

       SetHandler perl-script

       PerlResponseHandler Plack::Handler::Apache2
       PerlSetVar psgi_app /opt/rt4/sbin/rt-server

   
    

        use Plack::Handler::Apache2;
        Plack::Handler::Apache2->preload("/opt/rt4/sbin/rt-server");

    



thanks,

 

 


-----Original Message-----
From: Kevin Falcone 
To: rt-users 

Sent: Mon, Jan 30, 2012 6:32 pm
Subject: Re: [rt-users] Help installing RT4 on Ubuntu




On Mon, Jan 30, 2012 at 05:11:54PM -0500, Borngunners wrote:
>    Hello Falcone,
>    I have tried the config as stated. This is the message I receive after 
starting apche:
>    root at helpdesks:/etc/apache2# /etc/init.d/apache2 start
>     * Starting web server
>    apache2
>    [Mon Jan 30 22:08:01 2012] [warning]: DBD::mysql::st execute failed: Table 
'rt4.Users' doesn't
>    exist at /usr/local/share/perl/5.10.1/DBIx/SearchBuilder/Handle.pm line 
587.
>    (/usr/local/share/perl/5.10.1/DBIx/SearchBuilder/Handle.pm:587)

You don't appear to have created the RT database.

When you said

>  >      On Thu, Jan 26, 2012 at 12:02:28PM -0500, Borngunners wrote:
>  >      >    I have installed RT 4 on ubuntu and have tested the web after

What did you do to install RT?  It'd be great if you looked through
the README and compared the steps to the notes about what you did.

-kevin

 


--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Boston ? March 5 & 6, 2012

 

--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Boston ? March 5 & 6, 2012



 
--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Boston ? March 5 & 6, 2012

 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From diaulas.castro at intersolution.inf.br  Thu Feb  2 09:12:30 2012
From: diaulas.castro at intersolution.inf.br (Diaulas Castro)
Date: Thu, 2 Feb 2012 14:12:30 +0000
Subject: [rt-users] RES:  Help installing RT4 on Ubuntu
In-Reply-To: <8CEAFCA97A6097A-1C60-8B16@webmail-m076.sysops.aol.com>
References: <8CEAA636B3B3E9B-2444-63944@webmail-d182.sysops.aol.com><20120126214009.GL95897@jibsheet.com><8CEAD9C927D0CBE-1B14-16399@webmail-m076.sysops.aol.com><20120130202502.GU95897@jibsheet.com><8CEADB34E8A73CF-1B14-17819@webmail-m076.sysops.aol.com><20120130233238.GV95897@jibsheet.com><8CEAE66CC35259E-1B14-1DEE4@webmail-m076.sysops.aol.com>
	
	<8CEAFCA97A6097A-1C60-8B16@webmail-m076.sysops.aol.com>
Message-ID: <3B9178D874F56F47B616AB50C01F7B7701D5FACC@GRUPRD8002MB111.lamprd80.prod.outlook.com>


Did you put /rt in the end of url? Ex: http://192.168.1.1/rt

Have Ubuntu 11.10 installed 3 weeks ago, don?t remember to change apache conf except of including this line:

    Include "/etc/request-tracker4/apache2-modperl2.conf?


Last 2 lines of my conf:

tail -n2 /etc/apache2/sites-available/default
Include "/etc/request-tracker4/apache2-modperl2.conf"




De: rt-users-bounces at lists.bestpractical.com [mailto:rt-users-bounces at lists.bestpractical.com] Em nome de Borngunners
Enviada em: quinta-feira, 2 de fevereiro de 2012 12:04
Para: bart at pleh.info; rt-users at lists.bestpractical.com
Assunto: Re: [rt-users] Help installing RT4 on Ubuntu

I have reinstalled everything again, starting from the OS. I installed ubuntu 11 and I installed RT using the following command apt-get install request-tracker4. Everything has being installed, but I am still getting the It Works! message. It seems like this version of RT is a bit complicated to install, right? Don't know what else to do regarding the installing RT. I seriously need help with detail how-to, please....

Thanks,



-----Original Message-----
From: Bart >
To: rt-users >
Sent: Wed, Feb 1, 2012 10:06 am
Subject: Re: [rt-users] Help installing RT4 on Ubuntu
Hi,

Are you trying to do the source installation on Ubuntu? (btw, which version of Ubuntu?)

At least, it looks that way. If the above is what you've done then I really don't understand the external auth errors your getting, a clean installation doesn't contain external auth...

My advise would be to make sure you have a clean installation up and running first before playing with plugins (theres really no point).

Also, if you have the latest Ubuntu server then you can also install RT using Aptitude ( aptitude search request-tracker4 ).

I assume you've documented all your steps up to this point, could you show us exactly what you've done? (you've installed plugins, so undo that to begin with or at least turn off the plugins in the RT_SiteConfig).


-- Bart

Op 31 januari 2012 20:36 schreef Borngunners > het volgende:
Okay. Now I have try to reinstall RT again and so far these are the configurations I have:

root at helpdesks:/var/tmp/rt-4.0.4# make initialize-database
/usr/bin/perl -I/opt/rt4/local/lib -I/opt/rt4/lib sbin/rt-setup-database --action init --prompt-for-dba-password
In order to create or update your RT database, this script needs to connect to your  mysql instance on localhost as root
Please specify that user's database password below. If the user has no database
password, just press return.

Password:
Working with:
Type:   mysql
Host:   localhost
Name:   rt4
User:   rtuser
DBA:    root
Now creating a mysql database rt4 for RT.
Done.
Now populating database schema.
Done.
Now inserting database ACLs.
Granting access to rtuser@'localhost' on rt4.
Done.
Now inserting RT core system objects.
Done.
[Tue Jan 31 19:32:37 2012] [warning]: The ActiveStatus configuration has been replaced by the new Lifecycles
functionality. You should set the 'active' property of the 'default'
lifecycle and add transition rules; see RT_Config.pm for documentation. (/var/tmp/rt-4.0.4/sbin/../lib/RT/Config.pm:766)
Now inserting data.
[Tue Jan 31 19:32:37 2012] [info]: RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Comments: SuperUser, Disabled: 0, EmailAddress: root at localhost, Gecos: root, Name: root, Password: password, Privileged: 1, RealName: Enoch Root (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:536)
[Tue Jan 31 19:32:37 2012] [error]: Could not set user info (/var/tmp/rt-4.0.4/sbin/../lib/RT/Handle.pm:826)
[Tue Jan 31 19:32:38 2012] [error]: Unable to load user: root : Couldn't find row (/var/tmp/rt-4.0.4/sbin/../lib/RT/Handle.pm:956)
Done inserting data.
Done.


Apache configuration:

  ErrorLog /opt/rt4/var/log/apache2.error
  TransferLog /opt/rt4/var/log/apache2.access
  # LogLevel debug

  AddDefaultCharset UTF-8

  DocumentRoot "/opt/rt4/share/html"
   
       Order allow,deny
       Allow from all

       SetHandler perl-script

       PerlResponseHandler Plack::Handler::Apache2
       PerlSetVar psgi_app /opt/rt4/sbin/rt-server
   
    

        use Plack::Handler::Apache2;
        Plack::Handler::Apache2->preload("/opt/rt4/sbin/rt-server");
    



thanks,


-----Original Message-----
From: Kevin Falcone >
To: rt-users >
Sent: Mon, Jan 30, 2012 6:32 pm
Subject: Re: [rt-users] Help installing RT4 on Ubuntu

On Mon, Jan 30, 2012 at 05:11:54PM -0500, Borngunners wrote:

>    Hello Falcone,

>    I have tried the config as stated. This is the message I receive after

starting apche:

>    root at helpdesks:/etc/apache2# /etc/init.d/apache2 start

>     * Starting web server

>    apache2

>    [Mon Jan 30 22:08:01 2012] [warning]: DBD::mysql::st execute failed: Table

'rt4.Users' doesn't

>    exist at /usr/local/share/perl/5.10.1/DBIx/SearchBuilder/Handle.pm line

587.

>    (/usr/local/share/perl/5.10.1/DBIx/SearchBuilder/Handle.pm:587)



You don't appear to have created the RT database.



When you said



>  >      On Thu, Jan 26, 2012 at 12:02:28PM -0500, Borngunners wrote:

>  >      >    I have installed RT 4 on ubuntu and have tested the web after



What did you do to install RT?  It'd be great if you looked through

the README and compared the steps to the notes about what you did.



-kevin

--------

RT Training Sessions (http://bestpractical.com/services/training.html)

* Boston ? March 5 & 6, 2012

--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Boston ? March 5 & 6, 2012


--------

RT Training Sessions (http://bestpractical.com/services/training.html)

* Boston ? March 5 & 6, 2012
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From bart at pleh.info  Thu Feb  2 10:00:01 2012
From: bart at pleh.info (Bart)
Date: Thu, 2 Feb 2012 16:00:01 +0100
Subject: [rt-users] Help installing RT4 on Ubuntu
In-Reply-To: <3B9178D874F56F47B616AB50C01F7B7701D5FACC@GRUPRD8002MB111.lamprd80.prod.outlook.com>
References: <8CEAA636B3B3E9B-2444-63944@webmail-d182.sysops.aol.com>
	<20120126214009.GL95897@jibsheet.com>
	
	<8CEAD9C927D0CBE-1B14-16399@webmail-m076.sysops.aol.com>
	<20120130202502.GU95897@jibsheet.com>
	<8CEADB34E8A73CF-1B14-17819@webmail-m076.sysops.aol.com>
	<20120130233238.GV95897@jibsheet.com>
	<8CEAE66CC35259E-1B14-1DEE4@webmail-m076.sysops.aol.com>
	
	<8CEAFCA97A6097A-1C60-8B16@webmail-m076.sysops.aol.com>
	<3B9178D874F56F47B616AB50C01F7B7701D5FACC@GRUPRD8002MB111.lamprd80.prod.outlook.com>
Message-ID: 

Hi,

As mentioned, after the installation you have to manually add the RT config
to apache.

The installation won't configure apache automatically for you, you can
probably use the include line Diaulas mentioned.

Other then that, it looks like you've done the installation the Ubuntu way
(which is ok), all you need to do now is configure Apache.

Let us know if it worked.

-- Bart


Op 2 februari 2012 15:12 schreef Diaulas Castro <
diaulas.castro at intersolution.inf.br> het volgende:

>  ** **
>
> Did you put /rt in the end of url? Ex: http://192.168.1.1/rt****
>
> ** **
>
> Have Ubuntu 11.10 installed 3 weeks ago, don?t remember to change apache
> conf except of including this line:****
>
> ** **
>
>     Include "/etc/request-tracker4/apache2-modperl2.conf?****
>
> ** **
>
> ** **
>
> Last 2 lines of my conf:****
>
> ** **
>
> tail -n2 /etc/apache2/sites-available/default****
>
> Include "/etc/request-tracker4/apache2-modperl2.conf"****
>
> ****
>
> ** **
>
> ** **
>
> ** **
>
> *De:* rt-users-bounces at lists.bestpractical.com [mailto:
> rt-users-bounces at lists.bestpractical.com] *Em nome de *Borngunners
> *Enviada em:* quinta-feira, 2 de fevereiro de 2012 12:04
> *Para:* bart at pleh.info; rt-users at lists.bestpractical.com
> *Assunto:* Re: [rt-users] Help installing RT4 on Ubuntu****
>
> ** **
>
> I have reinstalled everything again, starting from the OS. I installed
> ubuntu 11 and I installed RT using the following command apt-get install
> request-tracker4. Everything has being installed, but I am still getting
> the It Works! message. It seems like this version of RT is a bit
> complicated to install, right? Don't know what else to do regarding the
> installing RT. I seriously need help with detail how-to, please....
>
> Thanks,****
>
> ** **
>
> ** **
>
> ** **
>
> -----Original Message-----
> From: Bart 
> To: rt-users 
> Sent: Wed, Feb 1, 2012 10:06 am
> Subject: Re: [rt-users] Help installing RT4 on Ubuntu****
>
> Hi, ****
>
> ** **
>
> Are you trying to do the source installation on Ubuntu? (btw, which
> version of Ubuntu?)****
>
> ** **
>
> At least, it looks that way. If the above is what you've done then I
> really don't understand the external auth errors your getting, a clean
> installation doesn't contain external auth...****
>
> ** **
>
> My advise would be to make sure you have a clean installation up and
> running first before playing with plugins (theres really no point).****
>
> ** **
>
> Also, if you have the latest Ubuntu server then you can also install RT
> using Aptitude ( aptitude search request-tracker4 ).****
>
> ** **
>
> I assume you've documented all your steps up to this point, could you show
> us exactly what you've done? (you've installed plugins, so undo that to
> begin with or at least turn off the plugins in the RT_SiteConfig).****
>
> ** **
>
>
> -- Bart
>
> ****
>
> Op 31 januari 2012 20:36 schreef Borngunners  het
> volgende:****
>
> Okay. Now I have try to reinstall RT again and so far these are the
> configurations I have:
>
> root at helpdesks:/var/tmp/rt-4.0.4# make initialize-database
> /usr/bin/perl -I/opt/rt4/local/lib -I/opt/rt4/lib sbin/rt-setup-database
> --action init --prompt-for-dba-password
> In order to create or update your RT database, this script needs to
> connect to your  mysql instance on localhost as root
> Please specify that user's database password below. If the user has no
> database
> password, just press return.
>
> Password:
> Working with:
> Type:   mysql
> Host:   localhost
> Name:   rt4
> User:   rtuser
> DBA:    root
> Now creating a mysql database rt4 for RT.
> Done.
> Now populating database schema.
> Done.
> Now inserting database ACLs.
> Granting access to rtuser@'localhost' on rt4.
> Done.
> Now inserting RT core system objects.
> Done.
> [Tue Jan 31 19:32:37 2012] [warning]: The ActiveStatus configuration has
> been replaced by the new Lifecycles
> functionality. You should set the 'active' property of the 'default'
> lifecycle and add transition rules; see RT_Config.pm for documentation.
> (/var/tmp/rt-4.0.4/sbin/../lib/RT/Config.pm:766)
> Now inserting data.
> [Tue Jan 31 19:32:37 2012] [info]:
> RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Comments:
> SuperUser, Disabled: 0, EmailAddress: root at localhost, Gecos: root, Name:
> root, Password: password, Privileged: 1, RealName: Enoch Root
> (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:536)
> [Tue Jan 31 19:32:37 2012] [error]: Could not set user info
> (/var/tmp/rt-4.0.4/sbin/../lib/RT/Handle.pm:826)
> [Tue Jan 31 19:32:38 2012] [error]: Unable to load user: root : Couldn't
> find row (/var/tmp/rt-4.0.4/sbin/../lib/RT/Handle.pm:956)
> Done inserting data.
> Done.
>
>
> Apache configuration:
> 
>   ErrorLog /opt/rt4/var/log/apache2.error
>   TransferLog /opt/rt4/var/log/apache2.access
>   # LogLevel debug
>
>   AddDefaultCharset UTF-8
>
>   DocumentRoot "/opt/rt4/share/html"
>    
>        Order allow,deny
>        Allow from all
>
>        SetHandler perl-script ****
>
>
>        PerlResponseHandler Plack::Handler::Apache2
>        PerlSetVar psgi_app /opt/rt4/sbin/rt-server****
>
>    
>      ****
>
>
>         use Plack::Handler::Apache2;
>         Plack::Handler::Apache2->preload("/opt/rt4/sbin/rt-server");****
>
>     
> 
>
>
> thanks,****
>
> ** **
>
> ** **
>
> -----Original Message-----
> From: Kevin Falcone 
> To: rt-users ****
>
> Sent: Mon, Jan 30, 2012 6:32 pm
> Subject: Re: [rt-users] Help installing RT4 on Ubuntu****
>
> On Mon, Jan 30, 2012 at 05:11:54PM -0500, Borngunners wrote:****
>
> >    Hello Falcone,****
>
> >    I have tried the config as stated. This is the message I receive after ****
>
> starting apche:****
>
> >    root at helpdesks:/etc/apache2# /etc/init.d/apache2 start****
>
> >     * Starting web server****
>
> >    apache2****
>
> >    [Mon Jan 30 22:08:01 2012] [warning]: DBD::mysql::st execute failed: Table ****
>
> 'rt4.Users' doesn't****
>
> >    exist at /usr/local/share/perl/5.10.1/DBIx/SearchBuilder/Handle.pm line ****
>
> 587.****
>
> >    (/usr/local/share/perl/5.10.1/DBIx/SearchBuilder/Handle.pm:587)****
>
> ** **
>
> You don't appear to have created the RT database.****
>
> ** **
>
> When you said****
>
> ** **
>
> >  >      On Thu, Jan 26, 2012 at 12:02:28PM -0500, Borngunners wrote:****
>
> >  >      >    I have installed RT 4 on ubuntu and have tested the web after****
>
> ** **
>
> What did you do to install RT?  It'd be great if you looked through****
>
> the README and compared the steps to the notes about what you did.****
>
> ** **
>
> -kevin****
>
>    --------****
>
> RT Training Sessions (http://bestpractical.com/services/training.html)****
>
> * Boston ? March 5 & 6, 2012****
>
>
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston ? March 5 & 6, 2012****
>
> ** **
>
> --------****
>
> RT Training Sessions (http://bestpractical.com/services/training.html)****
>
> * Boston ? March 5 & 6, 2012****
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From MarkRoedel at letu.edu  Thu Feb  2 10:22:04 2012
From: MarkRoedel at letu.edu (Roedel, Mark)
Date: Thu, 2 Feb 2012 15:22:04 +0000
Subject: [rt-users] [rt-devel] RT 4.0.5rc1 Released
In-Reply-To: <4F28A3DC.1070005@bestpractical.com>
References: <20120125154445.GB5133@jibsheet.com>
	<2B3D699B434F1F49B73F97861B5FD5446FB44D9E@Mail-DB-1.letnet.net>
	<4F28A3DC.1070005@bestpractical.com>
Message-ID: <2B3D699B434F1F49B73F97861B5FD5446FB4838B@Mail-DB-1.letnet.net>

LOL -- well that's a fine how-do-you-do!

Actually, I did skip 4.0.4 (my recollection is that it was announced as solely addressing an installation issue I hadn't had) so the previous version was 4.0.3.

What I'm seeing in the emails seems like mostly the removal of some of the Aileron theming so it looks more like I'm getting an email than a copy/paste from the web page.



-----Original Message-----
From: rt-users-bounces at lists.bestpractical.com [mailto:rt-users-bounces at lists.bestpractical.com] On Behalf Of Thomas Sibley
Sent: Tuesday, January 31, 2012 8:31 PM
To: RT Users
Subject: Re: [rt-users] [rt-devel] RT 4.0.5rc1 Released

On 01/31/2012 09:57 AM, Roedel, Mark wrote:
> Working well for us so far -- I really like the new look for dashboard emails.

I don't think the dashboard emails have changed since 4.0.4.  Are you comparing to a different version?  If not, I'd be curious to see what change you're talking about.  ;)



From srikumarp at fb.com  Thu Feb  2 10:50:26 2012
From: srikumarp at fb.com (Srikumar Nair)
Date: Thu, 2 Feb 2012 15:50:26 +0000
Subject: [rt-users] RT-Authen-ExternalAuth plugin causes 'Can't locate
 Apache.pm in @INC' issue
In-Reply-To: 
References:  ,
	
Message-ID: <9A7E4AF7-D857-4A50-A0F6-1EE0DDA4C5A2@fb.com>

Thanks Bart.

User interface is not affected. Only Php/Perl code execution.


On Feb 1, 2012, at 11:32 PM, "Bart" > wrote:

Are you only getting the errors when executing the custom PHP/Perl code? Or does this also affect RT's user interface/functionality?

-- Bart


Op 2 februari 2012 02:33 schreef Srikumar Nair > het volgende:


We have a RT 4.0.4 installation running on Apache.
We have some front end PHP code that calls Perl scripts which use Perl RT APIs for RT interactions.

Recently we installed the RT-Authen-ExternalAuth plugin (version 0.09) to RT.
This creates the the following error when ever the php tries to invoke the perl scripts.
But if I remove the plugin from the RT_SiteConfig.pm file everything works fine again.

Has anyone see this issue?


Can't locate Apache.pm in @INC (@INC contains: /opt/rt4/local/lib /opt/rt4/local/plugins/RT-Site-Facebook-TicketPageMenu/lib /opt/rt4/local/plugins/RT-Site-Facebook-SetQueue/lib /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib /opt/rt4/local/plugins/RT-Extension-ArticleTemplates/lib /opt/rt4/lib /opt/rt4/share/html/fb/perl /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /usr/lib/perl5/5.8.8/CGI/Cookie.pm line 38,  line 558.
Compilation failed in require at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/DBI/Cookie.pm line 3,  line 558.
BEGIN failed--compilation aborted at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/DBI/Cookie.pm line 3,  line 558.
Compilation failed in require at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/DBI.pm line 4,  line 558.
BEGIN failed--compilation aborted at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/DBI.pm line 4,  line 558.
Compilation failed in require at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm line 27,  line 558.
BEGIN failed--compilation aborted at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm line 27,  line 558.

Thanks a bunch.



--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Boston ? March 5 & 6, 2012

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From bluethundr at jokefire.com  Thu Feb  2 11:05:53 2012
From: bluethundr at jokefire.com (Tim Dunphy)
Date: Thu, 02 Feb 2012 16:05:53 -0000 (UTC)
Subject: [rt-users] RT Bounce messages
In-Reply-To: <20120201185334.GZ95897@jibsheet.com>
Message-ID: <3889c7ed-1dd7-4479-b77c-7ff708d11dd0@li289-212>



> This looks like an RT_Config.pm file.  Have you been editing
> RT_Config.pm directly or did you copy all of RT_Config.pm to
> RT_SiteConfig.pm?  Neither of those are recommended and it makes
> following what is going on really hard.

I'm sorry but I don't recall doing this. However looking at a diff of the two files it certainly seems possible. 

> Usually this means RT was configured to send mail back into itself and
> something has a X-RT-Loop-Prevention header.  Often this is a
> misconfigured Template or a too-broad RTAddressRegexp setting.

Here's how my RTAddressRegexp is set - 

Set($RTAddressRegexp, undef);


Well I don't recall copying the RT_Config.pm to RT_SiteConfig. 

However one thing that I can say is that I remember that I started seeing these bounce messages right about the time that I tried including an LDAP ExternalAuth method in the RT_SiteConfig.pm file.

# These are the full settings for each external service as a HashOfHashes
# Note that you may have as many external services as you wish. They will
# be checked in the order specified in the Priority directives above.
# e.g. 
#   Set(ExternalAuthPriority,['My_LDAP','My_MySQL','My_Oracle','SecondaryLDAP','Other-DB']);
#
Set($ExternalSettings,      {   
                                # AN EXAMPLE LDAP SERVICE
                                'My_LDAP'       =>  {   ## GENERIC SECTION
                                                        # The type of service (db/ldap/cookie) 
                                                        'type'                      =>  'ldap',
                                                        # The server hosting the service
                                                        'server'                    =>  'ldap01.mlbam.com',
                                                        ## SERVICE-SPECIFIC SECTION
                                                        # If you can bind to your LDAP server anonymously you should 
                                                        # remove the user and pass config lines, otherwise specify them here:
                                                        # 
                                                        # The username RT should use to connect to the LDAP server 
                                                        #'user'                      =>  'uid=Dunphy,ou=People,cn=mlbam,cn=com',
                                                        # The password RT should use to connect to the LDAP server
                                                        #'pass'                    =>  'WR=78zu!uX',
                                                        #
                                                        # The LDAP search base
                                                        'base'                      =>  'ou=People,dc=mlbam,dc=com',
                                                        #
                                                        # ALL FILTERS MUST BE VALID LDAP FILTERS ENCASED IN PARENTHESES!
                                                        # YOU **MUST** SPECIFY A filter AND A d_filter!!
                                                        #
                                                        # The filter to use to match RT-Users
                                                        'filter'                    =>  '(objectclass=*)',
                                                        # A catch-all example filter: '(objectClass=*)'
                                                        #
                                                        # The filter that will only match disabled users
                                                        'd_filter'                  =>  '(objectClass=FooBarBaz)',
                                                        # A catch-none example d_filter: '(objectClass=FooBarBaz)'
                                                        #
                                                        # Should we try to use TLS to encrypt connections?
                                                        'tls'                       =>  0,
                                                        # SSL Version to provide to Net::SSLeay *if* using SSL
                                                        #'ssl_version'               =>  2,
                                                        # What other args should I pass to Net::LDAP->new($host, at args)?
                                                        'net_ldap_args'             => [    version =>  3   ],
                                                        # Does authentication depend on group membership? What group name?
                                                        #'group'                     =>  'RTUsers',
                                                        # What is the attribute for the group object that determines membership?
                                                        #'group_attr'                =>  'cn',
                                                        ## RT ATTRIBUTE MATCHING SECTION
                                                        # The list of RT attributes that uniquely identify a user
                                                        # This example shows what you *can* specify.. I recommend reducing this
                                                        # to just the Name and EmailAddress to save encountering problems later.
                                                        'attr_match_list'           => [    'Name',
                                                                                            'EmailAddress', 
                                                                                        ],
                                                        # The mapping of RT attributes on to LDAP attributes
                                                        'attr_map'                  =>  {   'Name' => 'uid',
                                                                                            'EmailAddress' => 'mail',
                                                                                        }
                                                    },
                                # An example SSO cookie service
                                'My_SSO_Cookie'  => {   # # The type of service (db/ldap/cookie)
                                                        'type'                      =>  'cookie',
                                                        # The name of the cookie to be used
                                                        'name'                      =>  'loginCookieValue',
                                                        # The users table
                                                        'u_table'                   =>  'users',
                                                        # The username field in the users table
                                                        'u_field'                   =>  'username',
                                                        # The field in the users table that uniquely identifies a user
                                                        # and also exists in the cookies table
                                                        'u_match_key'               =>  'userID',
                                                        # The cookies table
                                                        'c_table'                   =>  'login_cookie',
                                                        # The field that stores cookie values
                                                        'c_field'                   =>  'loginCookieValue',
                                                        # The field in the cookies table that uniquely identifies a user
                                                        # and also exists in the users table
                                                        'c_match_key'               =>  'loginCookieUserID',
                                                        # The DB service in this configuration to use to lookup the cookie information
                                                        'db_service_name'           =>  'My_MySQL'
                                                    }
                                }
);

1;



I wonder if this section could be part of the problem I'm having...


thanks
tim


> ------------------------------------
> 
> 
> 
> # RT was configured with:
> #
> #   $ ./configure --enable-graphviz --enable-gd --enable-gpg --with-db-host=localhost --with-db-rt-host=localhost --with-db-dba=admin --with-db-rt-user=admin --with-db-rt-pass=Duk30fZh0u --with-web-user=apache --with-web-group=apache --with-apachectl /usr/sbin/apachectl --localstatedir=/var/rt4 --sysconfdir=/etc/rt4 --prefix=/usr/local/rt4 --exec-prefix=/usr/local/sbin
> #
> 
> package RT;
> 
> #############################  WARNING  #############################
> #                                                                   #
> #                     NEVER EDIT RT_Config.pm !                     #
> #                                                                   #
> #         Instead, copy any sections you want to change to          #
> #         RT_SiteConfig.pm and edit them there.  Otherwise,         #
> #         your changes will be lost when you upgrade RT.            #
> #                                                                   #
> #############################  WARNING  #############################
> 
> =head1 NAME
> 
> RT::Config
> 
> =head1 Base configuration
> 
> =over 4
> 
> =item C<$rtname>
> 
> C<$rtname> is the string that RT will look for in mail messages to
> figure out what ticket a new piece of mail belongs to.
> 
> Your domain name is recommended, so as not to pollute the namespace.
> Once you start using a given tag, you should probably never change it;
> otherwise, mail for existing tickets won't get put in the right place.
> 
> =cut
> 
> Set($rtname, "mlb.com");
> 
> =item C<$Organization>
> 
> You should set this to your organization's DNS domain. For example,
> I or I. It is used by the linking
> interface to guarantee that ticket URIs are unique and easy to
> construct.  Changing it after you have created tickets in the system
> will B all existing ticket links!
> 
> =cut
> 
> Set($Organization, "mlb.com");
> 
> =item C<$CorrespondAddress>, C<$CommentAddress>
> 
> RT is designed such that any mail which already has a ticket-id
> associated with it will get to the right place automatically.
> 
> C<$CorrespondAddress> and C<$CommentAddress> are the default addresses
> that will be listed in From: and Reply-To: headers of correspondence
> and comment mail tracked by RT, unless overridden by a queue-specific
> address.  They should be set to email addresses which have been
> configured as aliases for F.
> 
> =cut
> 
> Set($CorrespondAddress, 'rt at mm3.mlbam.com');
> 
> Set($CommentAddress, 'rt-comment at mm3.mlbam.com');
> 
> =item C<$WebDomain>
> 
> Domain name of the RT server, e.g. 'www.example.com'. It should not
> contain anything except the server name.
> 
> =cut
> 
> Set($WebDomain, "rt.mm3.mlbam.com");
> 
> =item C<$WebPort>
> 
> If we're running as a superuser, run on port 80.  Otherwise, pick a
> high port for this user.
> 
> 443 is default port for https protocol.
> 
> =cut
> 
> Set($WebPort, 80);# + ($< * 7274) % 32766 + ($< && 1024));
> 
> =item C<$WebPath>
> 
> If you're putting the web UI somewhere other than at the root of your
> server, you should set C<$WebPath> to the path you'll be serving RT
> at.
> 
> C<$WebPath> requires a leading / but no trailing /, or it can be
> blank.
> 
> In most cases, you should leave C<$WebPath> set to "" (an empty
> value).
> 
> =cut
> 
> Set($WebPath, "/helpdesk");
> 
> =item C<$Timezone>
> 
> C<$Timezone> is the default timezone, used to convert times entered by
> users into GMT, as they are stored in the database, and back again;
> users can override this.  It should be set to a timezone recognized by
> your server.
> 
> =cut
> 
> Set($Timezone, "US/Eastern");
> 
> =item C<@Plugins>
> 
> Set C<@Plugins> to a list of external RT plugins that should be
> enabled (those plugins have to be previously downloaded and
> installed).
> 
> Example:
> 
> C
> 
> =cut
> 
> Set(@Plugins, qw(RT::Authen::ExternalAuth));
> 
> =back
> 
> 
> 
> 
> =head1 Database connection
> 
> =over 4
> 
> =item C<$DatabaseType>
> 
> Database driver being used; case matters.  Valid types are "mysql",
> "Oracle" and "Pg".
> 
> =cut
> 
> Set($DatabaseType, "mysql");
> 
> =item C<$DatabaseHost>, C<$DatabaseRTHost>
> 
> The domain name of your database server.  If you're running MySQL and
> on localhost, leave it blank for enhanced performance.
> 
> C is the fully-qualified hostname of your RT server,
> for use in granting ACL rights on MySQL.
> 
> =cut
> 
> Set($DatabaseHost,   "localhost");
> Set($DatabaseRTHost, "localhost");
> 
> =item C<$DatabasePort>
> 
> The port that your database server is running on.  Ignored unless it's
> a positive integer. It's usually safe to leave this blank; RT will
> choose the correct default.
> 
> =cut
> 
> Set($DatabasePort, "");
> 
> =item C<$DatabaseUser>
> 
> The name of the user to connect to the database as.
> 
> =cut
> 
> Set($DatabaseUser, "admin");
> 
> =item C<$DatabasePassword>
> 
> The password the C<$DatabaseUser> should use to access the database.
> 
> =cut
> 
> Set($DatabasePassword, q{Duk30fZh0u});
> 
> =item C<$DatabaseName>
> 
> The name of the RT database on your database server. For Oracle, the
> SID and database objects are created in C<$DatabaseUser>'s schema.
> 
> =cut
> 
> Set($DatabaseName, q{rt4});
> 
> =item C<$DatabaseRequireSSL>
> 
> If you're using PostgreSQL and have compiled in SSL support, set
> C<$DatabaseRequireSSL> to 1 to turn on SSL communication with the
> database.
> 
> =cut
> 
> Set($DatabaseRequireSSL, undef);
> 
> =back
> 
> 
> 
> 
> =head1 Logging
> 
> The default is to log anything except debugging information to syslog.
> Check the L POD for information about how to get things
> by syslog, mail or anything else, get debugging info in the log, etc.
> 
> It might generally make sense to send error and higher by email to
> some administrator.  If you do this, be careful that this email isn't
> sent to this RT instance.  Mail loops will generate a critical log
> message.
> 
> =over 4
> 
> =item C<$LogToSyslog>, C<$LogToScreen>
> 
> The minimum level error that will be logged to the specific device.
> From lowest to highest priority, the levels are:
> 
>     debug info notice warning error critical alert emergency
> 
> =cut
> 
> Set($LogToSyslog, "info");
> Set($LogToScreen, "info");
> 
> =item C<$LogToFile>, C<$LogDir>, C<$LogToFileNamed>
> 
> Logging to a standalone file is also possible, but note that the file
> should needs to both exist and be writable by all direct users of the
> RT API.  This generally includes the web server and whoever
> rt-crontool runs as.  Note that rt-mailgate and the RT CLI go through
> the webserver, so their users do not need to have write permissions to
> this file. If you expect to have multiple users of the direct API,
> Best Practical recommends using syslog instead of direct file logging.
> 
> =cut
> 
> Set($LogToFile, undef);
> Set($LogDir, q{var/log});
> Set($LogToFileNamed, "rt.log");    #log to rt.log
> 
> =item C<$LogStackTraces>
> 
> If set to a log level then logging will include stack traces for
> messages with level equal to or greater than specified.
> 
> NOTICE: Stack traces include parameters supplied to functions or
> methods. It is possible for stack trace logging to reveal sensitive
> information such as passwords or ticket content in your logs.
> 
> =cut
> 
> Set($LogStackTraces, "");
> 
> =item C<@LogToSyslogConf>
> 
> On Solaris or UnixWare, set to ( socket => 'inet' ).  Options here
> override any other options RT passes to L.
> Other interesting flags include facility and logopt.  (See the
> L documentation for more information.)  (Maybe
> ident too, if you have multiple RT installations.)
> 
> =cut
> 
> Set(@LogToSyslogConf, ());
> 
> =back
> 
> 
> 
> =head1 Incoming mail gateway
> 
> =over 4
> 
> =item C<$EmailSubjectTagRegex>
> 
> This regexp controls what subject tags RT recognizes as its own.  If
> you're not dealing with historical C<$rtname> values, you'll likely
> never have to change this configuration.
> 
> Be B with it. Note that it overrides C<$rtname> for
> subject token matching and that you should use only "non-capturing"
> parenthesis grouping. For example:
> 
> C
> 
> and NOT
> 
> C
> 
> The setting below would make RT behave exactly as it does without the
> setting enabled.
> 
> =cut
> 
> # Set($EmailSubjectTagRegex, qr/\Q$rtname\E/i );
> 
> =item C<$OwnerEmail>
> 
> C<$OwnerEmail> is the address of a human who manages RT. RT will send
> errors generated by the mail gateway to this address.  This address
> should I be an address that's managed by your RT instance.
> 
> =cut
> 
> Set($OwnerEmail, 'tim.dunphy at example.com');
> 
> =item C<$LoopsToRTOwner>
> 
> If C<$LoopsToRTOwner> is defined, RT will send mail that it believes
> might be a loop to C<$OwnerEmail>.
> 
> =cut
> 
> Set($LoopsToRTOwner, 1);
> 
> =item C<$StoreLoops>
> 
> If C<$StoreLoops> is defined, RT will record messages that it believes
> to be part of mail loops.  As it does this, it will try to be careful
> not to send mail to the sender of these messages.
> 
> =cut
> 
> Set($StoreLoops, undef);
> 
> =item C<$MaxAttachmentSize>
> 
> C<$MaxAttachmentSize> sets the maximum size (in bytes) of attachments
> stored in the database.
> 
> For MySQL and Oracle, we set this size to 10 megabytes.  If you're
> running a PostgreSQL version earlier than 7.1, you will need to drop
> this to 8192. (8k)
> 
> =cut
> 
> 
> Set($MaxAttachmentSize, 10_000_000);
> 
> =item C<$TruncateLongAttachments>
> 
> If this is set to a non-undef value, RT will truncate attachments
> longer than C<$MaxAttachmentSize>.
> 
> =cut
> 
> Set($TruncateLongAttachments, undef);
> 
> =item C<$DropLongAttachments>
> 
> If this is set to a non-undef value, RT will silently drop attachments
> longer than C.  C<$TruncateLongAttachments>, above,
> takes priority over this.
> 
> =cut
> 
> Set($DropLongAttachments, undef);
> 
> =item C<$RTAddressRegexp>
> 
> C<$RTAddressRegexp> is used to make sure RT doesn't add itself as a
> ticket CC if C<$ParseNewMessageForTicketCcs>, above, is enabled.  It
> is important that you set this to a regular expression that matches
> all addresses used by your RT.  This lets RT avoid sending mail to
> itself.  It will also hide RT addresses from the list of "One-time Cc"
> and Bcc lists on ticket reply.
> 
> If you have a number of addresses configured in your RT database
> already, you can generate a naive first pass regexp by using:
> 
>     perl etc/upgrade/generate-rtaddressregexp
> 
> If left blank, RT will generate a regexp for you, based on your
> comment and correspond address settings on your queues; this comes at
> a small cost in start-up speed.
> 
> =cut
> 
> Set($RTAddressRegexp, undef);
> 
> =item C<$CanonicalizeEmailAddressMatch>, C<$CanonicalizeEmailAddressReplace>
> 
> RT provides functionality which allows the system to rewrite incoming
> email addresses.  In its simplest form, you can substitute the value
> in C for the value in
> C (These values are passed to the
> C subroutine in F)
> 
> By default, that routine performs a C on any
> address passed to it.
> 
> =cut
> 
> # Set($CanonicalizeEmailAddressMatch, '@subdomain\.example\.com$');
> # Set($CanonicalizeEmailAddressReplace, '@example.com');
> 
> =item C<$CanonicalizeOnCreate>
> 
> Set this to 1 and the create new user page will use the values that
> you enter in the form but use the function CanonicalizeUserInfo in
> F
> 
> =cut
> 
> Set($CanonicalizeOnCreate, 0);
> 
> =item C<$ValidateUserEmailAddresses>
> 
> If C<$ValidateUserEmailAddresses> is 1, RT will refuse to create
> users with an invalid email address (as specified in RFC 2822) or with
> an email address made of multiple email addresses.
> 
> =cut
> 
> Set($ValidateUserEmailAddresses, undef);
> 
> =item C<@MailPlugins>
> 
> C<@MailPlugins> is a list of authentication plugins for
> L to use; see L
> 
> =cut
> 
> =item C<$UnsafeEmailCommands>
> 
> C<$UnsafeEmailCommands>, if set to 1, enables 'take' and 'resolve'
> as possible actions via the mail gateway.  As its name implies, this
> is very unsafe, as it allows email with a forged sender to possibly
> resolve arbitrary tickets!
> 
> =cut
> 
> =item C<$ExtractSubjectTagMatch>, C<$ExtractSubjectTagNoMatch>
> 
> The default "extract remote tracking tags" scrip settings; these
> detect when your RT is talking to another RT, and adjust the subject
> accordingly.
> 
> =cut
> 
> Set($ExtractSubjectTagMatch, qr/\[.+? #\d+\]/);
> Set($ExtractSubjectTagNoMatch, ( ${RT::EmailSubjectTagRegex}
>        ? qr/\[(?:${RT::EmailSubjectTagRegex}) #\d+\]/
>        : qr/\[\Q$RT::rtname\E #\d+\]/));
> 
> =back
> 
> Set($SendmailPath , "/usr/local/rt4/bin/msmtp_wrapper");
> 
> 
> 
> =head1 Outgoing mail
> 
> =over 4
> 
> =item C<$MailCommand>
> 
> C<$MailCommand> defines which method RT will use to try to send mail.
> We know that 'sendmailpipe' works fairly well.  If 'sendmailpipe'
> doesn't work well for you, try 'sendmail'.  Other options are 'smtp'
> or 'qmail'.
> 
> Note that you should remove the '-t' from C<$SendmailArguments> if you
> use 'sendmail' rather than 'sendmailpipe'
> 
> For testing purposes, or to simply disable sending mail out into the
> world, you can set C<$MailCommand> to 'testfile' which writes all mail
> to a temporary file.  RT will log the location of the temporary file
> so you can extract mail from it afterward.
> 
> =cut
> 
> Set($MailCommand, "sendmailpipe");
> 
> =item C<$SetOutgoingMailFrom>
> 
> C<$SetOutgoingMailFrom> tells RT to set the sender envelope to the
> Correspond mail address of the ticket's queue.
> 
> Warning: If you use this setting, bounced mails will appear to be
> incoming mail to the system, thus creating new tickets.
> 
> =cut
> 
> Set($SetOutgoingMailFrom, 0);
> 
> =item C<$OverrideOutgoingMailFrom>
> 
> C<$OverrideOutgoingMailFrom> is used for overwriting the Correspond
> address of the queue as it is handed to sendmail -f. This helps force
> the From_ header away from www-data or other email addresses that show
> up in the "Sent by" line in Outlook.
> 
> The option is a hash reference of queue name to email address.  If
> there is no ticket involved, then the value of the C key will
> be used.
> 
> This option is irrelevant unless C<$SetOutgoingMailFrom> is set.
> 
> =cut
> 
> Set($OverrideOutgoingMailFrom, {
> #    'Default' => 'admin at rt.example.com',
> #    'General' => 'general at rt.example.com',
> });
> 
> =item C<$DefaultMailPrecedence>
> 
> C<$DefaultMailPrecedence> is used to control the default Precedence
> level of outgoing mail where none is specified.  By default it is
> C, but if you only send mail to your staff, you may wish to
> change it.
> 
> Note that you can set the precedence of individual templates by
> including an explicit Precedence header.
> 
> If you set this value to C then we do not set a default
> Precedence header to outgoing mail. However, if there already is a
> Precedence header, it will be preserved.
> 
> =cut
> 
> Set($DefaultMailPrecedence, "bulk");
> 
> =item C<$DefaultErrorMailPrecedence>
> 
> C<$DefaultErrorMailPrecedence> is used to control the default
> Precedence level of outgoing mail that indicates some kind of error
> condition. By default it is C, but if you only send mail to your
> staff, you may wish to change it.
> 
> If you set this value to C then we do not add a Precedence
> header to error mail.
> 
> =cut
> 
> Set($DefaultErrorMailPrecedence, "bulk");
> 
> =item C<$UseOriginatorHeader>
> 
> C<$UseOriginatorHeader> is used to control the insertion of an
> RT-Originator Header in every outgoing mail, containing the mail
> address of the transaction creator.
> 
> =cut
> 
> Set($UseOriginatorHeader, 1);
> 
> =item C<$UseFriendlyFromLine>
> 
> By default, RT sets the outgoing mail's "From:" header to "SenderName
> via RT".  Setting C<$UseFriendlyFromLine> to 0 disables it.
> 
> =cut
> 
> Set($UseFriendlyFromLine, 1);
> 
> =item C<$FriendlyFromLineFormat>
> 
> C format of the friendly 'From:' header; its arguments are
> SenderName and SenderEmailAddress.
> 
> =cut
> 
> Set($FriendlyFromLineFormat, "\"%s via RT\" <%s>");
> 
> =item C<$UseFriendlyToLine>
> 
> RT can optionally set a "Friendly" 'To:' header when sending messages
> to Ccs or AdminCcs (rather than having a blank 'To:' header.
> 
> This feature DOES NOT WORK WITH SENDMAIL[tm] BRAND SENDMAIL.  If you
> are using sendmail, rather than postfix, qmail, exim or some other
> MTA, you _must_ disable this option.
> 
> =cut
> 
> Set($UseFriendlyToLine, 0);
> 
> =item C<$FriendlyToLineFormat>
> 
> C format of the friendly 'To:' header; its arguments are
> WatcherType and TicketId.
> 
> =cut
> 
> Set($FriendlyToLineFormat, "\"%s of ". RT->Config->Get('rtname') ." Ticket #%s\":;");
> 
> =item C<$NotifyActor>
> 
> By default, RT doesn't notify the person who performs an update, as
> they already know what they've done. If you'd like to change this
> behavior, Set C<$NotifyActor> to 1
> 
> =cut
> 
> Set($NotifyActor, 0);
> 
> =item C<$RecordOutgoingEmail>
> 
> By default, RT records each message it sends out to its own internal
> database.  To change this behavior, set C<$RecordOutgoingEmail> to 0
> 
> =cut
> 
> Set($RecordOutgoingEmail, 1);
> 
> =item C<$VERPPrefix>, C<$VERPDomain>
> 
> Setting these options enables VERP support
> L.
> 
> Uncomment the following two directives to generate envelope senders
> of the form C<${VERPPrefix}${originaladdress}@${VERPDomain}>
> (i.e. rt-jesse=fsck.com at rt.example.com ).
> 
> This currently only works with sendmail and sendmailpipe.
> 
> =cut
> 
> # Set($VERPPrefix, "rt-");
> # Set($VERPDomain, $RT::Organization);
> 
> 
> =item C<$ForwardFromUser>
> 
> By default, RT forwards a message using queue's address and adds RT's
> tag into subject of the outgoing message, so recipients' replies go
> into RT as correspondents.
> 
> To change this behavior, set C<$ForwardFromUser> to 1 and RT
> will use the address of the current user and remove RT's subject tag.
> 
> =cut
> 
> Set($ForwardFromUser, 0);
> 
> =back
> 
> =head2 Email dashboards
> 
> =over 4
> 
> =item C<$DashboardAddress>
> 
> The email address from which RT will send dashboards. If none is set,
> then C<$OwnerEmail> will be used.
> 
> =cut
> 
> Set($DashboardAddress, '');
> 
> =item C<$DashboardSubject>
> 
> Lets you set the subject of dashboards. Arguments are the frequency (Daily,
> Weekly, Monthly) of the dashboard and the dashboard's name.
> 
> =cut
> 
> Set($DashboardSubject, "%s Dashboard: %s");
> 
> =item C<@EmailDashboardRemove>
> 
> A list of regular expressions that will be used to remove content from
> mailed dashboards.
> 
> =cut
> 
> Set(@EmailDashboardRemove, ());
> 
> =back
> 
> 
> 
> =head2 Sendmail configuration
> 
> These options only take effect if C<$MailCommand> is 'sendmail' or
> 'sendmailpipe'
> 
> =over 4
> 
> =item C<$SendmailArguments>
> 
> C<$SendmailArguments> defines what flags to pass to C<$SendmailPath>
> If you picked 'sendmailpipe', you MUST add a -t flag to
> C<$SendmailArguments> These options are good for most sendmail
> wrappers and work-a-likes.
> 
> These arguments are good for sendmail brand sendmail 8 and newer:
> C
> 
> =cut
> 
> Set($SendmailArguments, "-oi -t");
> 
> 
> =item C<$SendmailBounceArguments>
> 
> C<$SendmailBounceArguments> defines what flags to pass to C<$Sendmail>
> assuming RT needs to send an error (i.e. bounce).
> 
> =cut
> 
> Set($SendmailBounceArguments, '-f "<>"');
> 
> =item C<$SendmailPath>
> 
> If you selected 'sendmailpipe' above, you MUST specify the path to
> your sendmail binary in C<$SendmailPath>.
> 
> =cut
> 
> Set($SendmailPath, "/usr/sbin/sendmail");
> 
> 
> =back
> 
> =head2 SMTP configuration
> 
> These options only take effect if C<$MailCommand> is 'smtp'
> 
> =over 4
> 
> =item C<$SMTPServer>
> 
> C<$SMTPServer> should be set to the hostname of the SMTP server to use
> 
> =cut
> 
> Set($SMTPServer, undef);
> 
> =item C<$SMTPFrom>
> 
> C<$SMTPFrom> should be set to the 'From' address to use, if not the
> email's 'From'
> 
> =cut
> 
> Set($SMTPFrom, undef);
> 
> =item C<$SMTPDebug>
> 
> C<$SMTPDebug> should be set to 1 to debug SMTP mail sending
> 
> =cut
> 
> Set($SMTPDebug, 0);
> 
> =back
> 
> =head2 Other mailers
> 
> =over 4
> 
> =item C<@MailParams>
> 
> C<@MailParams> defines a list of options passed to $MailCommand if it
> is not 'sendmailpipe', 'sendmail', or 'smtp'
> 
> =cut
> 
> Set(@MailParams, ());
> 
> =back
> 
> 
> =head1 Web interface
> 
> =over 4
> 
> =item C<$WebDefaultStylesheet>
> 
> This determines the default stylesheet the RT web interface will use.
> RT ships with several themes by default:
> 
>   web2            The default layout for RT 3.8
>   aileron         The default layout for RT 4.0
>   ballard         Theme which doesn't rely on JavaScript for menuing
> 
> This value actually specifies a directory in F
> from which RT will try to load the file main.css (which should @import
> any other files the stylesheet needs).  This allows you to easily and
> cleanly create your own stylesheets to apply to RT.  This option can
> be overridden by users in their preferences.
> 
> =cut
> 
> Set($WebDefaultStylesheet, "aileron");
> #Set($WebDefaultStylesheet, "ballard");
> 
> =item C<$DefaultQueue>
> 
> Use this to select the default queue name that will be used for
> creating new tickets. You may use either the queue's name or its
> ID. This only affects the queue selection boxes on the web interface.
> 
> =cut
> 
> Set($DefaultQueue, "Ops");
> 
> =item C<$RememberDefaultQueue>
> 
> When a queue is selected in the new ticket dropdown, make it the new
> default for the new ticket dropdown.
> 
> =cut
> 
> # Set($RememberDefaultQueue, 1);
> 
> =item C<$EnableReminders>
> 
> Hide all links and portlets related to Reminders by setting this to 0
> 
> =cut
> 
> Set($EnableReminders, 1);
> 
> =item C<@CustomFieldValuesSources>
> 
> Set C<@CustomFieldValuesSources> to a list of class names which extend
> L.  This can be used to pull lists of
> custom field values from external sources at runtime.
> 
> =cut
> 
> Set(@CustomFieldValuesSources, ());
> 
> =item C<$CanonicalizeRedirectURLs>
> 
> Set C<$CanonicalizeRedirectURLs> to 1 to use C<$WebURL> when
> redirecting rather than the one we get from C<%ENV>.
> 
> If you use RT behind a reverse proxy, you almost certainly want to
> enable this option.
> 
> =cut
> 
> Set($CanonicalizeRedirectURLs, 0);
> 
> =item C<@JSFiles>
> 
> A list of JavaScript files to be included in head.  Removing any of
> the default entries is not suggested.
> 
> =cut
> 
> Set(@JSFiles, qw/
>     jquery-1.4.2.min.js
>     jquery_noconflict.js
>     jquery-ui-1.8.4.custom.min.js
>     jquery-ui-patch-datepicker.js
>     ui.timepickr.js
>     titlebox-state.js
>     util.js
>     userautocomplete.js
>     jquery.event.hover-1.0.js
>     superfish.js
>     supersubs.js
>     jquery.supposition.js
>     history-folding.js
>     late.js
> /);
> 
> =item C<$JSMinPath>
> 
> Path to the jsmin binary, available from
> http://www.crockford.com/javascript/jsmin.html
> 
> If specified, it will be used to minify C.  If it cannot be
> found, RT will fall back to the L module;
> failing that, RT will will simply concatenate the files.
> 
> =cut
> 
> # Set($JSMinPath, "/path/to/jsmin");
> 
> =item C<@CSSFiles>
> 
> A list of additional CSS files to be included in head.
> 
> =cut
> 
> Set(@CSSFiles, qw//);
> 
> =item C<$UsernameFormat>
> 
> This determines how user info is displayed. 'concise' will show one of
> either NickName, RealName, Name or EmailAddress, depending on what
> exists and whether the user is privileged or not. 'verbose' will show
> RealName and EmailAddress.
> 
> =cut
> 
> #Set($UsernameFormat, "concise");
> Set($UsernameFormat, "verbose");
> 
> =item C<$WebBaseURL>, C<$WebURL>
> 
> Usually you don't want to set these options. The only obvious reason
> is if RT is accessible via https protocol on a non standard port, e.g.
> 'https://rt.example.com:9999'. In all other cases these options are
> computed using C<$WebDomain>, C<$WebPort> and C<$WebPath>.
> 
> C<$WebBaseURL> is the scheme, server and port
> (e.g. 'http://rt.example.com') for constructing URLs to the web
> UI. C<$WebBaseURL> doesn't need a trailing /.
> 
> C<$WebURL> is the C<$WebBaseURL>, C<$WebPath> and trailing /, for
> example: 'http://www.example.com/rt/'.
> 
> =cut
> 
> my $port = RT->Config->Get('WebPort');
> Set($WebBaseURL,
>     ($port == 443? 'https': 'http') .'://'
>     . RT->Config->Get('WebDomain')
>     . ($port != 80 && $port != 443? ":$port" : '')
> );
> 
> Set($WebURL, RT->Config->Get('WebBaseURL') . RT->Config->Get('WebPath') . "/");
> 
> =item C<$WebImagesURL>
> 
> C<$WebImagesURL> points to the base URL where RT can find its images.
> Define the directory name to be used for images in RT web documents.
> 
> =cut
> 
> Set($WebImagesURL, RT->Config->Get('WebPath') . "/NoAuth/images/");
> 
> =item C<$LogoURL>
> 
> C<$LogoURL> points to the URL of the RT logo displayed in the web UI.
> This can also be configured via the web UI.
> 
> =cut
> 
> Set($LogoURL, RT->Config->Get('WebImagesURL') . "bpslogo.png");
> 
> =item C<$LogoLinkURL>
> 
> C<$LogoLinkURL> is the URL that the RT logo hyperlinks to.
> 
> =cut
> 
> Set($LogoLinkURL, "http://bestpractical.com");
> 
> =item C<$LogoAltText>
> 
> C<$LogoAltText> is a string of text for the alt-text of the logo. It
> will be passed through C for localization.
> 
> =cut
> 
> Set($LogoAltText, "Best Practical Solutions, LLC corporate logo");
> 
> =item C<$LogoImageHeight>
> 
> C<$LogoImageHeight> is the value of the C attribute of the logo
> C tag.
> 
> =cut
> 
> Set($LogoImageHeight, 38);
> 
> =item C<$LogoImageWidth>
> 
> C<$LogoImageWidth> is the value of the C attribute of the logo
> C tag.
> 
> =cut
> 
> Set($LogoImageWidth, 181);
> 
> =item C<$WebNoAuthRegex>
> 
> What portion of RT's URL space should not require authentication.  The
> default is almost certainly correct, and should only be changed if you
> are extending RT.
> 
> =cut
> 
> Set($WebNoAuthRegex, qr{^ (?:/+NoAuth/ | /+REST/\d+\.\d+/NoAuth/) }x );
> 
> =item C<$SelfServiceRegex>
> 
> What portion of RT's URLspace should be accessible to Unprivileged
> users This does not override the redirect from F
> to F when Unprivileged users attempt to
> access ticked displays.
> 
> =cut
> 
> Set($SelfServiceRegex, qr!^(?:/+SelfService/)!x );
> 
> =item C<$WebFlushDbCacheEveryRequest>
> 
> By default, RT clears its database cache after every page view.  This
> ensures that you've always got the most current information when
> working in a multi-process (mod_perl or FastCGI) Environment.  Setting
> C<$WebFlushDbCacheEveryRequest> to 0 will turn this off, which will
> speed RT up a bit, at the expense of a tiny bit of data accuracy.
> 
> =cut
> 
> Set($WebFlushDbCacheEveryRequest, 1);
> 
> =item C<%ChartFont>
> 
> The L module (which RT uses for graphs) ships with a built-in font
> that doesn't have full Unicode support. You can use a given TrueType
> font for a specific language by setting %ChartFont to (language =E
> the absolute path of a font) pairs. Your GD library must have support
> for TrueType fonts to use this option. If there is no entry for a
> language in the hash then font with 'others' key is used.
> 
> RT comes with two TrueType fonts covering most available languages.
> 
> =cut
> 
> Set(
>     %ChartFont,
>     'zh-cn'  => "$RT::BasePath/share/fonts/DroidSansFallback.ttf",
>     'zh-tw'  => "$RT::BasePath/share/fonts/DroidSansFallback.ttf",
>     'ja'     => "$RT::BasePath/share/fonts/DroidSansFallback.ttf",
>     'others' => "$RT::BasePath/share/fonts/DroidSans.ttf",
> );
> 
> =item C<$ChartsTimezonesInDB>
> 
> RT stores dates using the UTC timezone in the DB, so charts grouped by
> dates and time are not representative. Set C<$ChartsTimezonesInDB> to 1
> to enable timezone conversions using your DB's capabilities. You may
> need to do some work on the DB side to use this feature, read more in
> F.
> 
> At this time, this feature only applies to MySQL and PostgreSQL.
> 
> =cut
> 
> Set($ChartsTimezonesInDB, 0);
> 
> =back
> 
> 
> 
> =head2 Home page
> 
> =over 4
> 
> =item C<$DefaultSummaryRows>
> 
> C<$DefaultSummaryRows> is default number of rows displayed in for
> search results on the front page.
> 
> =cut
> 
> Set($DefaultSummaryRows, 10);
> 
> =item C<$HomePageRefreshInterval>
> 
> C<$HomePageRefreshInterval> is default number of seconds to refresh
> the RT home page. Choose from [0, 120, 300, 600, 1200, 3600, 7200].
> 
> =cut
> 
> Set($HomePageRefreshInterval, 0);
> 
> =item C<$HomepageComponents>
> 
> C<$HomepageComponents> is an arrayref of allowed components on a
> user's customized homepage ("RT at a glance").
> 
> =cut
> 
> Set($HomepageComponents, [qw(QuickCreate Quicksearch MyAdminQueues MySupportQueues MyReminders RefreshHomepage Dashboards SavedSearches)]);
> 
> =back
> 
> 
> 
> 
> =head2 Ticket search
> 
> =over 4
> 
> =item C<$UseSQLForACLChecks>
> 
> Historically, ACLs were checked on display, which could lead to empty
> search pages and wrong ticket counts.  Set C<$UseSQLForACLChecks> to 1
> to limit search results in SQL instead, which eliminates these
> problems.
> 
> This option is still relatively new; it may result in performance
> problems in some cases, or significant speedups in others.
> 
> =cut
> 
> Set($UseSQLForACLChecks, undef);
> 
> =item C<$TicketsItemMapSize>
> 
> On the display page of a ticket from search results, RT provides links
> to the first, next, previous and last ticket from the results.  In
> order to build these links, RT needs to fetch the full result set from
> the database, which can be resource-intensive.
> 
> Set C<$TicketsItemMapSize> to number of tickets you want RT to examine
> to build these links. If the full result set is larger than this
> number, RT will omit the "last" link in the menu.  Set this to zero to
> always examine all results.
> 
> =cut
> 
> Set($TicketsItemMapSize, 1000);
> 
> =item C<$SearchResultsRefreshInterval>
> 
> C<$SearchResultsRefreshInterval> is default number of seconds to
> refresh search results in RT. Choose from [0, 120, 300, 600, 1200,
> 3600, 7200].
> 
> =cut
> 
> Set($SearchResultsRefreshInterval, 0);
> 
> =item C<$DefaultSearchResultFormat>
> 
> C<$DefaultSearchResultFormat> is the default format for RT search
> results
> 
> =cut
> 
> Set ($DefaultSearchResultFormat, qq{
>    '__id__/TITLE:#',
>    '__Subject__/TITLE:Subject',
>    Status,
>    QueueName,
>    OwnerName,
>    Priority,
>    '__NEWLINE__',
>    '',
>    '__Requestors__',
>    '__CreatedRelative__',
>    '__ToldRelative__',
>    '__LastUpdatedRelative__',
>    '__TimeLeft__'});
> 
> =item C<$DefaultSelfServiceSearchResultFormat>
> 
> C<$DefaultSelfServiceSearchResultFormat> is the default format of
> searches displayed in the SelfService interface.
> 
> =cut
> 
> Set($DefaultSelfServiceSearchResultFormat, qq{
>    '__id__/TITLE:#',
>    '__Subject__/TITLE:Subject',
>    Status,
>    Requestors,
>    OwnerName});
> 
> =item C<%FullTextSearch>
> 
> Full text search (FTS) without database indexing is a very slow
> operation, and is thus disabled by default.
> 
> Before setting C to 1, read F for
> the full details of FTS on your particular database.
> 
> It is possible to enable FTS without database indexing support, simply
> by setting the C key to 1, while leaving C set to 0.
> This is not generally suggested, as unindexed full-text searching can
> cause severe performance problems.
> 
> =cut
> 
> Set(%FullTextSearch,
>     Enable  => 0,
>     Indexed => 0,
> );
> 
> 
> =item C<$OnlySearchActiveTicketsInSimpleSearch>
> 
> When query in simple search doesn't have status info, use this to only
> search active ones.
> 
> =cut
> 
> Set($OnlySearchActiveTicketsInSimpleSearch, 1);
> 
> =item C<$SearchResultsAutoRedirect>
> 
> When only one ticket is found in search, use this to redirect to the
> ticket display page automatically.
> 
> =cut
> 
> Set($SearchResultsAutoRedirect, 0);
> 
> =back
> 
> 
> 
> =head2 Ticket display
> 
> =over 4
> 
> =item C<$ShowMoreAboutPrivilegedUsers>
> 
> This determines if the 'More about requestor' box on
> Ticket/Display.html is shown for Privileged Users.
> 
> =cut
> 
> Set($ShowMoreAboutPrivilegedUsers, 0);
> 
> =item C<$MoreAboutRequestorTicketList>
> 
> This can be set to Active, Inactive, All or None.  It controls what
> ticket list will be displayed in the 'More about requestor' box on
> Ticket/Display.html.  This option can be controlled by users also.
> 
> =cut
> 
> Set($MoreAboutRequestorTicketList, "Active");
> 
> =item C<$MoreAboutRequestorExtraInfo>
> 
> By default, the 'More about requestor' box on Ticket/Display.html
> shows the Requestor's name and ticket list.  If you would like to see
> extra information about the user, this expects a Format string of user
> attributes.  Please note that not all the attributes are supported in
> this display because we're not building a table.
> 
> =cut
> 
> Set($MoreAboutRequestorExtraInfo, "");
> 
> =item C<$MoreAboutRequestorGroupsLimit>
> 
> By default, the 'More about requestor' box on Ticket/Display.html
> shows all the groups of the Requestor.  Use this to limit the number
> of groups; a value of undef removes the group display entirely.
> 
> =cut
> 
> Set($MoreAboutRequestorGroupsLimit, 0);
> 
> =item C<$UseSideBySideLayout>
> 
> Should the ticket create and update forms use a more space efficient
> two column layout.  This layout may not work in narrow browsers if you
> set a MessageBoxWidth (below).
> 
> =cut
> 
> Set($UseSideBySideLayout, 1);
> 
> =item C<$EditCustomFieldsSingleColumn>
> 
> When displaying a list of Ticket Custom Fields for editing, RT
> defaults to a 2 column list.  If you set this to 1, it will instead
> display the Custom Fields in a single column.
> 
> =cut
> 
> Set($EditCustomFieldsSingleColumn, 0);
> 
> =item C<$ShowUnreadMessageNotifications>
> 
> If set to 1, RT will prompt users when there are new,
> unread messages on tickets they are viewing.
> 
> =cut
> 
> Set($ShowUnreadMessageNotifications, 0);
> 
> =item C<$AutocompleteOwners>
> 
> If set to 1, the owner drop-downs for ticket update/modify and the query
> builder are replaced by text fields that autocomplete.  This can
> alleviate the sometimes huge owner list for installations where many
> users have the OwnTicket right.
> 
> =cut
> 
> Set($AutocompleteOwners, 0);
> 
> =item C<$UserAutocompleteFields>
> 
> Specifies which fields of L to match against and how to
> match each field when autocompleting users.  Valid match methods are
> LIKE, STARTSWITH, ENDSWITH, =, and !=.
> 
> =cut
> 
> Set($UserAutocompleteFields, {
>     EmailAddress => 'STARTSWITH',
>     Name         => 'STARTSWITH',
>     RealName     => 'LIKE',
> });
> 
> =item C<$AllowUserAutocompleteForUnprivileged>
> 
> Should unprivileged users be allowed to autocomplete users.  Setting
> this option to 1 means unprivileged users will be able to search all
> your users.
> 
> =cut
> 
> Set($AllowUserAutocompleteForUnprivileged, 0);
> 
> =item C<$DisplayTicketAfterQuickCreate>
> 
> Enable this to redirect to the created ticket display page
> automatically when using QuickCreate.
> 
> =cut
> 
> Set($DisplayTicketAfterQuickCreate, 0);
> 
> =item C<$WikiImplicitLinks>
> 
> Support implicit links in WikiText custom fields?  Setting this to 1
> causes InterCapped or ALLCAPS words in WikiText fields to automatically
> become links to searches for those words.  If used on Articles, it links
> to the Article with that name.
> 
> =cut
> 
> Set($WikiImplicitLinks, 0);
> 
> =item C<$PreviewScripMessages>
> 
> Set C<$PreviewScripMessages> to 1 if the scrips preview on the ticket
> reply page should include the content of the messages to be sent.
> 
> =cut
> 
> Set($PreviewScripMessages, 0);
> 
> =item C<$SimplifiedRecipients>
> 
> If C<$SimplifiedRecipients> is set, a simple list of who will receive
> B kind of mail will be shown on the ticket reply page, instead of a
> detailed breakdown by scrip.
> 
> =cut
> 
> Set($SimplifiedRecipients, 0);
> 
> =back
> 
> 
> 
> =head2 Articles
> 
> =over 4
> 
> =item C<$ArticleOnTicketCreate>
> 
> Set this to 1 to display the Articles interface on the Ticket Create
> page in addition to the Reply/Comment page.
> 
> =cut
> 
> Set($ArticleOnTicketCreate, 0);
> 
> =item C<$HideArticleSearchOnReplyCreate>
> 
> Set this to 1 to hide the search and include boxes from the Article
> UI.  This assumes you have enabled Article Hotlist feature, otherwise
> you will have no access to Articles.
> 
> =cut
> 
> Set($HideArticleSearchOnReplyCreate, 0);
> 
> =back
> 
> 
> 
> =head2 Message box properties
> 
> =over 4
> 
> =item C<$MessageBoxWidth>, C<$MessageBoxHeight>
> 
> For message boxes, set the entry box width, height and what type of
> wrapping to use.  These options can be overridden by users in their
> preferences.
> 
> When the width is set to undef, no column count is specified and the
> message box will take up 100% of the available width.  Combining this
> with HARD messagebox wrapping (below) is not recommended, as it will
> lead to inconsistent width in transactions between browsers.
> 
> These settings only apply to the non-RichText message box.  See below
> for Rich Text settings.
> 
> =cut
> 
> Set($MessageBoxWidth, undef);
> Set($MessageBoxHeight, 15);
> 
> =item C<$MessageBoxWrap>
> 
> Wrapping is disabled when using MessageBoxRichText because of a bad
> interaction between IE and wrapping with the Rich Text Editor.
> 
> =cut
> 
> Set($MessageBoxWrap, "SOFT");
> 
> =item C<$MessageBoxRichText>
> 
> Should "rich text" editing be enabled? This option lets your users
> send HTML email messages from the web interface.
> 
> =cut
> 
> Set($MessageBoxRichText, 1);
> 
> =item C<$MessageBoxRichTextHeight>
> 
> Height of rich text JavaScript enabled editing boxes (in pixels)
> 
> =cut
> 
> Set($MessageBoxRichTextHeight, 200);
> 
> =item C<$MessageBoxIncludeSignature>
> 
> Should your users' signatures (from their Preferences page) be
> included in Comments and Replies.
> 
> =cut
> 
> Set($MessageBoxIncludeSignature, 1);
> 
> =item C<$MessageBoxIncludeSignatureOnComment>
> 
> Should your users' signatures (from their Preferences page) be
> included in Comments. Setting this to false overrides
> C<$MessageBoxIncludeSignature>.
> 
> =cut
> 
> Set($MessageBoxIncludeSignatureOnComment, 1);
> 
> =back
> 
> 
> =head2 Transaction display
> 
> =over 4
> 
> =item C<$OldestTransactionsFirst>
> 
> By default, RT shows newest transactions at the bottom of the ticket
> history page, if you want see them at the top set this to 0.  This
> option can be overridden by users in their preferences.
> 
> =cut
> 
> Set($OldestTransactionsFirst, 1);
> 
> =item C<$DeferTransactionLoading>
> 
> When set, defers loading ticket history until the user clicks a link.
> This should end up serving pages to users quicker, since generating
> all the HTML for transaction history can be slow for long tickets.
> 
> =cut
> 
> # Set($DeferTransactionLoading, 1);
> 
> =item C<$ShowBccHeader>
> 
> By default, RT hides from the web UI information about blind copies
> user sent on reply or comment.
> 
> =cut
> 
> Set($ShowBccHeader, 0);
> 
> =item C<$TrustHTMLAttachments>
> 
> If C is not defined, we will display them as
> text. This prevents malicious HTML and JavaScript from being sent in a
> request (although there is probably more to it than that)
> 
> =cut
> 
> Set($TrustHTMLAttachments, undef);
> 
> =item C<$AlwaysDownloadAttachments>
> 
> Always download attachments, regardless of content type. If set, this
> overrides C.
> 
> =cut
> 
> Set($AlwaysDownloadAttachments, undef);
> 
> =item C<$AttachmentUnits>
> 
> Controls the units (kilobytes or bytes) that attachment sizes use for
> display. The default is to display kilobytes if the attachment is
> larger than 1024 bytes, bytes otherwise. If you set
> C<$AttachmentUnits> to C<'k'> then attachment sizes will always be
> displayed in kilobytes. If set to C<'b'>, then sizes will be bytes.
> 
> =cut
> 
> Set($AttachmentUnits, undef);
> 
> =item C<$PreferRichText>
> 
> If C<$PreferRichText> is set to 1, RT will show HTML/Rich text messages
> in preference to their plain-text alternatives. RT "scrubs" the HTML to
> show only a minimal subset of HTML to avoid possible contamination by
> cross-site-scripting attacks.
> 
> =cut
> 
> Set($PreferRichText, undef);
> 
> =item C<$MaxInlineBody>
> 
> C<$MaxInlineBody> is the maximum attachment size that we want to see
> inline when viewing a transaction.  RT will inline any text if the
> value is undefined or 0.  This option can be overridden by users in
> their preferences.
> 
> =cut
> 
> Set($MaxInlineBody, 12000);
> 
> =item C<$ShowTransactionImages>
> 
> By default, RT shows images attached to incoming (and outgoing) ticket
> updates inline. Set this variable to 0 if you'd like to disable that
> behavior.
> 
> =cut
> 
> Set($ShowTransactionImages, 1);
> 
> =item C<$PlainTextPre>
> 
> Normally plaintext attachments are displayed as HTML with line breaks
> preserved.  This causes space- and tab-based formatting not to be
> displayed correctly.  By setting $PlainTextPre messages will be
> displayed using 
; this option overrides C<$PlainTextMono>.
> 
> =cut
> 
> Set($PlainTextPre, 0);
> 
> 
> =item C<$PlainTextMono>
> 
> Set C<$PlainTextMono> to 1 to use monospaced font and preserve
> formatting; unlike C<$PlainTextPre>, the text will wrap to fit width
> of the browser window.
> 
> =cut
> 
> Set($PlainTextMono, 0);
> 
> =item C<$SuppressInlineTextFiles>
> 
> If C<$SuppressInlineTextFiles> is set to 1, then uploaded text files
> (text-type attachments with file names) are prevented from being
> displayed in-line when viewing a ticket's history.
> 
> =cut
> 
> Set($SuppressInlineTextFiles, undef);
> 
> 
> =item C<@Active_MakeClicky>
> 
> MakeClicky detects various formats of data in headers and email
> messages, and extends them with supporting links.  By default, RT
> provides two formats:
> 
> * 'httpurl': detects http:// and https:// URLs and adds '[Open URL]'
>   link after the URL.
> 
> * 'httpurl_overwrite': also detects URLs as 'httpurl' format, but
>   replaces the URL with a link and *adds spaces* into the text if it
>   is longer then 30 characters. This allows the browser to wrap long
>   URLs and avoid horizontal scrolling.
> 
> See F for documentation on how to add
> your own styles of link detection.
> 
> =cut
> 
> Set(@Active_MakeClicky, qw());
> 
> =back
> 
> 
> 
> =head1 Application logic
> 
> =over 4
> 
> =item C<$ParseNewMessageForTicketCcs>
> 
> If C<$ParseNewMessageForTicketCcs> is set to 1, RT will attempt to
> divine Ticket 'Cc' watchers from the To and Cc lines of incoming
> messages.  Be forewarned that if you have I addresses which forward
> mail to RT automatically and you enable this option without modifying
> C<$RTAddressRegexp> below, you will get yourself into a heap of trouble.
> 
> =cut
> 
> Set($ParseNewMessageForTicketCcs, undef);
> 
> =item C<$UseTransactionBatch>
> 
> Set C<$UseTransactionBatch> to 1 to execute transactions in batches,
> such that a resolve and comment (for example) would happen
> simultaneously, instead of as two transactions, unaware of each
> others' existence.
> 
> =cut
> 
> Set($UseTransactionBatch, 1);
> 
> =item C<$StrictLinkACL>
> 
> When this feature is enabled a user needs I rights on
> both tickets to link them together; otherwise, I rights
> on either of them is sufficient.
> 
> =cut
> 
> Set($StrictLinkACL, 1);
> 
> =item C<$RedistributeAutoGeneratedMessages>
> 
> Should RT redistribute correspondence that it identifies as machine
> generated?  A 1 will do so; setting this to 0 will cause no
> such messages to be redistributed.  You can also use 'privileged' (the
> default), which will redistribute only to privileged users. This helps
> to protect against malformed bounces and loops caused by auto-created
> requestors with bogus addresses.
> 
> =cut
> 
> Set($RedistributeAutoGeneratedMessages, "privileged");
> 
> =item C<$ApprovalRejectionNotes>
> 
> Should rejection notes from approvals be sent to the requestors?
> 
> =back
> 
> =cut
> 
> Set($ApprovalRejectionNotes, 1);
> 
> =head1 Extra security
> 
> =over 4
> 
> This is a list of extra security measures to enable that help keep your RT
> safe.  If you don't know what these mean, you should almost certainly leave the
> defaults alone.
> 
> =item C<$DisallowExecuteCode>
> 
> If set to a true value, the C right will be removed from
> all users, B the superuser.  This is intended for when RT is
> installed into a shared environment where even the superuser should not
> be allowed to run arbitrary Perl code on the server via scrips.
> 
> =cut
> 
> Set($DisallowExecuteCode, 0);
> 
> =item C<$Framebusting>
> 
> If set to a false value, framekiller javascript will be disabled and the
> X-Frame-Options: DENY header will be suppressed from all responses.
> This disables RT's clickjacking protection.
> 
> =cut
> 
> Set($Framebusting, 1);
> 
> =back
> 
> =head1 Authorization and user configuration
> 
> =over 4
> 
> =item C<$WebExternalAuth>
> 
> If C<$WebExternalAuth> is defined, RT will defer to the environment's
> REMOTE_USER variable.
> 
> =cut
> 
> Set($WebExternalAuth, undef);
> 
> =item C<$WebExternalAuthContinuous>
> 
> If C<$WebExternalAuthContinuous> is defined, RT will check for the
> REMOTE_USER on each access.  If you would prefer this to only happen
> once (at initial login) set this to a false value.  The default
> setting will help ensure that if your external authentication system
> deauthenticates a user, RT notices as soon as possible.
> 
> =cut
> 
> Set($WebExternalAuthContinuous, 1);
> 
> =item C<$WebFallbackToInternalAuth>
> 
> If C<$WebFallbackToInternalAuth> is defined, the user is allowed a
> chance of fallback to the login screen, even if REMOTE_USER failed.
> 
> =cut
> 
> Set($WebFallbackToInternalAuth, undef);
> 
> =item C<$WebExternalGecos>
> 
> C<$WebExternalGecos> means to match 'gecos' field as the user
> identity); useful with mod_auth_pwcheck and IIS Integrated Windows
> logon.
> 
> =cut
> 
> Set($WebExternalGecos, undef);
> 
> =item C<$WebExternalAuto>
> 
> C<$WebExternalAuto> will create users under the same name as
> REMOTE_USER upon login, if it's missing in the Users table.
> 
> =cut
> 
> Set($WebExternalAuto, undef);
> 
> =item C<$AutoCreate>
> 
> If C<$WebExternalAuto> is set to 1, C<$AutoCreate> will be passed to
> User's Create method.  Use it to set defaults, such as creating
> Unprivileged users with C<{ Privileged => 0 }> This must be a hashref.
> 
> =cut
> 
> Set($AutoCreate, undef);
> 
> =item C<$WebSessionClass>
> 
> C<$WebSessionClass> is the class you wish to use for managing
> Sessions.  It defaults to use your SQL database, but if you are using
> MySQL 3.x and plans to use non-ascii Queue names, uncomment and add
> this line to F to prevent session corruption.
> 
> =cut
> 
> # Set($WebSessionClass, "Apache::Session::File");
> 
> =item C<$AutoLogoff>
> 
> By default, RT's user sessions persist until a user closes his or her
> browser. With the C<$AutoLogoff> option you can setup session lifetime
> in minutes. A user will be logged out if he or she doesn't send any
> requests to RT for the defined time.
> 
> =cut
> 
> Set($AutoLogoff, 0);
> 
> =item C<$LogoutRefresh>
> 
> The number of seconds to wait after logout before sending the user to
> the login page. By default, 1 second, though you may want to increase
> this if you display additional information on the logout page.
> 
> =cut
> 
> Set($LogoutRefresh, 1);
> 
> =item C<$WebSecureCookies>
> 
> By default, RT's session cookie isn't marked as "secure". Some web
> browsers will treat secure cookies more carefully than non-secure
> ones, being careful not to write them to disk, only sending them over
> an SSL secured connection, and so on. To enable this behavior, set
> C<$WebSecureCookies> to 1.  NOTE: You probably don't want to turn this
> on I users are only connecting via SSL encrypted HTTPS
> connections.
> 
> =cut
> 
> Set($WebSecureCookies, 0);
> 
> =item C<$MinimumPasswordLength>
> 
> C<$MinimumPasswordLength> defines the minimum length for user
> passwords. Setting it to 0 disables this check.
> 
> =cut
> 
> Set($MinimumPasswordLength, 5);
> 
> =back
> 
> 
> =head1 Internationalization
> 
> =over 4
> 
> =item C<@LexiconLanguages>
> 
> An array that contains languages supported by RT's
> internationalization interface.  Defaults to all *.po lexicons;
> setting it to C will make RT bilingual instead of
> multilingual, but will save some memory.
> 
> =cut
> 
> Set(@LexiconLanguages, qw(*));
> 
> =item C<@EmailInputEncodings>
> 
> An array that contains default encodings used to guess which charset
> an attachment uses, if it does not specify one explicitly.  All
> options must be recognized by L.  The first element may
> also be '*', which enables encoding detection using
> L, if installed.
> 
> =cut
> 
> Set(@EmailInputEncodings, qw(utf-8 iso-8859-1 us-ascii));
> 
> =item C<$EmailOutputEncoding>
> 
> The charset for localized email.  Must be recognized by Encode.
> 
> =cut
> 
> Set($EmailOutputEncoding, "utf-8");
> 
> =back
> 
> 
> 
> 
> 
> 
> 
> =head1 Date and time handling
> 
> =over 4
> 
> =item C<$DateTimeFormat>
> 
> You can choose date and time format.  See the "Output formatters"
> section in perldoc F for more options.  This option
> can be overridden by users in their preferences.
> 
> Some examples:
> 
> C
> C "ISO", Seconds => 0 });>
> C
> C "RFC2822", Seconds => 0, DayOfWeek => 0 });>
> 
> =cut
> 
> Set($DateTimeFormat, "DefaultFormat");
> 
> # Next two options are for Time::ParseDate
> 
> =item C<$DateDayBeforeMonth>
> 
> Set this to 1 if your local date convention looks like "dd/mm/yy"
> instead of "mm/dd/yy". Used only for parsing, not for displaying
> dates.
> 
> =cut
> 
> Set($DateDayBeforeMonth, 1);
> 
> =item C<$AmbiguousDayInPast>, C<$AmbiguousDayInFuture>
> 
> Should an unspecified day or year in a date refer to a future or a
> past value? For example, should a date of "Tuesday" default to mean
> the date for next Tuesday or last Tuesday? Should the date "March 1"
> default to the date for next March or last March?
> 
> Set C<$AmbiguousDayInPast> for the last date, or
> C<$AmbiguousDayInFuture> for the next date; the default is usually
> correct.  If both are set, C<$AmbiguousDayInPast> takes precedence.
> 
> =cut
> 
> Set($AmbiguousDayInPast, 0);
> Set($AmbiguousDayInFuture, 0);
> 
> =item C<$DefaultTimeUnitsToHours>
> 
> Use this to set the default units for time entry to hours instead of
> minutes.  Note that this only effects entry, not display.
> 
> =cut
> 
> Set($DefaultTimeUnitsToHours, 0);
> 
> =back
> 
> 
> 
> 
> =head1 GnuPG integration
> 
> A full description of the (somewhat extensive) GnuPG integration can
> be found by running the command `perldoc L` (or
> `perldoc lib/RT/Crypt/GnuPG.pm` from your RT install directory).
> 
> =over 4
> 
> =item C<%GnuPG>
> 
> Set C to 'inline' to use inline encryption and
> signatures instead of 'RFC' (GPG/MIME: RFC3156 and RFC1847) format.
> 
> If you want to allow people to encrypt attachments inside the DB then
> set C to 1.
> 
> Set C to false if you don't want to reject
> emails encrypted for key RT doesn't have and can not decrypt.
> 
> Set C to false if you don't want to reject letters
> with incorrect GnuPG data.
> 
> =cut
> 
> Set(%GnuPG,
>     Enable => 1,
>     OutgoingMessagesFormat => "RFC", # Inline
>     AllowEncryptDataInDB   => 0,
> 
>     RejectOnMissingPrivateKey => 1,
>     RejectOnBadData           => 1,
> );
> 
> =item C<%GnuPGOptions>
> 
> Options to pass to the GnuPG program.
> 
> If you override this in your RT_SiteConfig, you should be sure to
> include a homedir setting.
> 
> Note that options with '-' character MUST be quoted.
> 
> =cut
> 
> Set(%GnuPGOptions,
>     homedir => q{var/data/gpg},
> 
> # URL of a keyserver
> #    keyserver => 'hkp://subkeys.pgp.net',
> 
> # enables the automatic retrieving of keys when encrypting
> #    'auto-key-locate' => 'keyserver',
> 
> # enables the automatic retrieving of keys when verifying signatures
> #    'auto-key-retrieve' => undef,
> );
> 
> =back
> 
> 
> 
> =head1 Lifecycles
> 
> =head2 Lifecycle definitions
> 
> Each lifecycle is a list of possible statuses split into three logic
> sets: B, B and B. Each status in a
> lifecycle must be unique. (Statuses may not be repeated across sets.)
> Each set may have any number of statuses.
> 
> For example:
> 
>     default => {
>         initial  => ['new'],
>         active   => ['open', 'stalled'],
>         inactive => ['resolved', 'rejected', 'deleted'],
>         ...
>     },
> 
> Status names can be from 1 to 64 ASCII characters.  Statuses are
> localized using RT's standard internationalization and localization
> system.
> 
> =over 4
> 
> =item initial
> 
> You can define multiple B statuses for tickets in a given
> lifecycle.
> 
> RT will automatically set its B date when you change a
> ticket's status from an B state to an B or
> B status.
> 
> =item active
> 
> B tickets are "currently in play" - they're things that are
> being worked on and not yet complete.
> 
> =item inactive
> 
> B tickets are typically in their "final resting state".
> 
> While you're free to implement a workflow that ignores that
> description, typically once a ticket enters an inactive state, it will
> never again enter an active state.
> 
> RT will automatically set the B date when a ticket's status
> is changed from an B or B status to an B
> status.
> 
> B is still a special status and protected by the
> B right, unless you re-defined rights (read below). If
> you don't want to allow ticket deletion at any time simply don't
> include it in your lifecycle.
> 
> =back
> 
> Statuses in each set are ordered and listed in the UI in the defined
> order.
> 
> Changes between statuses are constrained by transition rules, as
> described below.
> 
> =head2 Default values
> 
> In some cases a default value is used to display in UI or in API when
> value is not provided. You can configure defaults using the following
> syntax:
> 
>     default => {
>         ...
>         defaults => {
>             on_create => 'new',
>             on_resolve => 'resolved',
>             ...
>         },
>     },
> 
> The following defaults are used.
> 
> =over 4
> 
> =item on_create
> 
> If you (or your code) doesn't specify a status when creating a ticket,
> RT will use the this status. See also L ticket creation>.
> 
> =item on_merge
> 
> When tickets are merged, the status of the ticket that was merged
> away is forced to this value.  It should be one of inactive statuses;
> 'resolved' or its equivalent is most probably the best candidate.
> 
> =item approved
> 
> When an approval is accepted, the status of depending tickets will
> be changed to this value.
> 
> =item denied
> 
> When an approval is denied, the status of depending tickets will
> be changed to this value.
> 
> =back
> 
> =head2 Transitions between statuses and UI actions
> 
> A B is a change of status from A to B. You should define
> all possible transitions in each lifecycle using the following format:
> 
>     default => {
>         ...
>         transitions => {
>             ''       => [qw(new open resolved)],
>             new      => [qw(open resolved rejected deleted)],
>             open     => [qw(stalled resolved rejected deleted)],
>             stalled  => [qw(open)],
>             resolved => [qw(open)],
>             rejected => [qw(open)],
>             deleted  => [qw(open)],
>         },
>         ...
>     },
> 
> =head3 Statuses available during ticket creation
> 
> By default users can create tickets with any status, except
> deleted. If you want to restrict statuses available during creation
> then describe transition from '' (empty string), like in the example
> above.
> 
> =head3 Protecting status changes with rights
> 
> A transition or group of transitions can be protected by a specific
> right.  Additionally, you can name new right names, which will be added
> to the system to control that transition.  For example, if you wished to
> create a lesser right than ModifyTicket for rejecting tickets, you could
> write:
> 
>     default => {
>         ...
>         rights => {
>             '* -> deleted'  => 'DeleteTicket',
>             '* -> rejected' => 'RejectTicket',
>             '* -> *'        => 'ModifyTicket',
>         },
>         ...
>     },
> 
> This would create a new C right in the system which you
> could assign to whatever groups you choose.
> 
> On the left hand side you can have the following variants:
> 
>     ' -> '
>     '* -> '
>     ' -> *'
>     '* -> *'
> 
> Valid transitions are listed in order of priority. If a user attempts
> to change a ticket's status from B to B then the lifecycle
> is checked for presence of an exact match, then for 'any to B',
> 'B to any' and finally 'any to any'.
> 
> If you don't define any rights, or there is no match for a transition,
> RT will use the B or B as appropriate.
> 
> =head3 Labeling and defining actions
> 
> For each transition you can define an action that will be shown in the
> UI; each action annotated with a label and an update type.
> 
> Each action may provide a default update type, which can be
> B, B, or absent. For example, you may want your
> staff to write a reply to the end user when they change status from
> B to B, and thus set the update to B.  Neither
> B nor B are mandatory, and user may leave the
> message empty, regardless of the update type.
> 
> This configuration can be used to accomplish what
> $ResolveDefaultUpdateType was used for in RT 3.8.
> 
> Use the following format to define labels and actions of transitions:
> 
>     default => {
>         ...
>         actions => [
>             'new -> open'     => { label => 'Open it', update => 'Respond' },
>             'new -> resolved' => { label => 'Resolve', update => 'Comment' },
>             'new -> rejected' => { label => 'Reject',  update => 'Respond' },
>             'new -> deleted'  => { label => 'Delete' },
> 
>             'open -> stalled'  => { label => 'Stall',   update => 'Comment' },
>             'open -> resolved' => { label => 'Resolve', update => 'Comment' },
>             'open -> rejected' => { label => 'Reject',  update => 'Respond' },
> 
>             'stalled -> open'  => { label => 'Open it' },
>             'resolved -> open' => { label => 'Re-open', update => 'Comment' },
>             'rejected -> open' => { label => 'Re-open', update => 'Comment' },
>             'deleted -> open'  => { label => 'Undelete' },
>         ],
>         ...
>     },
> 
> In addition, you may define multiple actions for the same transition.
> Alternately, you may use '* -> x' to match more than one transition.
> For example:
> 
>     default => {
>         ...
>         actions => [
>             ...
>             'new -> rejected' => { label => 'Reject', update => 'Respond' },
>             'new -> rejected' => { label => 'Quick Reject' },
>             ...
>             '* -> deleted' => { label => 'Delete' },
>             ...
>         ],
>         ...
>     },
> 
> =head2 Moving tickets between queues with different lifecycles
> 
> Unless there is an explicit mapping between statuses in two different
> lifecycles, you can not move tickets between queues with these
> lifecycles.  Such a mapping is defined as follows:
> 
>     __maps__ => {
>         'from lifecycle -> to lifecycle' => {
>             'status in left lifecycle' => 'status in right lifecycle',
>             ...
>         },
>         ...
>     },
> 
> =cut
> 
> Set(%Lifecycles,
>     default => {
>         initial         => [ 'new' ],
>         active          => [ 'open', 'stalled' ],
>         inactive        => [ 'resolved', 'rejected', 'deleted' ],
> 
>         defaults => {
>             on_create => 'new',
>             on_merge  => 'resolved',
>             approved  => 'open',
>             denied    => 'rejected',
>         },
> 
>         transitions => {
>             ''       => [qw(new open resolved)],
> 
>             # from   => [ to list ],
>             new      => [qw(open stalled resolved rejected deleted)],
>             open     => [qw(new stalled resolved rejected deleted)],
>             stalled  => [qw(new open rejected resolved deleted)],
>             resolved => [qw(new open stalled rejected deleted)],
>             rejected => [qw(new open stalled resolved deleted)],
>             deleted  => [qw(new open stalled rejected resolved)],
>         },
>         rights => {
>             '* -> deleted'  => 'DeleteTicket',
>             '* -> *'        => 'ModifyTicket',
>         },
>         actions => [
>             'new -> open'      => {
>                 label  => 'Open It', # loc
>                 update => 'Respond',
>             },
>             'new -> resolved'  => {
>                 label  => 'Resolve', # loc
>                 update => 'Comment',
>             },
>             'new -> rejected'  => {
>                 label  => 'Reject', # loc
>                 update => 'Respond',
>             },
>             'new -> deleted'   => {
>                 label  => 'Delete', # loc
>             },
> 
>             'open -> stalled'  => {
>                 label  => 'Stall', # loc
>                 update => 'Comment',
>             },
>             'open -> resolved' => {
>                 label  => 'Resolve', # loc
>                 update => 'Comment',
>             },
>             'open -> rejected' => {
>                 label  => 'Reject', # loc
>                 update => 'Respond',
>             },
> 
>             'stalled -> open'  => {
>                 label  => 'Open It', # loc
>             },
>             'resolved -> open' => {
>                 label  => 'Re-open', # loc
>                 update => 'Comment',
>             },
>             'rejected -> open' => {
>                 label  => 'Re-open', # loc
>                 update => 'Comment',
>             },
>             'deleted -> open'  => {
>                 label  => 'Undelete', # loc
>             },
>         ],
>     },
> # don't change lifecyle of the approvals, they are not capable to deal with
> # custom statuses
>     approvals => {
>         initial         => [ 'new' ],
>         active          => [ 'open', 'stalled' ],
>         inactive        => [ 'resolved', 'rejected', 'deleted' ],
> 
>         defaults => {
>             on_create => 'new',
>             on_merge => 'resolved',
>         },
> 
>         transitions => {
>             ''       => [qw(new open resolved)],
> 
>             # from   => [ to list ],
>             new      => [qw(open stalled resolved rejected deleted)],
>             open     => [qw(new stalled resolved rejected deleted)],
>             stalled  => [qw(new open rejected resolved deleted)],
>             resolved => [qw(new open stalled rejected deleted)],
>             rejected => [qw(new open stalled resolved deleted)],
>             deleted  => [qw(new open stalled rejected resolved)],
>         },
>         rights => {
>             '* -> deleted'  => 'DeleteTicket',
>             '* -> rejected' => 'ModifyTicket',
>             '* -> *'        => 'ModifyTicket',
>         },
>         actions => [
>             'new -> open'      => {
>                 label  => 'Open It', # loc
>                 update => 'Respond',
>             },
>             'new -> resolved'  => {
>                 label  => 'Resolve', # loc
>                 update => 'Comment',
>             },
>             'new -> rejected'  => {
>                 label  => 'Reject', # loc
>                 update => 'Respond',
>             },
>             'new -> deleted'   => {
>                 label  => 'Delete', # loc
>             },
> 
>             'open -> stalled'  => {
>                 label  => 'Stall', # loc
>                 update => 'Comment',
>             },
>             'open -> resolved' => {
>                 label  => 'Resolve', # loc
>                 update => 'Comment',
>             },
>             'open -> rejected' => {
>                 label  => 'Reject', # loc
>                 update => 'Respond',
>             },
> 
>             'stalled -> open'  => {
>                 label  => 'Open It', # loc
>             },
>             'resolved -> open' => {
>                 label  => 'Re-open', # loc
>                 update => 'Comment',
>             },
>             'rejected -> open' => {
>                 label  => 'Re-open', # loc
>                 update => 'Comment',
>             },
>             'deleted -> open'  => {
>                 label  => 'Undelete', # loc
>             },
>         ],
>     },
> );
> 
> 
> 
> 
> 
> =head1 Administrative interface
> 
> =over 4
> 
> =item C<$ShowRTPortal>
> 
> RT can show administrators a feed of recent RT releases and other
> related announcements and information from Best Practical on the top
> level Configuration page.  This feature helps you stay up to date on
> RT security announcements and version updates.
> 
> RT provides this feature using an "iframe" on C
> which asks the administrator's browser to show an inline page from
> Best Practical's website.
> 
> If you'd rather not make this feature available to your
> administrators, set C<$ShowRTPortal> to a false value.
> 
> =cut
> 
> Set($ShowRTPortal, 1);
> 
> =item C<%AdminSearchResultFormat>
> 
> In the admin interface, format strings similar to tickets result
> formats are used. Use C<%AdminSearchResultFormat> to define the format
> strings used in the admin interface on a per-RT-class basis.
> 
> =cut
> 
> Set(%AdminSearchResultFormat,
>     Queues =>
>         q{'__id__/TITLE:#'}
>         .q{,'__Name__/TITLE:Name'}
>         .q{,__Description__,__Address__,__Priority__,__DefaultDueIn__,__Disabled__},
> 
>     Groups =>
>         q{'__id__/TITLE:#'}
>         .q{,'__Name__/TITLE:Name'}
>         .q{,'__Description__'},
> 
>     Users =>
>         q{'__id__/TITLE:#'}
>         .q{,'__Name__/TITLE:Name'}
>         .q{,__RealName__, __EmailAddress__},
> 
>     CustomFields =>
>         q{'__id__/TITLE:#'}
>         .q{,'__Name__/TITLE:Name'}
>         .q{,__AppliedTo__, __FriendlyType__, __FriendlyPattern__},
> 
>     Scrips =>
>         q{'__id__/TITLE:#'}
>         .q{,'__Description__/TITLE:Description'}
>         .q{,__Stage__, __Condition__, __Action__, __Template__},
> 
>     Templates =>
>         q{'__id__/TITLE:#'}
>         .q{,'__Name__/TITLE:Name'}
>         .q{,'__Description__'},
>     Classes =>
>         q{ '__id__/TITLE:#'}
>         .q{,'__Name__/TITLE:Name'}
>         .q{,__Description__},
> );
> 
> =back
> 
> 
> 
> 
> =head1 Development options
> 
> =over 4
> 
> =item C<$DevelMode>
> 
> RT comes with a "Development mode" setting.  This setting, as a
> convenience for developers, turns on several of development options
> that you most likely don't want in production:
> 
> =over 4
> 
> =item *
> 
> Uses L to reload changed Perl modules on each
> request.
> 
> =item *
> 
> Turns off Mason's C directive; this causes Mason to
> reload template files which have been modified on disk.
> 
> =item *
> 
> Turns on Mason's HTML C; this renders compilation errors
> to the browser, along with a full stack trace.  It is possible for
> stack traces to reveal sensitive information such as passwords or
> ticket content.
> 
> =item *
> 
> Turns off caching of callbacks; this enables additional callbacks to
> be added while the server is running.
> 
> =back
> 
> =cut
> 
> Set($DevelMode, "0");
> 
> 
> =item C<$RecordBaseClass>
> 
> What abstract base class should RT use for its records. You should
> probably never change this.
> 
> Valid values are C or
> C
> 
> =cut
> 
> Set($RecordBaseClass, "DBIx::SearchBuilder::Record::Cachable");
> 
> 
> =item C<@MasonParameters>
> 
> C<@MasonParameters> is the list of parameters for the constructor of
> HTML::Mason's Apache or CGI Handler.  This is normally only useful for
> debugging, e.g. profiling individual components with:
> 
>     use MasonX::Profiler; # available on CPAN
>     Set(@MasonParameters, (preamble => 'my $p = MasonX::Profiler->new($m, $r);'));
> 
> =cut
> 
> Set(@MasonParameters, ());
> 
> =item C<$StatementLog>
> 
> RT has rudimentary SQL statement logging support; simply set
> C<$StatementLog> to be the level that you wish SQL statements to be
> logged at.
> 
> Enabling this option will also expose the SQL Queries page in the
> Configuration -> Tools menu for SuperUsers.
> 
> =cut
> 
> Set($StatementLog, undef);
> 
> =back
> 
> 
> 
> 
> =head1 Deprecated options
> 
> =over 4
> 
> =item C<$LinkTransactionsRun1Scrip>
> 
> RT-3.4 backward compatibility setting. Add/Delete Link used to record
> one transaction and run one scrip. Set this value to 1 if you want
> only one of the link transactions to have scrips run.
> 
> =cut
> 
> Set($LinkTransactionsRun1Scrip, 0);
> 
> # The order in which the services defined in ExternalSettings
> # should be used to authenticate users. User is authenticated
> # if successfully confirmed by any service - no more services
> # are checked.
> Set($ExternalAuthPriority,  [   'My_LDAP',
>                                 'My_MySQL',
>                                 'My_SSO_Cookie'
>                             ]
> );
> 
> # The order in which the services defined in ExternalSettings
> # should be used to get information about users. This includes
> # RealName, Tel numbers etc, but also whether or not the user
> # should be considered disabled. 
> #
> # Once user info is found, no more services are checked.
> #
> # You CANNOT use a SSO cookie for authentication.
> Set($ExternalInfoPriority,  [   'My_MySQL',
>                                 'My_LDAP'
>                             ]
> );
> 
> # If this is set to true, then the relevant packages will
> # be loaded to use SSL/TLS connections. At the moment,
> # this just means "use Net::SSLeay;"
> Set($ExternalServiceUsesSSLorTLS,    0);
> 
> # If this is set to 1, then users should be autocreated by RT
> # as internal users if they fail to authenticate from an
> # external service.
> Set($AutoCreateNonExternalUsers,    1);
> 
> # These are the full settings for each external service as a HashOfHashes
> # Note that you may have as many external services as you wish. They will
> # be checked in the order specified in the Priority directives above.
> # e.g. 
> #   Set(ExternalAuthPriority,['My_LDAP','My_MySQL','My_Oracle','SecondaryLDAP','Other-DB']);
> #
> Set($ExternalSettings,      {   
>                                 # AN EXAMPLE LDAP SERVICE
>                                 'My_LDAP'       =>  {   ## GENERIC SECTION
>                                                         # The type of service (db/ldap/cookie) 
>                                                         'type'                      =>  'ldap',
>                                                         # The server hosting the service
>                                                         'server'                    =>  'ldap01.example.com',
>                                                         ## SERVICE-SPECIFIC SECTION
>                                                         # If you can bind to your LDAP server anonymously you should 
>                                                         # remove the user and pass config lines, otherwise specify them here:
>                                                         # 
>                                                         # The username RT should use to connect to the LDAP server 
>                                                         #'user'                      =>  'uid=Dunphy,ou=People,cn=mlbam,cn=com',
>                                                         # The password RT should use to connect to the LDAP server
>                                                         #'pass'                    =>  'secret',
>                                                         #
>                                                         # The LDAP search base
>                                                         'base'                      =>  'ou=People,dc=example,dc=com',
>                                                         #
>                                                         # ALL FILTERS MUST BE VALID LDAP FILTERS ENCASED IN PARENTHESES!
>                                                         # YOU **MUST** SPECIFY A filter AND A d_filter!!
>                                                         #
>                                                         # The filter to use to match RT-Users
>                                                         'filter'                    =>  '(objectclass=*)',
>                                                         # A catch-all example filter: '(objectClass=*)'
>                                                         #
>                                                         # The filter that will only match disabled users
>                                                         'd_filter'                  =>  '(objectClass=FooBarBaz)',
>                                                         # A catch-none example d_filter: '(objectClass=FooBarBaz)'
>                                                         #
>                                                         # Should we try to use TLS to encrypt connections?
>                                                         'tls'                       =>  0,
>                                                         # SSL Version to provide to Net::SSLeay *if* using SSL
>                                                         #'ssl_version'               =>  2,
>                                                         # What other args should I pass to Net::LDAP->new($host, at args)?
>                                                         'net_ldap_args'             => [    version =>  3   ],
>                                                         # Does authentication depend on group membership? What group name?
>                                                         #'group'                     =>  'RTUsers',
>                                                         # What is the attribute for the group object that determines membership?
>                                                         #'group_attr'                =>  'cn',
>                                                         ## RT ATTRIBUTE MATCHING SECTION
>                                                         # The list of RT attributes that uniquely identify a user
> 							# This example shows what you *can* specify.. I recommend reducing this
>                                                         # to just the Name and EmailAddress to save encountering problems later.
>                                                         'attr_match_list'           => [    'Name',
>                                                                                             'EmailAddress', 
>                                                                                         ],
>                                                         # The mapping of RT attributes on to LDAP attributes
>                                                         'attr_map'                  =>  {   'Name' => 'uid',
>                                                                                             'EmailAddress' => 'mail',
>                                                                                         }
>                                                     },
>                                 # An example SSO cookie service
>                                 'My_SSO_Cookie'  => {   # # The type of service (db/ldap/cookie)
>                                                         'type'                      =>  'cookie',
>                                                         # The name of the cookie to be used
>                                                         'name'                      =>  'loginCookieValue',
>                                                         # The users table
>                                                         'u_table'                   =>  'users',
>                                                         # The username field in the users table
>                                                         'u_field'                   =>  'username',
>                                                         # The field in the users table that uniquely identifies a user
>                                                         # and also exists in the cookies table
>                                                         'u_match_key'               =>  'userID',
>                                                         # The cookies table
>                                                         'c_table'                   =>  'login_cookie',
>                                                         # The field that stores cookie values
>                                                         'c_field'                   =>  'loginCookieValue',
>                                                         # The field in the cookies table that uniquely identifies a user
>                                                         # and also exists in the users table
>                                                         'c_match_key'               =>  'loginCookieUserID',
>                                                         # The DB service in this configuration to use to lookup the cookie information
>                                                         'db_service_name'           =>  'My_MySQL'
>                                                     }
>                                 }
> );
> 
> 1;
> 
> 
> Set($LogToFile,      'debug');
> Set($LogToFileNamed, 'rt.log');
> Set($LogDir,         '/usr/local/rt4/var/log');
> 
> 1;
> 
> 
> 
> ---------
> 
> 
> thank you very much for any advice you may have!
> 
> tim
> 
> 
> 
>  
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston  March 5 & 6, 2012

--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Boston ? March 5 & 6, 2012


From bmartins at galileu.pt  Thu Feb  2 11:21:48 2012
From: bmartins at galileu.pt (Bruno Martins)
Date: Thu, 2 Feb 2012 16:21:48 +0000
Subject: [rt-users] Problem configuring AD integration
Message-ID: <1510549EAAD18048862A0BB9D645881234743B@WISEXC02.wiseplatforms.local>

Hello guys,

I'm having the following error when logging in with any Active Directory user on RT:

Can't call method "as_string" on an undefined value at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm line 304.

I've followed instructions at http://requesttracker.wikia.com/wiki/ExternalAuth to set this up.

My /opt/rt4/etc/RT_SiteConfig.pm is as follows:

Set( $DatabaseUser, 'rt_user' );
Set( $CorrespondAddress, '' );
Set( $rtname, 'galileu.pt' );
Set( $DatabaseRequireSSL, '' );
Set( $WebPort, '8080' );
Set( $Organization, 'galileu.pt' );
Set( $DatabaseType, 'mysql' );
Set( $DatabasePort, '' );
Set( $DatabasePassword, 'db_password' );
Set( $DatabaseAdmin, 'root' );
Set( $SendmailPath, '/usr/sbin/sendmail' );
Set( $WebDomain, 'debian' );
Set( $DatabaseAdminPassword, 'db_password' );
Set( $CommentAddress, '' );
Set( $DatabaseHost, 'localhost' );
Set( $DatabaseName, 'rt4' );
Set( $OwnerEmail, 'root at localhost' );
Set( @Plugins, qw(RT::Authen::ExternalAuth) );

Set($ExternalAuthPriority,  [   'My_LDAP',
                                'My_MySQL',
                                'My_SSO_Cookie'
                            ]
);

Set($ExternalInfoPriority,  [   'My_MySQL',
                                'My_LDAP'
                            ]
);

Set($ExternalServiceUsesSSLorTLS,    0);

Set($AutoCreateNonExternalUsers,    0);

Set($ExternalSettings,      {   # AN EXAMPLE DB SERVICE
                                'My_MySQL'   =>  {      ## GENERIC SECTION
                                                        # The type of service (db/ldap/cookie) 
                                                        'type'                      =>  'db',
                                                        # The server hosting the service
                                                        'server'                    =>  'localhost',
                                                        ## SERVICE-SPECIFIC SECTION
                                                        # The database name
                                                        'database'                  =>  'rt4',
                                                        # The database table
                                                        'table'                     =>  'USERS_TABLE',
                                                        # The user to connect to the database as
                                                        'user'                      =>  'DB_USER',
                                                        # The password to use to connect with
                                                        'pass'                      =>  'DB_PASS',
                                                        # The port to use to connect with (e.g. 3306)
                                                        'port'                      =>  'DB_PORT',
                                                        # The name of the Perl DBI driver to use (e.g. mysql)
                                                        'dbi_driver'                =>  'DBI_DRIVER',
                                                        # The field in the table that holds usernames
                                                        'u_field'                   =>  'username',
                                                        # The field in the table that holds passwords
                                                        'p_field'                   =>  'password',
                                                        # The Perl package & subroutine used to encrypt passwords
                                                        # e.g. if the passwords are stored using the MySQL v3.23 "PASSWORD"
                                                        # function, then you will need Crypt::MySQL::password, but for the
                                                        # MySQL4+ password function you will need Crypt::MySQL::password41
                                                        # Alternatively, you could use Digest::MD5::md5_hex or any other
                                                        # encryption subroutine you can load in your perl installation
                                                        'p_enc_pkg'                 =>  'Crypt::MySQL',
                                                        'p_enc_sub'                 =>  'password',
                                                        # If your p_enc_sub takes a salt as a second parameter, 
                                                        # uncomment this line to add your salt
                                                        #'p_salt'                    =>  'SALT',
                                                        #
                                                        # The field and values in the table that determines if a user should
                                                        # be disabled. For example, if the field is 'user_status' and the values
                                                        # are ['0','1','2','disabled'] then the user will be disabled if their
                                                        # user_status is set to '0','1','2' or the string 'disabled'.
                                                        # Otherwise, they will be considered enabled.
                                                        'd_field'                   =>  'disabled',
                                                        'd_values'                  =>  ['0'],
                                                        ## RT ATTRIBUTE MATCHING SECTION
                                                        # The list of RT attributes that uniquely identify a user
                                                        'attr_match_list'           =>  [   'Gecos',
                                                                                            'Name'
                                                                                        ],
                                                        # The mapping of RT attributes on to field names
                                                        'attr_map'                  =>  {   'Name' => 'username',
                                                                                            'EmailAddress' => 'email',
                                                                                            'ExternalAuthId' => 'username',
                                                                                            'Gecos' => 'userID'
                                                                                        }
                                                    },
                                # AN EXAMPLE LDAP SERVICE
                                'My_LDAP'       =>  {   ## GENERIC SECTION
                                                        # The type of service (db/ldap/cookie) 
                                                        'type'                      =>  'ldap',
                                                        # The server hosting the service
                                                        'server'                    =>  'jupiter.galileu-f.galileu.pt',
                                                        ## SERVICE-SPECIFIC SECTION
                                                        # If you can bind to your LDAP server anonymously you should 
                                                        # remove the user and pass config lines, otherwise specify them here:
                                                        # 
                                                        # The username RT should use to connect to the LDAP server 
                                                        'user'                      =>  'ldap_domainadmin',
                                                        # The password RT should use to connect to the LDAP server
                                                        'pass'                    =>  'ldap_password',
                                                        #
                                                        # The LDAP search base
                                                        'base'                      =>  'dc=galileu-f,dc=galileu,dc=pt',
                                                        #
                                                        # ALL FILTERS MUST BE VALID LDAP FILTERS ENCASED IN PARENTHESES!
                                                        # YOU **MUST** SPECIFY A filter AND A d_filter!!
                                                        #
                                                        # The filter to use to match RT-Users
                                                        'filter'                    =>  'objectClass=*',
                                                        # A catch-all example filter: '(objectClass=*)'
                                                        #
                                                        # The filter that will only match disabled users
                                                        'd_filter'                  =>  'UserAccountControl:1.2.840.113556.1.4.803:=2',
                                                        # A catch-none example d_filter: '(objectClass=FooBarBaz)'
                                                        #
                                                        # Should we try to use TLS to encrypt connections?
                                                        'tls'                       =>  0,
                                                        # SSL Version to provide to Net::SSLeay *if* using SSL
                                                        'ssl_version'               =>  3,
                                                        # What other args should I pass to Net::LDAP->new($host, at args)?
                                                        'net_ldap_args'             => [    version =>  3 , port => 3268  ],
                                                        # Does authentication depend on group membership? What group name?
                                                        #'group'                     =>  'GROUP_NAME',
                                                        # What is the attribute for the group object that determines membership?
                                                        #'group_attr'                =>  'GROUP_ATTR',
                                                        ## RT ATTRIBUTE MATCHING SECTION
                                                        # The list of RT attributes that uniquely identify a user
							# This example shows what you *can* specify.. I recommend reducing this
                                                        # to just the Name and EmailAddress to save encountering problems later.
                                                        'attr_match_list'           => [    'Name',
                                                                                            'EmailAddress', 
                                                                                            'RealName',
                                                                                            'WorkPhone', 
                                                                                            'Address2'
                                                                                        ],
                                                        # The mapping of RT attributes on to LDAP attributes
                                                        'attr_map'                  =>  {   'Name' => 'sAMAccountName',
                                                                                            'EmailAddress' => 'mail',
                                                                                            'Organization' => 'physicalDeliveryOfficeName',
                                                                                            'RealName' => 'cn',
                                                                                            'ExternalAuthId' => 'sAMAccountName',
                                                                                            'Gecos' => 'sAMAccountName',
                                                                                            'WorkPhone' => 'telephoneNumber',
                                                                                            'Address1' => 'streetAddress',
                                                                                            'City' => 'l',
                                                                                            'State' => 'st',
                                                                                            'Zip' => 'postalCode',
                                                                                            'Country' => 'co'
                                                                                        }
                                                    },
                                # An example SSO cookie service
                                'My_SSO_Cookie'  => {   # # The type of service (db/ldap/cookie)
                                                        'type'                      =>  'cookie',
                                                        # The name of the cookie to be used
                                                        'name'                      =>  'loginCookieValue',
                                                        # The users table
                                                        'u_table'                   =>  'users',
                                                        # The username field in the users table
                                                        'u_field'                   =>  'username',
                                                        # The field in the users table that uniquely identifies a user
                                                        # and also exists in the cookies table
                                                        'u_match_key'               =>  'userID',
                                                        # The cookies table
                                                        'c_table'                   =>  'login_cookie',
                                                        # The field that stores cookie values
                                                        'c_field'                   =>  'loginCookieValue',
                                                        # The field in the cookies table that uniquely identifies a user
                                                        # and also exists in the users table
                                                        'c_match_key'               =>  'loginCookieUserID',
                                                        # The DB service in this configuration to use to lookup the cookie information
                                                        'db_service_name'           =>  'My_MySQL'
                                                    }
                                }
);

1;

Am I missing something?

Thanks for your cooperation.

Best regards,

Bruno Martins


From van.howell at lcu.edu  Thu Feb  2 11:16:53 2012
From: van.howell at lcu.edu (Howell, Van)
Date: Thu, 2 Feb 2012 16:16:53 +0000
Subject: [rt-users] External Auth using Active Directory 2008
In-Reply-To: <20120201233243.GF5178@jibsheet.com>
References: <84E70F84D007E14BBD13A402719AF27C15832CC1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120201233243.GF5178@jibsheet.com>
Message-ID: <84E70F84D007E14BBD13A402719AF27C15833CF1@SN2PRD0102MB153.prod.exchangelabs.com>

# cat RT_SiteConfig.pm
Set($ExternalAuthPriority,           [ 'My_LDAP',] );
Set($ExternalInfoPriority,           [ 'My_LDAP',] );
Set($ExternalServiceUsesSSLorTLS,    0);
Set($AutoCreateNonExternalUsers,     0);

Set($ExternalSettings,      {
                     'My_LDAP'  =>  {

                                'type'              =>  'ldap',
                                'server'            =>  'zeus.mydomain.edu',
                                'user'              =>  'CN=LDAPRT,OU=CampusServices,DC=mydomain,DC=mydomain,DC=edu',
                                'pass'              =>  '*********',
                                'base'              =>  'DC=mydomain,DC=mydomain,DC=edu',

                                'filter'            =>  '(&(ObjectCategory=User)(ObjectClass=Person))',
                                'd_filter'          =>  '(userAccountControl:1.2.840.113556.1.4.803:=2)',

                                'tls'               =>  0,
#                               'ssl_version'       =>  3,

                                'net_ldap_args'     => [ version => 3 ],
                                'group'             =>  'CN=RTUsers,OU=CampusServices,DC= mydomain,DC=mydomain,DC=edu',
                                'group_attr'        =>  'member',

                                'attr_match_list'   => [   'Name', 'EmailAddress'   ],
                                'attr_map'          => {   'Name' => 'sAMAccountName',
                                                           'EmailAddress' => 'mail',
                                                           'Organization' => 'physicalDeliveryOfficeName',
                                                           'RealName' => 'cn',
                                                           'ExternalAuthId' => 'sAMAccountName',
                                                           'Gecos' => 'sAMAccountName',
                                                           'WorkPhone' => 'telephoneNumber',
                                                           'Address1' => 'streetAddress',
                                                           'City' => 'l',
                                                           'State' => 'st',
                                                           'Zip' => 'postalCode',
                                                           'Country' => 'co'
                                                        }
                                        }

                            }
);

1;
EOF


I do not have Debugging turned on. I am going to need some help turning it on since this is new to me.

Here are some errors from /var/log/messages...

This is a failed attempt...

Feb  1 16:02:25 localhost RT: My_LDAP AUTH FAILED mary.servantez (can't bind: LDAP_INVALID_CREDENTIALS 49 ) (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:82)
Feb  1 16:02:25 localhost RT: FAILED LOGIN for mary.servantez from 10.1.41.95 (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)

Here is a successful attemt....

Feb  2 10:14:02 localhost RT: RT::Authen::ExternalAuth::LDAP::GetAuth External Auth OK ( My_LDAP ): test.account (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:139)
Feb  2 10:14:02 localhost RT: Couldn't enable user 28 (/opt/rt4/sbin/../lib/RT/User.pm:1066)
Feb  2 10:14:02 localhost RT: User marked as ENABLED ( test.account ) per External Service (, ) (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:274)
Feb  2 10:14:02 localhost RT: RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Address1: , City: , Country: , EmailAddress: test.account at LCU.EDU, ExternalAuthId: test.account, Gecos: test.account, Name: test.account, Organization: , RealName: Test Account, State: , WorkPhone: , Zip:  (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:536)
Feb  2 10:14:02 localhost RT: Successful login for test.account from 10.1.5.9 (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:219)

Van Howell
System Administrator
Lubbock Christian University

-----Original Message-----
From: rt-users-bounces at lists.bestpractical.com [mailto:rt-users-bounces at lists.bestpractical.com] On Behalf Of Kevin Falcone
Sent: Wednesday, February 01, 2012 5:33 PM
To: rt-users at lists.bestpractical.com
Subject: Re: [rt-users] External Auth using Active Directory 2008

On Wed, Feb 01, 2012 at 11:04:38PM +0000, Howell, Van wrote:
>    I have added several users into the RTUsers group I set up in AD.
> 
>    The AD Administrator, a common Domain User called Test.Account that is located in the OU with
>    all my other users, my personal account also located in the OU with all the other users and an
>    alternate administrative account I use.
> 
> 
> 
>    I can logon to RT with the AD Administrator account. I can logon to RT with the Test.Account
>    and I can log in using my alternate account. But I cannot logon using my personal account. I
>    also had my assistant test with her account and she cannot log on.
> 
>    I have studied the problem and cannot find anything unique about the accounts that cannot
>    logon.

We really need to see your configuration for RT-Authen-ExternalAuth and your logs for the failed login, turned up to debug.

-kevin



From falcone at bestpractical.com  Thu Feb  2 12:03:08 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Thu, 2 Feb 2012 12:03:08 -0500
Subject: [rt-users] Add queue change to Update.html (comment/reply) & CF
 Columns under Basic view
In-Reply-To: 
References: 
Message-ID: <20120202170308.GG5178@jibsheet.com>

On Thu, Feb 02, 2012 at 09:40:32AM +0100, Bart wrote:
>    Change queue during comment/reply (on Update.html)
>    I'm wondering of there's an easy way of adding Queue change to the comment/reply page
>    (Update.html).
>    It would be a nice addition to habe the ability to enable/disable this. We have several
>    departments that communicate with each other, having the ability to change the queue when
>    placing a comment/reply would help with the communication (easier then placing the comment and
>    then changing the queue via Basics, or easier then using the Jumbo page.
>    The reason I'm asking is because I want to stay away from editing these files (they break on
>    updates ^_~), I'd like a more general solution which will persist during updates. (same goes
>    for the next question)

You want to read about Callbacks on the wiki, or look at how the
extension you link to is doing it and borrow the idea.  You should be
able to add the SelectQueue component and then it'll get processed
during the normal update process.

>    CustomField Single column view under Basics
>    Also, I've found this plugin (thanks Rus!) RT::Extension::CustomFieldsOnUpdate (
>    [1]http://search.cpan.org/dist/RT-Extension-CustomFieldsOnUpdate/lib/RT/Extension/CustomFieldsOnUpdate.pm
>    )
>    The plugin works great but the order in which the CustomFields are shown is kinda messy. The
>    reason for the order being messy is because we've set the order based upon the two column view
>    under Basics. (which goes from right to left and then from top to down)
>    In the RT Config there's this option which should make it possible to show a single column
>    view of the Custom Fields:
> 
>      =item C<$EditCustomFieldsSingleColumn>
>      When displaying a list of Ticket Custom Fields for editing, RT
>      defaults to a 2 column list. If you set this to 1, it will instead
>      display the Custom Fields in a single column.
>      =cut
>      Set($EditCustomFieldsSingleColumn, 0);
> 
>    This option however doesn't seem to have any effect.
>    Will this option get a fix during a future release?

There's a bug open for this, unfortunately it was broken during the
rewrite of the Update page and lost in the merge up from 3.8 to 4.0
(the option works in 3.8 where it was implemented).  You can track the
bug here

http://issues.bestpractical.com/Ticket/Display.html?id=18555

-kevin

>    This would be great, if I can display the CustomFields in a single column on all pages then I
>    can have a uniform CF order which will be the same on the Ticket overview, basics and
>    comment/reply page. (or any other tip to achieve this would be appreciated)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Thu Feb  2 12:05:53 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Thu, 2 Feb 2012 12:05:53 -0500
Subject: [rt-users] How to adjust 'Organization' in 'About me'
In-Reply-To: 
References: 
Message-ID: <20120202170553.GH5178@jibsheet.com>

On Thu, Feb 02, 2012 at 12:42:32PM -0000, Jeffery, Guy wrote:
>    Quick question that hopefully is fairly easy to resolve - my users want to be able to adjust
>    their 'Organization' within 'About me' in the Preferences menu.
> 
>    Providing 'ModifySelf' privileges to users allows adjustment of every other field on that
>    screen, apart from Organization. What privilege do users need to alter this?
> 
>    I'm using RT 3.8.7 and 3.8.9.

ModifySelf is the only right that affects this unfortunately, and it's
an all or nothing right.

You'd need to write some code to restrict what is updated, or you
could use something similar to the LDAPImporter extension to suck in
correct organization data from an up-to-date external source.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Thu Feb  2 12:07:39 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Thu, 2 Feb 2012 12:07:39 -0500
Subject: [rt-users] CanonicalizeEmailAddressMatch
In-Reply-To: <7C3070F471BFF44C8967FEE9CCF0B18528D01621@FHDP1LUMXC7V42.us.one.verizon.com>
References: <7C3070F471BFF44C8967FEE9CCF0B18528D01621@FHDP1LUMXC7V42.us.one.verizon.com>
Message-ID: <20120202170739.GI5178@jibsheet.com>

On Thu, Feb 02, 2012 at 09:00:06AM -0500, Dalal, Kamber Z wrote:
>    Need the proper syntax for 'CanonicalizeEmailAddressMatch' setting to match either @domaina or
>    @domainb
> 
>    to allow 'CanonicalizeEmailAddressReplace' it with @domainc.

It's just a perl regular expression, so literally you get

s/CanonicalizeEmailAddressMatch/CanonicalizeEmailAddressReplace/gi
at the end.

So experiment with:

my $email = "bob at domaina.com";
$email =~ s/CanonicalizeEmailAddressMatch/CanonicalizeEmailAddressReplace/gi
print $email;

outside RT to get what you want.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Thu Feb  2 12:10:45 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Thu, 2 Feb 2012 12:10:45 -0500
Subject: [rt-users] RT Bounce messages
In-Reply-To: <3889c7ed-1dd7-4479-b77c-7ff708d11dd0@li289-212>
References: <20120201185334.GZ95897@jibsheet.com>
	<3889c7ed-1dd7-4479-b77c-7ff708d11dd0@li289-212>
Message-ID: <20120202171045.GJ5178@jibsheet.com>

On Thu, Feb 02, 2012 at 04:05:53PM -0000, Tim Dunphy wrote:
> > This looks like an RT_Config.pm file.  Have you been editing
> > RT_Config.pm directly or did you copy all of RT_Config.pm to
> > RT_SiteConfig.pm?  Neither of those are recommended and it makes
> > following what is going on really hard.
> 
> I'm sorry but I don't recall doing this. However looking at a diff of the two files it certainly seems possible. 

It'd be useful to see that diff, more than the SiteCOnfig at this
point, and you should consider cleaning it up so you'll know in the
future what options you've overridden.

> > Usually this means RT was configured to send mail back into itself and
> > something has a X-RT-Loop-Prevention header.  Often this is a
> > misconfigured Template or a too-broad RTAddressRegexp setting.
> 
> Here's how my RTAddressRegexp is set - 
> 
> Set($RTAddressRegexp, undef);

In this case, it means RT will be comparing against all the Queue
address and your Correspond/Comment address.  Is it possible that RT
is sending to an email address that feeds back into RT via an
/etc/aliases file or something similar?

-kevin

> Well I don't recall copying the RT_Config.pm to RT_SiteConfig. 
> 
> However one thing that I can say is that I remember that I started seeing these bounce messages right about the time that I tried including an LDAP ExternalAuth method in the RT_SiteConfig.pm file.
> 
> # These are the full settings for each external service as a HashOfHashes
> # Note that you may have as many external services as you wish. They will
> # be checked in the order specified in the Priority directives above.
> # e.g. 
> #   Set(ExternalAuthPriority,['My_LDAP','My_MySQL','My_Oracle','SecondaryLDAP','Other-DB']);
> #
> Set($ExternalSettings,      {   
>                                 # AN EXAMPLE LDAP SERVICE
>                                 'My_LDAP'       =>  {   ## GENERIC SECTION
>                                                         # The type of service (db/ldap/cookie) 
>                                                         'type'                      =>  'ldap',
>                                                         # The server hosting the service
>                                                         'server'                    =>  'ldap01.mlbam.com',
>                                                         ## SERVICE-SPECIFIC SECTION
>                                                         # If you can bind to your LDAP server anonymously you should 
>                                                         # remove the user and pass config lines, otherwise specify them here:
>                                                         # 
>                                                         # The username RT should use to connect to the LDAP server 
>                                                         #'user'                      =>  'uid=Dunphy,ou=People,cn=mlbam,cn=com',
>                                                         # The password RT should use to connect to the LDAP server
>                                                         #'pass'                    =>  'WR=78zu!uX',
>                                                         #
>                                                         # The LDAP search base
>                                                         'base'                      =>  'ou=People,dc=mlbam,dc=com',
>                                                         #
>                                                         # ALL FILTERS MUST BE VALID LDAP FILTERS ENCASED IN PARENTHESES!
>                                                         # YOU **MUST** SPECIFY A filter AND A d_filter!!
>                                                         #
>                                                         # The filter to use to match RT-Users
>                                                         'filter'                    =>  '(objectclass=*)',
>                                                         # A catch-all example filter: '(objectClass=*)'
>                                                         #
>                                                         # The filter that will only match disabled users
>                                                         'd_filter'                  =>  '(objectClass=FooBarBaz)',
>                                                         # A catch-none example d_filter: '(objectClass=FooBarBaz)'
>                                                         #
>                                                         # Should we try to use TLS to encrypt connections?
>                                                         'tls'                       =>  0,
>                                                         # SSL Version to provide to Net::SSLeay *if* using SSL
>                                                         #'ssl_version'               =>  2,
>                                                         # What other args should I pass to Net::LDAP->new($host, at args)?
>                                                         'net_ldap_args'             => [    version =>  3   ],
>                                                         # Does authentication depend on group membership? What group name?
>                                                         #'group'                     =>  'RTUsers',
>                                                         # What is the attribute for the group object that determines membership?
>                                                         #'group_attr'                =>  'cn',
>                                                         ## RT ATTRIBUTE MATCHING SECTION
>                                                         # The list of RT attributes that uniquely identify a user
>                                                         # This example shows what you *can* specify.. I recommend reducing this
>                                                         # to just the Name and EmailAddress to save encountering problems later.
>                                                         'attr_match_list'           => [    'Name',
>                                                                                             'EmailAddress', 
>                                                                                         ],
>                                                         # The mapping of RT attributes on to LDAP attributes
>                                                         'attr_map'                  =>  {   'Name' => 'uid',
>                                                                                             'EmailAddress' => 'mail',
>                                                                                         }
>                                                     },
>                                 # An example SSO cookie service
>                                 'My_SSO_Cookie'  => {   # # The type of service (db/ldap/cookie)
>                                                         'type'                      =>  'cookie',
>                                                         # The name of the cookie to be used
>                                                         'name'                      =>  'loginCookieValue',
>                                                         # The users table
>                                                         'u_table'                   =>  'users',
>                                                         # The username field in the users table
>                                                         'u_field'                   =>  'username',
>                                                         # The field in the users table that uniquely identifies a user
>                                                         # and also exists in the cookies table
>                                                         'u_match_key'               =>  'userID',
>                                                         # The cookies table
>                                                         'c_table'                   =>  'login_cookie',
>                                                         # The field that stores cookie values
>                                                         'c_field'                   =>  'loginCookieValue',
>                                                         # The field in the cookies table that uniquely identifies a user
>                                                         # and also exists in the users table
>                                                         'c_match_key'               =>  'loginCookieUserID',
>                                                         # The DB service in this configuration to use to lookup the cookie information
>                                                         'db_service_name'           =>  'My_MySQL'
>                                                     }
>                                 }
> );
> 
> 1;
> 
> 
> 
> I wonder if this section could be part of the problem I'm having...
> 
> 
> thanks
> tim
> 
> 
> > ------------------------------------
> > 
> > 
> > 
> > # RT was configured with:
> > #
> > #   $ ./configure --enable-graphviz --enable-gd --enable-gpg --with-db-host=localhost --with-db-rt-host=localhost --with-db-dba=admin --with-db-rt-user=admin --with-db-rt-pass=Duk30fZh0u --with-web-user=apache --with-web-group=apache --with-apachectl /usr/sbin/apachectl --localstatedir=/var/rt4 --sysconfdir=/etc/rt4 --prefix=/usr/local/rt4 --exec-prefix=/usr/local/sbin
> > #
> > 
> > package RT;
> > 
> > #############################  WARNING  #############################
> > #                                                                   #
> > #                     NEVER EDIT RT_Config.pm !                     #
> > #                                                                   #
> > #         Instead, copy any sections you want to change to          #
> > #         RT_SiteConfig.pm and edit them there.  Otherwise,         #
> > #         your changes will be lost when you upgrade RT.            #
> > #                                                                   #
> > #############################  WARNING  #############################
> > 
> > =head1 NAME
> > 
> > RT::Config
> > 
> > =head1 Base configuration
> > 
> > =over 4
> > 
> > =item C<$rtname>
> > 
> > C<$rtname> is the string that RT will look for in mail messages to
> > figure out what ticket a new piece of mail belongs to.
> > 
> > Your domain name is recommended, so as not to pollute the namespace.
> > Once you start using a given tag, you should probably never change it;
> > otherwise, mail for existing tickets won't get put in the right place.
> > 
> > =cut
> > 
> > Set($rtname, "mlb.com");
> > 
> > =item C<$Organization>
> > 
> > You should set this to your organization's DNS domain. For example,
> > I or I. It is used by the linking
> > interface to guarantee that ticket URIs are unique and easy to
> > construct.  Changing it after you have created tickets in the system
> > will B all existing ticket links!
> > 
> > =cut
> > 
> > Set($Organization, "mlb.com");
> > 
> > =item C<$CorrespondAddress>, C<$CommentAddress>
> > 
> > RT is designed such that any mail which already has a ticket-id
> > associated with it will get to the right place automatically.
> > 
> > C<$CorrespondAddress> and C<$CommentAddress> are the default addresses
> > that will be listed in From: and Reply-To: headers of correspondence
> > and comment mail tracked by RT, unless overridden by a queue-specific
> > address.  They should be set to email addresses which have been
> > configured as aliases for F.
> > 
> > =cut
> > 
> > Set($CorrespondAddress, 'rt at mm3.mlbam.com');
> > 
> > Set($CommentAddress, 'rt-comment at mm3.mlbam.com');
> > 
> > =item C<$WebDomain>
> > 
> > Domain name of the RT server, e.g. 'www.example.com'. It should not
> > contain anything except the server name.
> > 
> > =cut
> > 
> > Set($WebDomain, "rt.mm3.mlbam.com");
> > 
> > =item C<$WebPort>
> > 
> > If we're running as a superuser, run on port 80.  Otherwise, pick a
> > high port for this user.
> > 
> > 443 is default port for https protocol.
> > 
> > =cut
> > 
> > Set($WebPort, 80);# + ($< * 7274) % 32766 + ($< && 1024));
> > 
> > =item C<$WebPath>
> > 
> > If you're putting the web UI somewhere other than at the root of your
> > server, you should set C<$WebPath> to the path you'll be serving RT
> > at.
> > 
> > C<$WebPath> requires a leading / but no trailing /, or it can be
> > blank.
> > 
> > In most cases, you should leave C<$WebPath> set to "" (an empty
> > value).
> > 
> > =cut
> > 
> > Set($WebPath, "/helpdesk");
> > 
> > =item C<$Timezone>
> > 
> > C<$Timezone> is the default timezone, used to convert times entered by
> > users into GMT, as they are stored in the database, and back again;
> > users can override this.  It should be set to a timezone recognized by
> > your server.
> > 
> > =cut
> > 
> > Set($Timezone, "US/Eastern");
> > 
> > =item C<@Plugins>
> > 
> > Set C<@Plugins> to a list of external RT plugins that should be
> > enabled (those plugins have to be previously downloaded and
> > installed).
> > 
> > Example:
> > 
> > C
> > 
> > =cut
> > 
> > Set(@Plugins, qw(RT::Authen::ExternalAuth));
> > 
> > =back
> > 
> > 
> > 
> > 
> > =head1 Database connection
> > 
> > =over 4
> > 
> > =item C<$DatabaseType>
> > 
> > Database driver being used; case matters.  Valid types are "mysql",
> > "Oracle" and "Pg".
> > 
> > =cut
> > 
> > Set($DatabaseType, "mysql");
> > 
> > =item C<$DatabaseHost>, C<$DatabaseRTHost>
> > 
> > The domain name of your database server.  If you're running MySQL and
> > on localhost, leave it blank for enhanced performance.
> > 
> > C is the fully-qualified hostname of your RT server,
> > for use in granting ACL rights on MySQL.
> > 
> > =cut
> > 
> > Set($DatabaseHost,   "localhost");
> > Set($DatabaseRTHost, "localhost");
> > 
> > =item C<$DatabasePort>
> > 
> > The port that your database server is running on.  Ignored unless it's
> > a positive integer. It's usually safe to leave this blank; RT will
> > choose the correct default.
> > 
> > =cut
> > 
> > Set($DatabasePort, "");
> > 
> > =item C<$DatabaseUser>
> > 
> > The name of the user to connect to the database as.
> > 
> > =cut
> > 
> > Set($DatabaseUser, "admin");
> > 
> > =item C<$DatabasePassword>
> > 
> > The password the C<$DatabaseUser> should use to access the database.
> > 
> > =cut
> > 
> > Set($DatabasePassword, q{Duk30fZh0u});
> > 
> > =item C<$DatabaseName>
> > 
> > The name of the RT database on your database server. For Oracle, the
> > SID and database objects are created in C<$DatabaseUser>'s schema.
> > 
> > =cut
> > 
> > Set($DatabaseName, q{rt4});
> > 
> > =item C<$DatabaseRequireSSL>
> > 
> > If you're using PostgreSQL and have compiled in SSL support, set
> > C<$DatabaseRequireSSL> to 1 to turn on SSL communication with the
> > database.
> > 
> > =cut
> > 
> > Set($DatabaseRequireSSL, undef);
> > 
> > =back
> > 
> > 
> > 
> > 
> > =head1 Logging
> > 
> > The default is to log anything except debugging information to syslog.
> > Check the L POD for information about how to get things
> > by syslog, mail or anything else, get debugging info in the log, etc.
> > 
> > It might generally make sense to send error and higher by email to
> > some administrator.  If you do this, be careful that this email isn't
> > sent to this RT instance.  Mail loops will generate a critical log
> > message.
> > 
> > =over 4
> > 
> > =item C<$LogToSyslog>, C<$LogToScreen>
> > 
> > The minimum level error that will be logged to the specific device.
> > From lowest to highest priority, the levels are:
> > 
> >     debug info notice warning error critical alert emergency
> > 
> > =cut
> > 
> > Set($LogToSyslog, "info");
> > Set($LogToScreen, "info");
> > 
> > =item C<$LogToFile>, C<$LogDir>, C<$LogToFileNamed>
> > 
> > Logging to a standalone file is also possible, but note that the file
> > should needs to both exist and be writable by all direct users of the
> > RT API.  This generally includes the web server and whoever
> > rt-crontool runs as.  Note that rt-mailgate and the RT CLI go through
> > the webserver, so their users do not need to have write permissions to
> > this file. If you expect to have multiple users of the direct API,
> > Best Practical recommends using syslog instead of direct file logging.
> > 
> > =cut
> > 
> > Set($LogToFile, undef);
> > Set($LogDir, q{var/log});
> > Set($LogToFileNamed, "rt.log");    #log to rt.log
> > 
> > =item C<$LogStackTraces>
> > 
> > If set to a log level then logging will include stack traces for
> > messages with level equal to or greater than specified.
> > 
> > NOTICE: Stack traces include parameters supplied to functions or
> > methods. It is possible for stack trace logging to reveal sensitive
> > information such as passwords or ticket content in your logs.
> > 
> > =cut
> > 
> > Set($LogStackTraces, "");
> > 
> > =item C<@LogToSyslogConf>
> > 
> > On Solaris or UnixWare, set to ( socket => 'inet' ).  Options here
> > override any other options RT passes to L.
> > Other interesting flags include facility and logopt.  (See the
> > L documentation for more information.)  (Maybe
> > ident too, if you have multiple RT installations.)
> > 
> > =cut
> > 
> > Set(@LogToSyslogConf, ());
> > 
> > =back
> > 
> > 
> > 
> > =head1 Incoming mail gateway
> > 
> > =over 4
> > 
> > =item C<$EmailSubjectTagRegex>
> > 
> > This regexp controls what subject tags RT recognizes as its own.  If
> > you're not dealing with historical C<$rtname> values, you'll likely
> > never have to change this configuration.
> > 
> > Be B with it. Note that it overrides C<$rtname> for
> > subject token matching and that you should use only "non-capturing"
> > parenthesis grouping. For example:
> > 
> > C
> > 
> > and NOT
> > 
> > C
> > 
> > The setting below would make RT behave exactly as it does without the
> > setting enabled.
> > 
> > =cut
> > 
> > # Set($EmailSubjectTagRegex, qr/\Q$rtname\E/i );
> > 
> > =item C<$OwnerEmail>
> > 
> > C<$OwnerEmail> is the address of a human who manages RT. RT will send
> > errors generated by the mail gateway to this address.  This address
> > should I be an address that's managed by your RT instance.
> > 
> > =cut
> > 
> > Set($OwnerEmail, 'tim.dunphy at example.com');
> > 
> > =item C<$LoopsToRTOwner>
> > 
> > If C<$LoopsToRTOwner> is defined, RT will send mail that it believes
> > might be a loop to C<$OwnerEmail>.
> > 
> > =cut
> > 
> > Set($LoopsToRTOwner, 1);
> > 
> > =item C<$StoreLoops>
> > 
> > If C<$StoreLoops> is defined, RT will record messages that it believes
> > to be part of mail loops.  As it does this, it will try to be careful
> > not to send mail to the sender of these messages.
> > 
> > =cut
> > 
> > Set($StoreLoops, undef);
> > 
> > =item C<$MaxAttachmentSize>
> > 
> > C<$MaxAttachmentSize> sets the maximum size (in bytes) of attachments
> > stored in the database.
> > 
> > For MySQL and Oracle, we set this size to 10 megabytes.  If you're
> > running a PostgreSQL version earlier than 7.1, you will need to drop
> > this to 8192. (8k)
> > 
> > =cut
> > 
> > 
> > Set($MaxAttachmentSize, 10_000_000);
> > 
> > =item C<$TruncateLongAttachments>
> > 
> > If this is set to a non-undef value, RT will truncate attachments
> > longer than C<$MaxAttachmentSize>.
> > 
> > =cut
> > 
> > Set($TruncateLongAttachments, undef);
> > 
> > =item C<$DropLongAttachments>
> > 
> > If this is set to a non-undef value, RT will silently drop attachments
> > longer than C.  C<$TruncateLongAttachments>, above,
> > takes priority over this.
> > 
> > =cut
> > 
> > Set($DropLongAttachments, undef);
> > 
> > =item C<$RTAddressRegexp>
> > 
> > C<$RTAddressRegexp> is used to make sure RT doesn't add itself as a
> > ticket CC if C<$ParseNewMessageForTicketCcs>, above, is enabled.  It
> > is important that you set this to a regular expression that matches
> > all addresses used by your RT.  This lets RT avoid sending mail to
> > itself.  It will also hide RT addresses from the list of "One-time Cc"
> > and Bcc lists on ticket reply.
> > 
> > If you have a number of addresses configured in your RT database
> > already, you can generate a naive first pass regexp by using:
> > 
> >     perl etc/upgrade/generate-rtaddressregexp
> > 
> > If left blank, RT will generate a regexp for you, based on your
> > comment and correspond address settings on your queues; this comes at
> > a small cost in start-up speed.
> > 
> > =cut
> > 
> > Set($RTAddressRegexp, undef);
> > 
> > =item C<$CanonicalizeEmailAddressMatch>, C<$CanonicalizeEmailAddressReplace>
> > 
> > RT provides functionality which allows the system to rewrite incoming
> > email addresses.  In its simplest form, you can substitute the value
> > in C for the value in
> > C (These values are passed to the
> > C subroutine in F)
> > 
> > By default, that routine performs a C on any
> > address passed to it.
> > 
> > =cut
> > 
> > # Set($CanonicalizeEmailAddressMatch, '@subdomain\.example\.com$');
> > # Set($CanonicalizeEmailAddressReplace, '@example.com');
> > 
> > =item C<$CanonicalizeOnCreate>
> > 
> > Set this to 1 and the create new user page will use the values that
> > you enter in the form but use the function CanonicalizeUserInfo in
> > F
> > 
> > =cut
> > 
> > Set($CanonicalizeOnCreate, 0);
> > 
> > =item C<$ValidateUserEmailAddresses>
> > 
> > If C<$ValidateUserEmailAddresses> is 1, RT will refuse to create
> > users with an invalid email address (as specified in RFC 2822) or with
> > an email address made of multiple email addresses.
> > 
> > =cut
> > 
> > Set($ValidateUserEmailAddresses, undef);
> > 
> > =item C<@MailPlugins>
> > 
> > C<@MailPlugins> is a list of authentication plugins for
> > L to use; see L
> > 
> > =cut
> > 
> > =item C<$UnsafeEmailCommands>
> > 
> > C<$UnsafeEmailCommands>, if set to 1, enables 'take' and 'resolve'
> > as possible actions via the mail gateway.  As its name implies, this
> > is very unsafe, as it allows email with a forged sender to possibly
> > resolve arbitrary tickets!
> > 
> > =cut
> > 
> > =item C<$ExtractSubjectTagMatch>, C<$ExtractSubjectTagNoMatch>
> > 
> > The default "extract remote tracking tags" scrip settings; these
> > detect when your RT is talking to another RT, and adjust the subject
> > accordingly.
> > 
> > =cut
> > 
> > Set($ExtractSubjectTagMatch, qr/\[.+? #\d+\]/);
> > Set($ExtractSubjectTagNoMatch, ( ${RT::EmailSubjectTagRegex}
> >        ? qr/\[(?:${RT::EmailSubjectTagRegex}) #\d+\]/
> >        : qr/\[\Q$RT::rtname\E #\d+\]/));
> > 
> > =back
> > 
> > Set($SendmailPath , "/usr/local/rt4/bin/msmtp_wrapper");
> > 
> > 
> > 
> > =head1 Outgoing mail
> > 
> > =over 4
> > 
> > =item C<$MailCommand>
> > 
> > C<$MailCommand> defines which method RT will use to try to send mail.
> > We know that 'sendmailpipe' works fairly well.  If 'sendmailpipe'
> > doesn't work well for you, try 'sendmail'.  Other options are 'smtp'
> > or 'qmail'.
> > 
> > Note that you should remove the '-t' from C<$SendmailArguments> if you
> > use 'sendmail' rather than 'sendmailpipe'
> > 
> > For testing purposes, or to simply disable sending mail out into the
> > world, you can set C<$MailCommand> to 'testfile' which writes all mail
> > to a temporary file.  RT will log the location of the temporary file
> > so you can extract mail from it afterward.
> > 
> > =cut
> > 
> > Set($MailCommand, "sendmailpipe");
> > 
> > =item C<$SetOutgoingMailFrom>
> > 
> > C<$SetOutgoingMailFrom> tells RT to set the sender envelope to the
> > Correspond mail address of the ticket's queue.
> > 
> > Warning: If you use this setting, bounced mails will appear to be
> > incoming mail to the system, thus creating new tickets.
> > 
> > =cut
> > 
> > Set($SetOutgoingMailFrom, 0);
> > 
> > =item C<$OverrideOutgoingMailFrom>
> > 
> > C<$OverrideOutgoingMailFrom> is used for overwriting the Correspond
> > address of the queue as it is handed to sendmail -f. This helps force
> > the From_ header away from www-data or other email addresses that show
> > up in the "Sent by" line in Outlook.
> > 
> > The option is a hash reference of queue name to email address.  If
> > there is no ticket involved, then the value of the C key will
> > be used.
> > 
> > This option is irrelevant unless C<$SetOutgoingMailFrom> is set.
> > 
> > =cut
> > 
> > Set($OverrideOutgoingMailFrom, {
> > #    'Default' => 'admin at rt.example.com',
> > #    'General' => 'general at rt.example.com',
> > });
> > 
> > =item C<$DefaultMailPrecedence>
> > 
> > C<$DefaultMailPrecedence> is used to control the default Precedence
> > level of outgoing mail where none is specified.  By default it is
> > C, but if you only send mail to your staff, you may wish to
> > change it.
> > 
> > Note that you can set the precedence of individual templates by
> > including an explicit Precedence header.
> > 
> > If you set this value to C then we do not set a default
> > Precedence header to outgoing mail. However, if there already is a
> > Precedence header, it will be preserved.
> > 
> > =cut
> > 
> > Set($DefaultMailPrecedence, "bulk");
> > 
> > =item C<$DefaultErrorMailPrecedence>
> > 
> > C<$DefaultErrorMailPrecedence> is used to control the default
> > Precedence level of outgoing mail that indicates some kind of error
> > condition. By default it is C, but if you only send mail to your
> > staff, you may wish to change it.
> > 
> > If you set this value to C then we do not add a Precedence
> > header to error mail.
> > 
> > =cut
> > 
> > Set($DefaultErrorMailPrecedence, "bulk");
> > 
> > =item C<$UseOriginatorHeader>
> > 
> > C<$UseOriginatorHeader> is used to control the insertion of an
> > RT-Originator Header in every outgoing mail, containing the mail
> > address of the transaction creator.
> > 
> > =cut
> > 
> > Set($UseOriginatorHeader, 1);
> > 
> > =item C<$UseFriendlyFromLine>
> > 
> > By default, RT sets the outgoing mail's "From:" header to "SenderName
> > via RT".  Setting C<$UseFriendlyFromLine> to 0 disables it.
> > 
> > =cut
> > 
> > Set($UseFriendlyFromLine, 1);
> > 
> > =item C<$FriendlyFromLineFormat>
> > 
> > C format of the friendly 'From:' header; its arguments are
> > SenderName and SenderEmailAddress.
> > 
> > =cut
> > 
> > Set($FriendlyFromLineFormat, "\"%s via RT\" <%s>");
> > 
> > =item C<$UseFriendlyToLine>
> > 
> > RT can optionally set a "Friendly" 'To:' header when sending messages
> > to Ccs or AdminCcs (rather than having a blank 'To:' header.
> > 
> > This feature DOES NOT WORK WITH SENDMAIL[tm] BRAND SENDMAIL.  If you
> > are using sendmail, rather than postfix, qmail, exim or some other
> > MTA, you _must_ disable this option.
> > 
> > =cut
> > 
> > Set($UseFriendlyToLine, 0);
> > 
> > =item C<$FriendlyToLineFormat>
> > 
> > C format of the friendly 'To:' header; its arguments are
> > WatcherType and TicketId.
> > 
> > =cut
> > 
> > Set($FriendlyToLineFormat, "\"%s of ". RT->Config->Get('rtname') ." Ticket #%s\":;");
> > 
> > =item C<$NotifyActor>
> > 
> > By default, RT doesn't notify the person who performs an update, as
> > they already know what they've done. If you'd like to change this
> > behavior, Set C<$NotifyActor> to 1
> > 
> > =cut
> > 
> > Set($NotifyActor, 0);
> > 
> > =item C<$RecordOutgoingEmail>
> > 
> > By default, RT records each message it sends out to its own internal
> > database.  To change this behavior, set C<$RecordOutgoingEmail> to 0
> > 
> > =cut
> > 
> > Set($RecordOutgoingEmail, 1);
> > 
> > =item C<$VERPPrefix>, C<$VERPDomain>
> > 
> > Setting these options enables VERP support
> > L.
> > 
> > Uncomment the following two directives to generate envelope senders
> > of the form C<${VERPPrefix}${originaladdress}@${VERPDomain}>
> > (i.e. rt-jesse=fsck.com at rt.example.com ).
> > 
> > This currently only works with sendmail and sendmailpipe.
> > 
> > =cut
> > 
> > # Set($VERPPrefix, "rt-");
> > # Set($VERPDomain, $RT::Organization);
> > 
> > 
> > =item C<$ForwardFromUser>
> > 
> > By default, RT forwards a message using queue's address and adds RT's
> > tag into subject of the outgoing message, so recipients' replies go
> > into RT as correspondents.
> > 
> > To change this behavior, set C<$ForwardFromUser> to 1 and RT
> > will use the address of the current user and remove RT's subject tag.
> > 
> > =cut
> > 
> > Set($ForwardFromUser, 0);
> > 
> > =back
> > 
> > =head2 Email dashboards
> > 
> > =over 4
> > 
> > =item C<$DashboardAddress>
> > 
> > The email address from which RT will send dashboards. If none is set,
> > then C<$OwnerEmail> will be used.
> > 
> > =cut
> > 
> > Set($DashboardAddress, '');
> > 
> > =item C<$DashboardSubject>
> > 
> > Lets you set the subject of dashboards. Arguments are the frequency (Daily,
> > Weekly, Monthly) of the dashboard and the dashboard's name.
> > 
> > =cut
> > 
> > Set($DashboardSubject, "%s Dashboard: %s");
> > 
> > =item C<@EmailDashboardRemove>
> > 
> > A list of regular expressions that will be used to remove content from
> > mailed dashboards.
> > 
> > =cut
> > 
> > Set(@EmailDashboardRemove, ());
> > 
> > =back
> > 
> > 
> > 
> > =head2 Sendmail configuration
> > 
> > These options only take effect if C<$MailCommand> is 'sendmail' or
> > 'sendmailpipe'
> > 
> > =over 4
> > 
> > =item C<$SendmailArguments>
> > 
> > C<$SendmailArguments> defines what flags to pass to C<$SendmailPath>
> > If you picked 'sendmailpipe', you MUST add a -t flag to
> > C<$SendmailArguments> These options are good for most sendmail
> > wrappers and work-a-likes.
> > 
> > These arguments are good for sendmail brand sendmail 8 and newer:
> > C
> > 
> > =cut
> > 
> > Set($SendmailArguments, "-oi -t");
> > 
> > 
> > =item C<$SendmailBounceArguments>
> > 
> > C<$SendmailBounceArguments> defines what flags to pass to C<$Sendmail>
> > assuming RT needs to send an error (i.e. bounce).
> > 
> > =cut
> > 
> > Set($SendmailBounceArguments, '-f "<>"');
> > 
> > =item C<$SendmailPath>
> > 
> > If you selected 'sendmailpipe' above, you MUST specify the path to
> > your sendmail binary in C<$SendmailPath>.
> > 
> > =cut
> > 
> > Set($SendmailPath, "/usr/sbin/sendmail");
> > 
> > 
> > =back
> > 
> > =head2 SMTP configuration
> > 
> > These options only take effect if C<$MailCommand> is 'smtp'
> > 
> > =over 4
> > 
> > =item C<$SMTPServer>
> > 
> > C<$SMTPServer> should be set to the hostname of the SMTP server to use
> > 
> > =cut
> > 
> > Set($SMTPServer, undef);
> > 
> > =item C<$SMTPFrom>
> > 
> > C<$SMTPFrom> should be set to the 'From' address to use, if not the
> > email's 'From'
> > 
> > =cut
> > 
> > Set($SMTPFrom, undef);
> > 
> > =item C<$SMTPDebug>
> > 
> > C<$SMTPDebug> should be set to 1 to debug SMTP mail sending
> > 
> > =cut
> > 
> > Set($SMTPDebug, 0);
> > 
> > =back
> > 
> > =head2 Other mailers
> > 
> > =over 4
> > 
> > =item C<@MailParams>
> > 
> > C<@MailParams> defines a list of options passed to $MailCommand if it
> > is not 'sendmailpipe', 'sendmail', or 'smtp'
> > 
> > =cut
> > 
> > Set(@MailParams, ());
> > 
> > =back
> > 
> > 
> > =head1 Web interface
> > 
> > =over 4
> > 
> > =item C<$WebDefaultStylesheet>
> > 
> > This determines the default stylesheet the RT web interface will use.
> > RT ships with several themes by default:
> > 
> >   web2            The default layout for RT 3.8
> >   aileron         The default layout for RT 4.0
> >   ballard         Theme which doesn't rely on JavaScript for menuing
> > 
> > This value actually specifies a directory in F
> > from which RT will try to load the file main.css (which should @import
> > any other files the stylesheet needs).  This allows you to easily and
> > cleanly create your own stylesheets to apply to RT.  This option can
> > be overridden by users in their preferences.
> > 
> > =cut
> > 
> > Set($WebDefaultStylesheet, "aileron");
> > #Set($WebDefaultStylesheet, "ballard");
> > 
> > =item C<$DefaultQueue>
> > 
> > Use this to select the default queue name that will be used for
> > creating new tickets. You may use either the queue's name or its
> > ID. This only affects the queue selection boxes on the web interface.
> > 
> > =cut
> > 
> > Set($DefaultQueue, "Ops");
> > 
> > =item C<$RememberDefaultQueue>
> > 
> > When a queue is selected in the new ticket dropdown, make it the new
> > default for the new ticket dropdown.
> > 
> > =cut
> > 
> > # Set($RememberDefaultQueue, 1);
> > 
> > =item C<$EnableReminders>
> > 
> > Hide all links and portlets related to Reminders by setting this to 0
> > 
> > =cut
> > 
> > Set($EnableReminders, 1);
> > 
> > =item C<@CustomFieldValuesSources>
> > 
> > Set C<@CustomFieldValuesSources> to a list of class names which extend
> > L.  This can be used to pull lists of
> > custom field values from external sources at runtime.
> > 
> > =cut
> > 
> > Set(@CustomFieldValuesSources, ());
> > 
> > =item C<$CanonicalizeRedirectURLs>
> > 
> > Set C<$CanonicalizeRedirectURLs> to 1 to use C<$WebURL> when
> > redirecting rather than the one we get from C<%ENV>.
> > 
> > If you use RT behind a reverse proxy, you almost certainly want to
> > enable this option.
> > 
> > =cut
> > 
> > Set($CanonicalizeRedirectURLs, 0);
> > 
> > =item C<@JSFiles>
> > 
> > A list of JavaScript files to be included in head.  Removing any of
> > the default entries is not suggested.
> > 
> > =cut
> > 
> > Set(@JSFiles, qw/
> >     jquery-1.4.2.min.js
> >     jquery_noconflict.js
> >     jquery-ui-1.8.4.custom.min.js
> >     jquery-ui-patch-datepicker.js
> >     ui.timepickr.js
> >     titlebox-state.js
> >     util.js
> >     userautocomplete.js
> >     jquery.event.hover-1.0.js
> >     superfish.js
> >     supersubs.js
> >     jquery.supposition.js
> >     history-folding.js
> >     late.js
> > /);
> > 
> > =item C<$JSMinPath>
> > 
> > Path to the jsmin binary, available from
> > http://www.crockford.com/javascript/jsmin.html
> > 
> > If specified, it will be used to minify C.  If it cannot be
> > found, RT will fall back to the L module;
> > failing that, RT will will simply concatenate the files.
> > 
> > =cut
> > 
> > # Set($JSMinPath, "/path/to/jsmin");
> > 
> > =item C<@CSSFiles>
> > 
> > A list of additional CSS files to be included in head.
> > 
> > =cut
> > 
> > Set(@CSSFiles, qw//);
> > 
> > =item C<$UsernameFormat>
> > 
> > This determines how user info is displayed. 'concise' will show one of
> > either NickName, RealName, Name or EmailAddress, depending on what
> > exists and whether the user is privileged or not. 'verbose' will show
> > RealName and EmailAddress.
> > 
> > =cut
> > 
> > #Set($UsernameFormat, "concise");
> > Set($UsernameFormat, "verbose");
> > 
> > =item C<$WebBaseURL>, C<$WebURL>
> > 
> > Usually you don't want to set these options. The only obvious reason
> > is if RT is accessible via https protocol on a non standard port, e.g.
> > 'https://rt.example.com:9999'. In all other cases these options are
> > computed using C<$WebDomain>, C<$WebPort> and C<$WebPath>.
> > 
> > C<$WebBaseURL> is the scheme, server and port
> > (e.g. 'http://rt.example.com') for constructing URLs to the web
> > UI. C<$WebBaseURL> doesn't need a trailing /.
> > 
> > C<$WebURL> is the C<$WebBaseURL>, C<$WebPath> and trailing /, for
> > example: 'http://www.example.com/rt/'.
> > 
> > =cut
> > 
> > my $port = RT->Config->Get('WebPort');
> > Set($WebBaseURL,
> >     ($port == 443? 'https': 'http') .'://'
> >     . RT->Config->Get('WebDomain')
> >     . ($port != 80 && $port != 443? ":$port" : '')
> > );
> > 
> > Set($WebURL, RT->Config->Get('WebBaseURL') . RT->Config->Get('WebPath') . "/");
> > 
> > =item C<$WebImagesURL>
> > 
> > C<$WebImagesURL> points to the base URL where RT can find its images.
> > Define the directory name to be used for images in RT web documents.
> > 
> > =cut
> > 
> > Set($WebImagesURL, RT->Config->Get('WebPath') . "/NoAuth/images/");
> > 
> > =item C<$LogoURL>
> > 
> > C<$LogoURL> points to the URL of the RT logo displayed in the web UI.
> > This can also be configured via the web UI.
> > 
> > =cut
> > 
> > Set($LogoURL, RT->Config->Get('WebImagesURL') . "bpslogo.png");
> > 
> > =item C<$LogoLinkURL>
> > 
> > C<$LogoLinkURL> is the URL that the RT logo hyperlinks to.
> > 
> > =cut
> > 
> > Set($LogoLinkURL, "http://bestpractical.com");
> > 
> > =item C<$LogoAltText>
> > 
> > C<$LogoAltText> is a string of text for the alt-text of the logo. It
> > will be passed through C for localization.
> > 
> > =cut
> > 
> > Set($LogoAltText, "Best Practical Solutions, LLC corporate logo");
> > 
> > =item C<$LogoImageHeight>
> > 
> > C<$LogoImageHeight> is the value of the C attribute of the logo
> > C tag.
> > 
> > =cut
> > 
> > Set($LogoImageHeight, 38);
> > 
> > =item C<$LogoImageWidth>
> > 
> > C<$LogoImageWidth> is the value of the C attribute of the logo
> > C tag.
> > 
> > =cut
> > 
> > Set($LogoImageWidth, 181);
> > 
> > =item C<$WebNoAuthRegex>
> > 
> > What portion of RT's URL space should not require authentication.  The
> > default is almost certainly correct, and should only be changed if you
> > are extending RT.
> > 
> > =cut
> > 
> > Set($WebNoAuthRegex, qr{^ (?:/+NoAuth/ | /+REST/\d+\.\d+/NoAuth/) }x );
> > 
> > =item C<$SelfServiceRegex>
> > 
> > What portion of RT's URLspace should be accessible to Unprivileged
> > users This does not override the redirect from F
> > to F when Unprivileged users attempt to
> > access ticked displays.
> > 
> > =cut
> > 
> > Set($SelfServiceRegex, qr!^(?:/+SelfService/)!x );
> > 
> > =item C<$WebFlushDbCacheEveryRequest>
> > 
> > By default, RT clears its database cache after every page view.  This
> > ensures that you've always got the most current information when
> > working in a multi-process (mod_perl or FastCGI) Environment.  Setting
> > C<$WebFlushDbCacheEveryRequest> to 0 will turn this off, which will
> > speed RT up a bit, at the expense of a tiny bit of data accuracy.
> > 
> > =cut
> > 
> > Set($WebFlushDbCacheEveryRequest, 1);
> > 
> > =item C<%ChartFont>
> > 
> > The L module (which RT uses for graphs) ships with a built-in font
> > that doesn't have full Unicode support. You can use a given TrueType
> > font for a specific language by setting %ChartFont to (language =E
> > the absolute path of a font) pairs. Your GD library must have support
> > for TrueType fonts to use this option. If there is no entry for a
> > language in the hash then font with 'others' key is used.
> > 
> > RT comes with two TrueType fonts covering most available languages.
> > 
> > =cut
> > 
> > Set(
> >     %ChartFont,
> >     'zh-cn'  => "$RT::BasePath/share/fonts/DroidSansFallback.ttf",
> >     'zh-tw'  => "$RT::BasePath/share/fonts/DroidSansFallback.ttf",
> >     'ja'     => "$RT::BasePath/share/fonts/DroidSansFallback.ttf",
> >     'others' => "$RT::BasePath/share/fonts/DroidSans.ttf",
> > );
> > 
> > =item C<$ChartsTimezonesInDB>
> > 
> > RT stores dates using the UTC timezone in the DB, so charts grouped by
> > dates and time are not representative. Set C<$ChartsTimezonesInDB> to 1
> > to enable timezone conversions using your DB's capabilities. You may
> > need to do some work on the DB side to use this feature, read more in
> > F.
> > 
> > At this time, this feature only applies to MySQL and PostgreSQL.
> > 
> > =cut
> > 
> > Set($ChartsTimezonesInDB, 0);
> > 
> > =back
> > 
> > 
> > 
> > =head2 Home page
> > 
> > =over 4
> > 
> > =item C<$DefaultSummaryRows>
> > 
> > C<$DefaultSummaryRows> is default number of rows displayed in for
> > search results on the front page.
> > 
> > =cut
> > 
> > Set($DefaultSummaryRows, 10);
> > 
> > =item C<$HomePageRefreshInterval>
> > 
> > C<$HomePageRefreshInterval> is default number of seconds to refresh
> > the RT home page. Choose from [0, 120, 300, 600, 1200, 3600, 7200].
> > 
> > =cut
> > 
> > Set($HomePageRefreshInterval, 0);
> > 
> > =item C<$HomepageComponents>
> > 
> > C<$HomepageComponents> is an arrayref of allowed components on a
> > user's customized homepage ("RT at a glance").
> > 
> > =cut
> > 
> > Set($HomepageComponents, [qw(QuickCreate Quicksearch MyAdminQueues MySupportQueues MyReminders RefreshHomepage Dashboards SavedSearches)]);
> > 
> > =back
> > 
> > 
> > 
> > 
> > =head2 Ticket search
> > 
> > =over 4
> > 
> > =item C<$UseSQLForACLChecks>
> > 
> > Historically, ACLs were checked on display, which could lead to empty
> > search pages and wrong ticket counts.  Set C<$UseSQLForACLChecks> to 1
> > to limit search results in SQL instead, which eliminates these
> > problems.
> > 
> > This option is still relatively new; it may result in performance
> > problems in some cases, or significant speedups in others.
> > 
> > =cut
> > 
> > Set($UseSQLForACLChecks, undef);
> > 
> > =item C<$TicketsItemMapSize>
> > 
> > On the display page of a ticket from search results, RT provides links
> > to the first, next, previous and last ticket from the results.  In
> > order to build these links, RT needs to fetch the full result set from
> > the database, which can be resource-intensive.
> > 
> > Set C<$TicketsItemMapSize> to number of tickets you want RT to examine
> > to build these links. If the full result set is larger than this
> > number, RT will omit the "last" link in the menu.  Set this to zero to
> > always examine all results.
> > 
> > =cut
> > 
> > Set($TicketsItemMapSize, 1000);
> > 
> > =item C<$SearchResultsRefreshInterval>
> > 
> > C<$SearchResultsRefreshInterval> is default number of seconds to
> > refresh search results in RT. Choose from [0, 120, 300, 600, 1200,
> > 3600, 7200].
> > 
> > =cut
> > 
> > Set($SearchResultsRefreshInterval, 0);
> > 
> > =item C<$DefaultSearchResultFormat>
> > 
> > C<$DefaultSearchResultFormat> is the default format for RT search
> > results
> > 
> > =cut
> > 
> > Set ($DefaultSearchResultFormat, qq{
> >    '__id__/TITLE:#',
> >    '__Subject__/TITLE:Subject',
> >    Status,
> >    QueueName,
> >    OwnerName,
> >    Priority,
> >    '__NEWLINE__',
> >    '',
> >    '__Requestors__',
> >    '__CreatedRelative__',
> >    '__ToldRelative__',
> >    '__LastUpdatedRelative__',
> >    '__TimeLeft__'});
> > 
> > =item C<$DefaultSelfServiceSearchResultFormat>
> > 
> > C<$DefaultSelfServiceSearchResultFormat> is the default format of
> > searches displayed in the SelfService interface.
> > 
> > =cut
> > 
> > Set($DefaultSelfServiceSearchResultFormat, qq{
> >    '__id__/TITLE:#',
> >    '__Subject__/TITLE:Subject',
> >    Status,
> >    Requestors,
> >    OwnerName});
> > 
> > =item C<%FullTextSearch>
> > 
> > Full text search (FTS) without database indexing is a very slow
> > operation, and is thus disabled by default.
> > 
> > Before setting C to 1, read F for
> > the full details of FTS on your particular database.
> > 
> > It is possible to enable FTS without database indexing support, simply
> > by setting the C key to 1, while leaving C set to 0.
> > This is not generally suggested, as unindexed full-text searching can
> > cause severe performance problems.
> > 
> > =cut
> > 
> > Set(%FullTextSearch,
> >     Enable  => 0,
> >     Indexed => 0,
> > );
> > 
> > 
> > =item C<$OnlySearchActiveTicketsInSimpleSearch>
> > 
> > When query in simple search doesn't have status info, use this to only
> > search active ones.
> > 
> > =cut
> > 
> > Set($OnlySearchActiveTicketsInSimpleSearch, 1);
> > 
> > =item C<$SearchResultsAutoRedirect>
> > 
> > When only one ticket is found in search, use this to redirect to the
> > ticket display page automatically.
> > 
> > =cut
> > 
> > Set($SearchResultsAutoRedirect, 0);
> > 
> > =back
> > 
> > 
> > 
> > =head2 Ticket display
> > 
> > =over 4
> > 
> > =item C<$ShowMoreAboutPrivilegedUsers>
> > 
> > This determines if the 'More about requestor' box on
> > Ticket/Display.html is shown for Privileged Users.
> > 
> > =cut
> > 
> > Set($ShowMoreAboutPrivilegedUsers, 0);
> > 
> > =item C<$MoreAboutRequestorTicketList>
> > 
> > This can be set to Active, Inactive, All or None.  It controls what
> > ticket list will be displayed in the 'More about requestor' box on
> > Ticket/Display.html.  This option can be controlled by users also.
> > 
> > =cut
> > 
> > Set($MoreAboutRequestorTicketList, "Active");
> > 
> > =item C<$MoreAboutRequestorExtraInfo>
> > 
> > By default, the 'More about requestor' box on Ticket/Display.html
> > shows the Requestor's name and ticket list.  If you would like to see
> > extra information about the user, this expects a Format string of user
> > attributes.  Please note that not all the attributes are supported in
> > this display because we're not building a table.
> > 
> > =cut
> > 
> > Set($MoreAboutRequestorExtraInfo, "");
> > 
> > =item C<$MoreAboutRequestorGroupsLimit>
> > 
> > By default, the 'More about requestor' box on Ticket/Display.html
> > shows all the groups of the Requestor.  Use this to limit the number
> > of groups; a value of undef removes the group display entirely.
> > 
> > =cut
> > 
> > Set($MoreAboutRequestorGroupsLimit, 0);
> > 
> > =item C<$UseSideBySideLayout>
> > 
> > Should the ticket create and update forms use a more space efficient
> > two column layout.  This layout may not work in narrow browsers if you
> > set a MessageBoxWidth (below).
> > 
> > =cut
> > 
> > Set($UseSideBySideLayout, 1);
> > 
> > =item C<$EditCustomFieldsSingleColumn>
> > 
> > When displaying a list of Ticket Custom Fields for editing, RT
> > defaults to a 2 column list.  If you set this to 1, it will instead
> > display the Custom Fields in a single column.
> > 
> > =cut
> > 
> > Set($EditCustomFieldsSingleColumn, 0);
> > 
> > =item C<$ShowUnreadMessageNotifications>
> > 
> > If set to 1, RT will prompt users when there are new,
> > unread messages on tickets they are viewing.
> > 
> > =cut
> > 
> > Set($ShowUnreadMessageNotifications, 0);
> > 
> > =item C<$AutocompleteOwners>
> > 
> > If set to 1, the owner drop-downs for ticket update/modify and the query
> > builder are replaced by text fields that autocomplete.  This can
> > alleviate the sometimes huge owner list for installations where many
> > users have the OwnTicket right.
> > 
> > =cut
> > 
> > Set($AutocompleteOwners, 0);
> > 
> > =item C<$UserAutocompleteFields>
> > 
> > Specifies which fields of L to match against and how to
> > match each field when autocompleting users.  Valid match methods are
> > LIKE, STARTSWITH, ENDSWITH, =, and !=.
> > 
> > =cut
> > 
> > Set($UserAutocompleteFields, {
> >     EmailAddress => 'STARTSWITH',
> >     Name         => 'STARTSWITH',
> >     RealName     => 'LIKE',
> > });
> > 
> > =item C<$AllowUserAutocompleteForUnprivileged>
> > 
> > Should unprivileged users be allowed to autocomplete users.  Setting
> > this option to 1 means unprivileged users will be able to search all
> > your users.
> > 
> > =cut
> > 
> > Set($AllowUserAutocompleteForUnprivileged, 0);
> > 
> > =item C<$DisplayTicketAfterQuickCreate>
> > 
> > Enable this to redirect to the created ticket display page
> > automatically when using QuickCreate.
> > 
> > =cut
> > 
> > Set($DisplayTicketAfterQuickCreate, 0);
> > 
> > =item C<$WikiImplicitLinks>
> > 
> > Support implicit links in WikiText custom fields?  Setting this to 1
> > causes InterCapped or ALLCAPS words in WikiText fields to automatically
> > become links to searches for those words.  If used on Articles, it links
> > to the Article with that name.
> > 
> > =cut
> > 
> > Set($WikiImplicitLinks, 0);
> > 
> > =item C<$PreviewScripMessages>
> > 
> > Set C<$PreviewScripMessages> to 1 if the scrips preview on the ticket
> > reply page should include the content of the messages to be sent.
> > 
> > =cut
> > 
> > Set($PreviewScripMessages, 0);
> > 
> > =item C<$SimplifiedRecipients>
> > 
> > If C<$SimplifiedRecipients> is set, a simple list of who will receive
> > B kind of mail will be shown on the ticket reply page, instead of a
> > detailed breakdown by scrip.
> > 
> > =cut
> > 
> > Set($SimplifiedRecipients, 0);
> > 
> > =back
> > 
> > 
> > 
> > =head2 Articles
> > 
> > =over 4
> > 
> > =item C<$ArticleOnTicketCreate>
> > 
> > Set this to 1 to display the Articles interface on the Ticket Create
> > page in addition to the Reply/Comment page.
> > 
> > =cut
> > 
> > Set($ArticleOnTicketCreate, 0);
> > 
> > =item C<$HideArticleSearchOnReplyCreate>
> > 
> > Set this to 1 to hide the search and include boxes from the Article
> > UI.  This assumes you have enabled Article Hotlist feature, otherwise
> > you will have no access to Articles.
> > 
> > =cut
> > 
> > Set($HideArticleSearchOnReplyCreate, 0);
> > 
> > =back
> > 
> > 
> > 
> > =head2 Message box properties
> > 
> > =over 4
> > 
> > =item C<$MessageBoxWidth>, C<$MessageBoxHeight>
> > 
> > For message boxes, set the entry box width, height and what type of
> > wrapping to use.  These options can be overridden by users in their
> > preferences.
> > 
> > When the width is set to undef, no column count is specified and the
> > message box will take up 100% of the available width.  Combining this
> > with HARD messagebox wrapping (below) is not recommended, as it will
> > lead to inconsistent width in transactions between browsers.
> > 
> > These settings only apply to the non-RichText message box.  See below
> > for Rich Text settings.
> > 
> > =cut
> > 
> > Set($MessageBoxWidth, undef);
> > Set($MessageBoxHeight, 15);
> > 
> > =item C<$MessageBoxWrap>
> > 
> > Wrapping is disabled when using MessageBoxRichText because of a bad
> > interaction between IE and wrapping with the Rich Text Editor.
> > 
> > =cut
> > 
> > Set($MessageBoxWrap, "SOFT");
> > 
> > =item C<$MessageBoxRichText>
> > 
> > Should "rich text" editing be enabled? This option lets your users
> > send HTML email messages from the web interface.
> > 
> > =cut
> > 
> > Set($MessageBoxRichText, 1);
> > 
> > =item C<$MessageBoxRichTextHeight>
> > 
> > Height of rich text JavaScript enabled editing boxes (in pixels)
> > 
> > =cut
> > 
> > Set($MessageBoxRichTextHeight, 200);
> > 
> > =item C<$MessageBoxIncludeSignature>
> > 
> > Should your users' signatures (from their Preferences page) be
> > included in Comments and Replies.
> > 
> > =cut
> > 
> > Set($MessageBoxIncludeSignature, 1);
> > 
> > =item C<$MessageBoxIncludeSignatureOnComment>
> > 
> > Should your users' signatures (from their Preferences page) be
> > included in Comments. Setting this to false overrides
> > C<$MessageBoxIncludeSignature>.
> > 
> > =cut
> > 
> > Set($MessageBoxIncludeSignatureOnComment, 1);
> > 
> > =back
> > 
> > 
> > =head2 Transaction display
> > 
> > =over 4
> > 
> > =item C<$OldestTransactionsFirst>
> > 
> > By default, RT shows newest transactions at the bottom of the ticket
> > history page, if you want see them at the top set this to 0.  This
> > option can be overridden by users in their preferences.
> > 
> > =cut
> > 
> > Set($OldestTransactionsFirst, 1);
> > 
> > =item C<$DeferTransactionLoading>
> > 
> > When set, defers loading ticket history until the user clicks a link.
> > This should end up serving pages to users quicker, since generating
> > all the HTML for transaction history can be slow for long tickets.
> > 
> > =cut
> > 
> > # Set($DeferTransactionLoading, 1);
> > 
> > =item C<$ShowBccHeader>
> > 
> > By default, RT hides from the web UI information about blind copies
> > user sent on reply or comment.
> > 
> > =cut
> > 
> > Set($ShowBccHeader, 0);
> > 
> > =item C<$TrustHTMLAttachments>
> > 
> > If C is not defined, we will display them as
> > text. This prevents malicious HTML and JavaScript from being sent in a
> > request (although there is probably more to it than that)
> > 
> > =cut
> > 
> > Set($TrustHTMLAttachments, undef);
> > 
> > =item C<$AlwaysDownloadAttachments>
> > 
> > Always download attachments, regardless of content type. If set, this
> > overrides C.
> > 
> > =cut
> > 
> > Set($AlwaysDownloadAttachments, undef);
> > 
> > =item C<$AttachmentUnits>
> > 
> > Controls the units (kilobytes or bytes) that attachment sizes use for
> > display. The default is to display kilobytes if the attachment is
> > larger than 1024 bytes, bytes otherwise. If you set
> > C<$AttachmentUnits> to C<'k'> then attachment sizes will always be
> > displayed in kilobytes. If set to C<'b'>, then sizes will be bytes.
> > 
> > =cut
> > 
> > Set($AttachmentUnits, undef);
> > 
> > =item C<$PreferRichText>
> > 
> > If C<$PreferRichText> is set to 1, RT will show HTML/Rich text messages
> > in preference to their plain-text alternatives. RT "scrubs" the HTML to
> > show only a minimal subset of HTML to avoid possible contamination by
> > cross-site-scripting attacks.
> > 
> > =cut
> > 
> > Set($PreferRichText, undef);
> > 
> > =item C<$MaxInlineBody>
> > 
> > C<$MaxInlineBody> is the maximum attachment size that we want to see
> > inline when viewing a transaction.  RT will inline any text if the
> > value is undefined or 0.  This option can be overridden by users in
> > their preferences.
> > 
> > =cut
> > 
> > Set($MaxInlineBody, 12000);
> > 
> > =item C<$ShowTransactionImages>
> > 
> > By default, RT shows images attached to incoming (and outgoing) ticket
> > updates inline. Set this variable to 0 if you'd like to disable that
> > behavior.
> > 
> > =cut
> > 
> > Set($ShowTransactionImages, 1);
> > 
> > =item C<$PlainTextPre>
> > 
> > Normally plaintext attachments are displayed as HTML with line breaks
> > preserved.  This causes space- and tab-based formatting not to be
> > displayed correctly.  By setting $PlainTextPre messages will be
> > displayed using 
; this option overrides C<$PlainTextMono>.
> > 
> > =cut
> > 
> > Set($PlainTextPre, 0);
> > 
> > 
> > =item C<$PlainTextMono>
> > 
> > Set C<$PlainTextMono> to 1 to use monospaced font and preserve
> > formatting; unlike C<$PlainTextPre>, the text will wrap to fit width
> > of the browser window.
> > 
> > =cut
> > 
> > Set($PlainTextMono, 0);
> > 
> > =item C<$SuppressInlineTextFiles>
> > 
> > If C<$SuppressInlineTextFiles> is set to 1, then uploaded text files
> > (text-type attachments with file names) are prevented from being
> > displayed in-line when viewing a ticket's history.
> > 
> > =cut
> > 
> > Set($SuppressInlineTextFiles, undef);
> > 
> > 
> > =item C<@Active_MakeClicky>
> > 
> > MakeClicky detects various formats of data in headers and email
> > messages, and extends them with supporting links.  By default, RT
> > provides two formats:
> > 
> > * 'httpurl': detects http:// and https:// URLs and adds '[Open URL]'
> >   link after the URL.
> > 
> > * 'httpurl_overwrite': also detects URLs as 'httpurl' format, but
> >   replaces the URL with a link and *adds spaces* into the text if it
> >   is longer then 30 characters. This allows the browser to wrap long
> >   URLs and avoid horizontal scrolling.
> > 
> > See F for documentation on how to add
> > your own styles of link detection.
> > 
> > =cut
> > 
> > Set(@Active_MakeClicky, qw());
> > 
> > =back
> > 
> > 
> > 
> > =head1 Application logic
> > 
> > =over 4
> > 
> > =item C<$ParseNewMessageForTicketCcs>
> > 
> > If C<$ParseNewMessageForTicketCcs> is set to 1, RT will attempt to
> > divine Ticket 'Cc' watchers from the To and Cc lines of incoming
> > messages.  Be forewarned that if you have I addresses which forward
> > mail to RT automatically and you enable this option without modifying
> > C<$RTAddressRegexp> below, you will get yourself into a heap of trouble.
> > 
> > =cut
> > 
> > Set($ParseNewMessageForTicketCcs, undef);
> > 
> > =item C<$UseTransactionBatch>
> > 
> > Set C<$UseTransactionBatch> to 1 to execute transactions in batches,
> > such that a resolve and comment (for example) would happen
> > simultaneously, instead of as two transactions, unaware of each
> > others' existence.
> > 
> > =cut
> > 
> > Set($UseTransactionBatch, 1);
> > 
> > =item C<$StrictLinkACL>
> > 
> > When this feature is enabled a user needs I rights on
> > both tickets to link them together; otherwise, I rights
> > on either of them is sufficient.
> > 
> > =cut
> > 
> > Set($StrictLinkACL, 1);
> > 
> > =item C<$RedistributeAutoGeneratedMessages>
> > 
> > Should RT redistribute correspondence that it identifies as machine
> > generated?  A 1 will do so; setting this to 0 will cause no
> > such messages to be redistributed.  You can also use 'privileged' (the
> > default), which will redistribute only to privileged users. This helps
> > to protect against malformed bounces and loops caused by auto-created
> > requestors with bogus addresses.
> > 
> > =cut
> > 
> > Set($RedistributeAutoGeneratedMessages, "privileged");
> > 
> > =item C<$ApprovalRejectionNotes>
> > 
> > Should rejection notes from approvals be sent to the requestors?
> > 
> > =back
> > 
> > =cut
> > 
> > Set($ApprovalRejectionNotes, 1);
> > 
> > =head1 Extra security
> > 
> > =over 4
> > 
> > This is a list of extra security measures to enable that help keep your RT
> > safe.  If you don't know what these mean, you should almost certainly leave the
> > defaults alone.
> > 
> > =item C<$DisallowExecuteCode>
> > 
> > If set to a true value, the C right will be removed from
> > all users, B the superuser.  This is intended for when RT is
> > installed into a shared environment where even the superuser should not
> > be allowed to run arbitrary Perl code on the server via scrips.
> > 
> > =cut
> > 
> > Set($DisallowExecuteCode, 0);
> > 
> > =item C<$Framebusting>
> > 
> > If set to a false value, framekiller javascript will be disabled and the
> > X-Frame-Options: DENY header will be suppressed from all responses.
> > This disables RT's clickjacking protection.
> > 
> > =cut
> > 
> > Set($Framebusting, 1);
> > 
> > =back
> > 
> > =head1 Authorization and user configuration
> > 
> > =over 4
> > 
> > =item C<$WebExternalAuth>
> > 
> > If C<$WebExternalAuth> is defined, RT will defer to the environment's
> > REMOTE_USER variable.
> > 
> > =cut
> > 
> > Set($WebExternalAuth, undef);
> > 
> > =item C<$WebExternalAuthContinuous>
> > 
> > If C<$WebExternalAuthContinuous> is defined, RT will check for the
> > REMOTE_USER on each access.  If you would prefer this to only happen
> > once (at initial login) set this to a false value.  The default
> > setting will help ensure that if your external authentication system
> > deauthenticates a user, RT notices as soon as possible.
> > 
> > =cut
> > 
> > Set($WebExternalAuthContinuous, 1);
> > 
> > =item C<$WebFallbackToInternalAuth>
> > 
> > If C<$WebFallbackToInternalAuth> is defined, the user is allowed a
> > chance of fallback to the login screen, even if REMOTE_USER failed.
> > 
> > =cut
> > 
> > Set($WebFallbackToInternalAuth, undef);
> > 
> > =item C<$WebExternalGecos>
> > 
> > C<$WebExternalGecos> means to match 'gecos' field as the user
> > identity); useful with mod_auth_pwcheck and IIS Integrated Windows
> > logon.
> > 
> > =cut
> > 
> > Set($WebExternalGecos, undef);
> > 
> > =item C<$WebExternalAuto>
> > 
> > C<$WebExternalAuto> will create users under the same name as
> > REMOTE_USER upon login, if it's missing in the Users table.
> > 
> > =cut
> > 
> > Set($WebExternalAuto, undef);
> > 
> > =item C<$AutoCreate>
> > 
> > If C<$WebExternalAuto> is set to 1, C<$AutoCreate> will be passed to
> > User's Create method.  Use it to set defaults, such as creating
> > Unprivileged users with C<{ Privileged => 0 }> This must be a hashref.
> > 
> > =cut
> > 
> > Set($AutoCreate, undef);
> > 
> > =item C<$WebSessionClass>
> > 
> > C<$WebSessionClass> is the class you wish to use for managing
> > Sessions.  It defaults to use your SQL database, but if you are using
> > MySQL 3.x and plans to use non-ascii Queue names, uncomment and add
> > this line to F to prevent session corruption.
> > 
> > =cut
> > 
> > # Set($WebSessionClass, "Apache::Session::File");
> > 
> > =item C<$AutoLogoff>
> > 
> > By default, RT's user sessions persist until a user closes his or her
> > browser. With the C<$AutoLogoff> option you can setup session lifetime
> > in minutes. A user will be logged out if he or she doesn't send any
> > requests to RT for the defined time.
> > 
> > =cut
> > 
> > Set($AutoLogoff, 0);
> > 
> > =item C<$LogoutRefresh>
> > 
> > The number of seconds to wait after logout before sending the user to
> > the login page. By default, 1 second, though you may want to increase
> > this if you display additional information on the logout page.
> > 
> > =cut
> > 
> > Set($LogoutRefresh, 1);
> > 
> > =item C<$WebSecureCookies>
> > 
> > By default, RT's session cookie isn't marked as "secure". Some web
> > browsers will treat secure cookies more carefully than non-secure
> > ones, being careful not to write them to disk, only sending them over
> > an SSL secured connection, and so on. To enable this behavior, set
> > C<$WebSecureCookies> to 1.  NOTE: You probably don't want to turn this
> > on I users are only connecting via SSL encrypted HTTPS
> > connections.
> > 
> > =cut
> > 
> > Set($WebSecureCookies, 0);
> > 
> > =item C<$MinimumPasswordLength>
> > 
> > C<$MinimumPasswordLength> defines the minimum length for user
> > passwords. Setting it to 0 disables this check.
> > 
> > =cut
> > 
> > Set($MinimumPasswordLength, 5);
> > 
> > =back
> > 
> > 
> > =head1 Internationalization
> > 
> > =over 4
> > 
> > =item C<@LexiconLanguages>
> > 
> > An array that contains languages supported by RT's
> > internationalization interface.  Defaults to all *.po lexicons;
> > setting it to C will make RT bilingual instead of
> > multilingual, but will save some memory.
> > 
> > =cut
> > 
> > Set(@LexiconLanguages, qw(*));
> > 
> > =item C<@EmailInputEncodings>
> > 
> > An array that contains default encodings used to guess which charset
> > an attachment uses, if it does not specify one explicitly.  All
> > options must be recognized by L.  The first element may
> > also be '*', which enables encoding detection using
> > L, if installed.
> > 
> > =cut
> > 
> > Set(@EmailInputEncodings, qw(utf-8 iso-8859-1 us-ascii));
> > 
> > =item C<$EmailOutputEncoding>
> > 
> > The charset for localized email.  Must be recognized by Encode.
> > 
> > =cut
> > 
> > Set($EmailOutputEncoding, "utf-8");
> > 
> > =back
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > =head1 Date and time handling
> > 
> > =over 4
> > 
> > =item C<$DateTimeFormat>
> > 
> > You can choose date and time format.  See the "Output formatters"
> > section in perldoc F for more options.  This option
> > can be overridden by users in their preferences.
> > 
> > Some examples:
> > 
> > C
> > C "ISO", Seconds => 0 });>
> > C
> > C "RFC2822", Seconds => 0, DayOfWeek => 0 });>
> > 
> > =cut
> > 
> > Set($DateTimeFormat, "DefaultFormat");
> > 
> > # Next two options are for Time::ParseDate
> > 
> > =item C<$DateDayBeforeMonth>
> > 
> > Set this to 1 if your local date convention looks like "dd/mm/yy"
> > instead of "mm/dd/yy". Used only for parsing, not for displaying
> > dates.
> > 
> > =cut
> > 
> > Set($DateDayBeforeMonth, 1);
> > 
> > =item C<$AmbiguousDayInPast>, C<$AmbiguousDayInFuture>
> > 
> > Should an unspecified day or year in a date refer to a future or a
> > past value? For example, should a date of "Tuesday" default to mean
> > the date for next Tuesday or last Tuesday? Should the date "March 1"
> > default to the date for next March or last March?
> > 
> > Set C<$AmbiguousDayInPast> for the last date, or
> > C<$AmbiguousDayInFuture> for the next date; the default is usually
> > correct.  If both are set, C<$AmbiguousDayInPast> takes precedence.
> > 
> > =cut
> > 
> > Set($AmbiguousDayInPast, 0);
> > Set($AmbiguousDayInFuture, 0);
> > 
> > =item C<$DefaultTimeUnitsToHours>
> > 
> > Use this to set the default units for time entry to hours instead of
> > minutes.  Note that this only effects entry, not display.
> > 
> > =cut
> > 
> > Set($DefaultTimeUnitsToHours, 0);
> > 
> > =back
> > 
> > 
> > 
> > 
> > =head1 GnuPG integration
> > 
> > A full description of the (somewhat extensive) GnuPG integration can
> > be found by running the command `perldoc L` (or
> > `perldoc lib/RT/Crypt/GnuPG.pm` from your RT install directory).
> > 
> > =over 4
> > 
> > =item C<%GnuPG>
> > 
> > Set C to 'inline' to use inline encryption and
> > signatures instead of 'RFC' (GPG/MIME: RFC3156 and RFC1847) format.
> > 
> > If you want to allow people to encrypt attachments inside the DB then
> > set C to 1.
> > 
> > Set C to false if you don't want to reject
> > emails encrypted for key RT doesn't have and can not decrypt.
> > 
> > Set C to false if you don't want to reject letters
> > with incorrect GnuPG data.
> > 
> > =cut
> > 
> > Set(%GnuPG,
> >     Enable => 1,
> >     OutgoingMessagesFormat => "RFC", # Inline
> >     AllowEncryptDataInDB   => 0,
> > 
> >     RejectOnMissingPrivateKey => 1,
> >     RejectOnBadData           => 1,
> > );
> > 
> > =item C<%GnuPGOptions>
> > 
> > Options to pass to the GnuPG program.
> > 
> > If you override this in your RT_SiteConfig, you should be sure to
> > include a homedir setting.
> > 
> > Note that options with '-' character MUST be quoted.
> > 
> > =cut
> > 
> > Set(%GnuPGOptions,
> >     homedir => q{var/data/gpg},
> > 
> > # URL of a keyserver
> > #    keyserver => 'hkp://subkeys.pgp.net',
> > 
> > # enables the automatic retrieving of keys when encrypting
> > #    'auto-key-locate' => 'keyserver',
> > 
> > # enables the automatic retrieving of keys when verifying signatures
> > #    'auto-key-retrieve' => undef,
> > );
> > 
> > =back
> > 
> > 
> > 
> > =head1 Lifecycles
> > 
> > =head2 Lifecycle definitions
> > 
> > Each lifecycle is a list of possible statuses split into three logic
> > sets: B, B and B. Each status in a
> > lifecycle must be unique. (Statuses may not be repeated across sets.)
> > Each set may have any number of statuses.
> > 
> > For example:
> > 
> >     default => {
> >         initial  => ['new'],
> >         active   => ['open', 'stalled'],
> >         inactive => ['resolved', 'rejected', 'deleted'],
> >         ...
> >     },
> > 
> > Status names can be from 1 to 64 ASCII characters.  Statuses are
> > localized using RT's standard internationalization and localization
> > system.
> > 
> > =over 4
> > 
> > =item initial
> > 
> > You can define multiple B statuses for tickets in a given
> > lifecycle.
> > 
> > RT will automatically set its B date when you change a
> > ticket's status from an B state to an B or
> > B status.
> > 
> > =item active
> > 
> > B tickets are "currently in play" - they're things that are
> > being worked on and not yet complete.
> > 
> > =item inactive
> > 
> > B tickets are typically in their "final resting state".
> > 
> > While you're free to implement a workflow that ignores that
> > description, typically once a ticket enters an inactive state, it will
> > never again enter an active state.
> > 
> > RT will automatically set the B date when a ticket's status
> > is changed from an B or B status to an B
> > status.
> > 
> > B is still a special status and protected by the
> > B right, unless you re-defined rights (read below). If
> > you don't want to allow ticket deletion at any time simply don't
> > include it in your lifecycle.
> > 
> > =back
> > 
> > Statuses in each set are ordered and listed in the UI in the defined
> > order.
> > 
> > Changes between statuses are constrained by transition rules, as
> > described below.
> > 
> > =head2 Default values
> > 
> > In some cases a default value is used to display in UI or in API when
> > value is not provided. You can configure defaults using the following
> > syntax:
> > 
> >     default => {
> >         ...
> >         defaults => {
> >             on_create => 'new',
> >             on_resolve => 'resolved',
> >             ...
> >         },
> >     },
> > 
> > The following defaults are used.
> > 
> > =over 4
> > 
> > =item on_create
> > 
> > If you (or your code) doesn't specify a status when creating a ticket,
> > RT will use the this status. See also L > ticket creation>.
> > 
> > =item on_merge
> > 
> > When tickets are merged, the status of the ticket that was merged
> > away is forced to this value.  It should be one of inactive statuses;
> > 'resolved' or its equivalent is most probably the best candidate.
> > 
> > =item approved
> > 
> > When an approval is accepted, the status of depending tickets will
> > be changed to this value.
> > 
> > =item denied
> > 
> > When an approval is denied, the status of depending tickets will
> > be changed to this value.
> > 
> > =back
> > 
> > =head2 Transitions between statuses and UI actions
> > 
> > A B is a change of status from A to B. You should define
> > all possible transitions in each lifecycle using the following format:
> > 
> >     default => {
> >         ...
> >         transitions => {
> >             ''       => [qw(new open resolved)],
> >             new      => [qw(open resolved rejected deleted)],
> >             open     => [qw(stalled resolved rejected deleted)],
> >             stalled  => [qw(open)],
> >             resolved => [qw(open)],
> >             rejected => [qw(open)],
> >             deleted  => [qw(open)],
> >         },
> >         ...
> >     },
> > 
> > =head3 Statuses available during ticket creation
> > 
> > By default users can create tickets with any status, except
> > deleted. If you want to restrict statuses available during creation
> > then describe transition from '' (empty string), like in the example
> > above.
> > 
> > =head3 Protecting status changes with rights
> > 
> > A transition or group of transitions can be protected by a specific
> > right.  Additionally, you can name new right names, which will be added
> > to the system to control that transition.  For example, if you wished to
> > create a lesser right than ModifyTicket for rejecting tickets, you could
> > write:
> > 
> >     default => {
> >         ...
> >         rights => {
> >             '* -> deleted'  => 'DeleteTicket',
> >             '* -> rejected' => 'RejectTicket',
> >             '* -> *'        => 'ModifyTicket',
> >         },
> >         ...
> >     },
> > 
> > This would create a new C right in the system which you
> > could assign to whatever groups you choose.
> > 
> > On the left hand side you can have the following variants:
> > 
> >     ' -> '
> >     '* -> '
> >     ' -> *'
> >     '* -> *'
> > 
> > Valid transitions are listed in order of priority. If a user attempts
> > to change a ticket's status from B to B then the lifecycle
> > is checked for presence of an exact match, then for 'any to B',
> > 'B to any' and finally 'any to any'.
> > 
> > If you don't define any rights, or there is no match for a transition,
> > RT will use the B or B as appropriate.
> > 
> > =head3 Labeling and defining actions
> > 
> > For each transition you can define an action that will be shown in the
> > UI; each action annotated with a label and an update type.
> > 
> > Each action may provide a default update type, which can be
> > B, B, or absent. For example, you may want your
> > staff to write a reply to the end user when they change status from
> > B to B, and thus set the update to B.  Neither
> > B nor B are mandatory, and user may leave the
> > message empty, regardless of the update type.
> > 
> > This configuration can be used to accomplish what
> > $ResolveDefaultUpdateType was used for in RT 3.8.
> > 
> > Use the following format to define labels and actions of transitions:
> > 
> >     default => {
> >         ...
> >         actions => [
> >             'new -> open'     => { label => 'Open it', update => 'Respond' },
> >             'new -> resolved' => { label => 'Resolve', update => 'Comment' },
> >             'new -> rejected' => { label => 'Reject',  update => 'Respond' },
> >             'new -> deleted'  => { label => 'Delete' },
> > 
> >             'open -> stalled'  => { label => 'Stall',   update => 'Comment' },
> >             'open -> resolved' => { label => 'Resolve', update => 'Comment' },
> >             'open -> rejected' => { label => 'Reject',  update => 'Respond' },
> > 
> >             'stalled -> open'  => { label => 'Open it' },
> >             'resolved -> open' => { label => 'Re-open', update => 'Comment' },
> >             'rejected -> open' => { label => 'Re-open', update => 'Comment' },
> >             'deleted -> open'  => { label => 'Undelete' },
> >         ],
> >         ...
> >     },
> > 
> > In addition, you may define multiple actions for the same transition.
> > Alternately, you may use '* -> x' to match more than one transition.
> > For example:
> > 
> >     default => {
> >         ...
> >         actions => [
> >             ...
> >             'new -> rejected' => { label => 'Reject', update => 'Respond' },
> >             'new -> rejected' => { label => 'Quick Reject' },
> >             ...
> >             '* -> deleted' => { label => 'Delete' },
> >             ...
> >         ],
> >         ...
> >     },
> > 
> > =head2 Moving tickets between queues with different lifecycles
> > 
> > Unless there is an explicit mapping between statuses in two different
> > lifecycles, you can not move tickets between queues with these
> > lifecycles.  Such a mapping is defined as follows:
> > 
> >     __maps__ => {
> >         'from lifecycle -> to lifecycle' => {
> >             'status in left lifecycle' => 'status in right lifecycle',
> >             ...
> >         },
> >         ...
> >     },
> > 
> > =cut
> > 
> > Set(%Lifecycles,
> >     default => {
> >         initial         => [ 'new' ],
> >         active          => [ 'open', 'stalled' ],
> >         inactive        => [ 'resolved', 'rejected', 'deleted' ],
> > 
> >         defaults => {
> >             on_create => 'new',
> >             on_merge  => 'resolved',
> >             approved  => 'open',
> >             denied    => 'rejected',
> >         },
> > 
> >         transitions => {
> >             ''       => [qw(new open resolved)],
> > 
> >             # from   => [ to list ],
> >             new      => [qw(open stalled resolved rejected deleted)],
> >             open     => [qw(new stalled resolved rejected deleted)],
> >             stalled  => [qw(new open rejected resolved deleted)],
> >             resolved => [qw(new open stalled rejected deleted)],
> >             rejected => [qw(new open stalled resolved deleted)],
> >             deleted  => [qw(new open stalled rejected resolved)],
> >         },
> >         rights => {
> >             '* -> deleted'  => 'DeleteTicket',
> >             '* -> *'        => 'ModifyTicket',
> >         },
> >         actions => [
> >             'new -> open'      => {
> >                 label  => 'Open It', # loc
> >                 update => 'Respond',
> >             },
> >             'new -> resolved'  => {
> >                 label  => 'Resolve', # loc
> >                 update => 'Comment',
> >             },
> >             'new -> rejected'  => {
> >                 label  => 'Reject', # loc
> >                 update => 'Respond',
> >             },
> >             'new -> deleted'   => {
> >                 label  => 'Delete', # loc
> >             },
> > 
> >             'open -> stalled'  => {
> >                 label  => 'Stall', # loc
> >                 update => 'Comment',
> >             },
> >             'open -> resolved' => {
> >                 label  => 'Resolve', # loc
> >                 update => 'Comment',
> >             },
> >             'open -> rejected' => {
> >                 label  => 'Reject', # loc
> >                 update => 'Respond',
> >             },
> > 
> >             'stalled -> open'  => {
> >                 label  => 'Open It', # loc
> >             },
> >             'resolved -> open' => {
> >                 label  => 'Re-open', # loc
> >                 update => 'Comment',
> >             },
> >             'rejected -> open' => {
> >                 label  => 'Re-open', # loc
> >                 update => 'Comment',
> >             },
> >             'deleted -> open'  => {
> >                 label  => 'Undelete', # loc
> >             },
> >         ],
> >     },
> > # don't change lifecyle of the approvals, they are not capable to deal with
> > # custom statuses
> >     approvals => {
> >         initial         => [ 'new' ],
> >         active          => [ 'open', 'stalled' ],
> >         inactive        => [ 'resolved', 'rejected', 'deleted' ],
> > 
> >         defaults => {
> >             on_create => 'new',
> >             on_merge => 'resolved',
> >         },
> > 
> >         transitions => {
> >             ''       => [qw(new open resolved)],
> > 
> >             # from   => [ to list ],
> >             new      => [qw(open stalled resolved rejected deleted)],
> >             open     => [qw(new stalled resolved rejected deleted)],
> >             stalled  => [qw(new open rejected resolved deleted)],
> >             resolved => [qw(new open stalled rejected deleted)],
> >             rejected => [qw(new open stalled resolved deleted)],
> >             deleted  => [qw(new open stalled rejected resolved)],
> >         },
> >         rights => {
> >             '* -> deleted'  => 'DeleteTicket',
> >             '* -> rejected' => 'ModifyTicket',
> >             '* -> *'        => 'ModifyTicket',
> >         },
> >         actions => [
> >             'new -> open'      => {
> >                 label  => 'Open It', # loc
> >                 update => 'Respond',
> >             },
> >             'new -> resolved'  => {
> >                 label  => 'Resolve', # loc
> >                 update => 'Comment',
> >             },
> >             'new -> rejected'  => {
> >                 label  => 'Reject', # loc
> >                 update => 'Respond',
> >             },
> >             'new -> deleted'   => {
> >                 label  => 'Delete', # loc
> >             },
> > 
> >             'open -> stalled'  => {
> >                 label  => 'Stall', # loc
> >                 update => 'Comment',
> >             },
> >             'open -> resolved' => {
> >                 label  => 'Resolve', # loc
> >                 update => 'Comment',
> >             },
> >             'open -> rejected' => {
> >                 label  => 'Reject', # loc
> >                 update => 'Respond',
> >             },
> > 
> >             'stalled -> open'  => {
> >                 label  => 'Open It', # loc
> >             },
> >             'resolved -> open' => {
> >                 label  => 'Re-open', # loc
> >                 update => 'Comment',
> >             },
> >             'rejected -> open' => {
> >                 label  => 'Re-open', # loc
> >                 update => 'Comment',
> >             },
> >             'deleted -> open'  => {
> >                 label  => 'Undelete', # loc
> >             },
> >         ],
> >     },
> > );
> > 
> > 
> > 
> > 
> > 
> > =head1 Administrative interface
> > 
> > =over 4
> > 
> > =item C<$ShowRTPortal>
> > 
> > RT can show administrators a feed of recent RT releases and other
> > related announcements and information from Best Practical on the top
> > level Configuration page.  This feature helps you stay up to date on
> > RT security announcements and version updates.
> > 
> > RT provides this feature using an "iframe" on C
> > which asks the administrator's browser to show an inline page from
> > Best Practical's website.
> > 
> > If you'd rather not make this feature available to your
> > administrators, set C<$ShowRTPortal> to a false value.
> > 
> > =cut
> > 
> > Set($ShowRTPortal, 1);
> > 
> > =item C<%AdminSearchResultFormat>
> > 
> > In the admin interface, format strings similar to tickets result
> > formats are used. Use C<%AdminSearchResultFormat> to define the format
> > strings used in the admin interface on a per-RT-class basis.
> > 
> > =cut
> > 
> > Set(%AdminSearchResultFormat,
> >     Queues =>
> >         q{'__id__/TITLE:#'}
> >         .q{,'__Name__/TITLE:Name'}
> >         .q{,__Description__,__Address__,__Priority__,__DefaultDueIn__,__Disabled__},
> > 
> >     Groups =>
> >         q{'__id__/TITLE:#'}
> >         .q{,'__Name__/TITLE:Name'}
> >         .q{,'__Description__'},
> > 
> >     Users =>
> >         q{'__id__/TITLE:#'}
> >         .q{,'__Name__/TITLE:Name'}
> >         .q{,__RealName__, __EmailAddress__},
> > 
> >     CustomFields =>
> >         q{'__id__/TITLE:#'}
> >         .q{,'__Name__/TITLE:Name'}
> >         .q{,__AppliedTo__, __FriendlyType__, __FriendlyPattern__},
> > 
> >     Scrips =>
> >         q{'__id__/TITLE:#'}
> >         .q{,'__Description__/TITLE:Description'}
> >         .q{,__Stage__, __Condition__, __Action__, __Template__},
> > 
> >     Templates =>
> >         q{'__id__/TITLE:#'}
> >         .q{,'__Name__/TITLE:Name'}
> >         .q{,'__Description__'},
> >     Classes =>
> >         q{ '__id__/TITLE:#'}
> >         .q{,'__Name__/TITLE:Name'}
> >         .q{,__Description__},
> > );
> > 
> > =back
> > 
> > 
> > 
> > 
> > =head1 Development options
> > 
> > =over 4
> > 
> > =item C<$DevelMode>
> > 
> > RT comes with a "Development mode" setting.  This setting, as a
> > convenience for developers, turns on several of development options
> > that you most likely don't want in production:
> > 
> > =over 4
> > 
> > =item *
> > 
> > Uses L to reload changed Perl modules on each
> > request.
> > 
> > =item *
> > 
> > Turns off Mason's C directive; this causes Mason to
> > reload template files which have been modified on disk.
> > 
> > =item *
> > 
> > Turns on Mason's HTML C; this renders compilation errors
> > to the browser, along with a full stack trace.  It is possible for
> > stack traces to reveal sensitive information such as passwords or
> > ticket content.
> > 
> > =item *
> > 
> > Turns off caching of callbacks; this enables additional callbacks to
> > be added while the server is running.
> > 
> > =back
> > 
> > =cut
> > 
> > Set($DevelMode, "0");
> > 
> > 
> > =item C<$RecordBaseClass>
> > 
> > What abstract base class should RT use for its records. You should
> > probably never change this.
> > 
> > Valid values are C or
> > C
> > 
> > =cut
> > 
> > Set($RecordBaseClass, "DBIx::SearchBuilder::Record::Cachable");
> > 
> > 
> > =item C<@MasonParameters>
> > 
> > C<@MasonParameters> is the list of parameters for the constructor of
> > HTML::Mason's Apache or CGI Handler.  This is normally only useful for
> > debugging, e.g. profiling individual components with:
> > 
> >     use MasonX::Profiler; # available on CPAN
> >     Set(@MasonParameters, (preamble => 'my $p = MasonX::Profiler->new($m, $r);'));
> > 
> > =cut
> > 
> > Set(@MasonParameters, ());
> > 
> > =item C<$StatementLog>
> > 
> > RT has rudimentary SQL statement logging support; simply set
> > C<$StatementLog> to be the level that you wish SQL statements to be
> > logged at.
> > 
> > Enabling this option will also expose the SQL Queries page in the
> > Configuration -> Tools menu for SuperUsers.
> > 
> > =cut
> > 
> > Set($StatementLog, undef);
> > 
> > =back
> > 
> > 
> > 
> > 
> > =head1 Deprecated options
> > 
> > =over 4
> > 
> > =item C<$LinkTransactionsRun1Scrip>
> > 
> > RT-3.4 backward compatibility setting. Add/Delete Link used to record
> > one transaction and run one scrip. Set this value to 1 if you want
> > only one of the link transactions to have scrips run.
> > 
> > =cut
> > 
> > Set($LinkTransactionsRun1Scrip, 0);
> > 
> > # The order in which the services defined in ExternalSettings
> > # should be used to authenticate users. User is authenticated
> > # if successfully confirmed by any service - no more services
> > # are checked.
> > Set($ExternalAuthPriority,  [   'My_LDAP',
> >                                 'My_MySQL',
> >                                 'My_SSO_Cookie'
> >                             ]
> > );
> > 
> > # The order in which the services defined in ExternalSettings
> > # should be used to get information about users. This includes
> > # RealName, Tel numbers etc, but also whether or not the user
> > # should be considered disabled. 
> > #
> > # Once user info is found, no more services are checked.
> > #
> > # You CANNOT use a SSO cookie for authentication.
> > Set($ExternalInfoPriority,  [   'My_MySQL',
> >                                 'My_LDAP'
> >                             ]
> > );
> > 
> > # If this is set to true, then the relevant packages will
> > # be loaded to use SSL/TLS connections. At the moment,
> > # this just means "use Net::SSLeay;"
> > Set($ExternalServiceUsesSSLorTLS,    0);
> > 
> > # If this is set to 1, then users should be autocreated by RT
> > # as internal users if they fail to authenticate from an
> > # external service.
> > Set($AutoCreateNonExternalUsers,    1);
> > 
> > # These are the full settings for each external service as a HashOfHashes
> > # Note that you may have as many external services as you wish. They will
> > # be checked in the order specified in the Priority directives above.
> > # e.g. 
> > #   Set(ExternalAuthPriority,['My_LDAP','My_MySQL','My_Oracle','SecondaryLDAP','Other-DB']);
> > #
> > Set($ExternalSettings,      {   
> >                                 # AN EXAMPLE LDAP SERVICE
> >                                 'My_LDAP'       =>  {   ## GENERIC SECTION
> >                                                         # The type of service (db/ldap/cookie) 
> >                                                         'type'                      =>  'ldap',
> >                                                         # The server hosting the service
> >                                                         'server'                    =>  'ldap01.example.com',
> >                                                         ## SERVICE-SPECIFIC SECTION
> >                                                         # If you can bind to your LDAP server anonymously you should 
> >                                                         # remove the user and pass config lines, otherwise specify them here:
> >                                                         # 
> >                                                         # The username RT should use to connect to the LDAP server 
> >                                                         #'user'                      =>  'uid=Dunphy,ou=People,cn=mlbam,cn=com',
> >                                                         # The password RT should use to connect to the LDAP server
> >                                                         #'pass'                    =>  'secret',
> >                                                         #
> >                                                         # The LDAP search base
> >                                                         'base'                      =>  'ou=People,dc=example,dc=com',
> >                                                         #
> >                                                         # ALL FILTERS MUST BE VALID LDAP FILTERS ENCASED IN PARENTHESES!
> >                                                         # YOU **MUST** SPECIFY A filter AND A d_filter!!
> >                                                         #
> >                                                         # The filter to use to match RT-Users
> >                                                         'filter'                    =>  '(objectclass=*)',
> >                                                         # A catch-all example filter: '(objectClass=*)'
> >                                                         #
> >                                                         # The filter that will only match disabled users
> >                                                         'd_filter'                  =>  '(objectClass=FooBarBaz)',
> >                                                         # A catch-none example d_filter: '(objectClass=FooBarBaz)'
> >                                                         #
> >                                                         # Should we try to use TLS to encrypt connections?
> >                                                         'tls'                       =>  0,
> >                                                         # SSL Version to provide to Net::SSLeay *if* using SSL
> >                                                         #'ssl_version'               =>  2,
> >                                                         # What other args should I pass to Net::LDAP->new($host, at args)?
> >                                                         'net_ldap_args'             => [    version =>  3   ],
> >                                                         # Does authentication depend on group membership? What group name?
> >                                                         #'group'                     =>  'RTUsers',
> >                                                         # What is the attribute for the group object that determines membership?
> >                                                         #'group_attr'                =>  'cn',
> >                                                         ## RT ATTRIBUTE MATCHING SECTION
> >                                                         # The list of RT attributes that uniquely identify a user
> > 							# This example shows what you *can* specify.. I recommend reducing this
> >                                                         # to just the Name and EmailAddress to save encountering problems later.
> >                                                         'attr_match_list'           => [    'Name',
> >                                                                                             'EmailAddress', 
> >                                                                                         ],
> >                                                         # The mapping of RT attributes on to LDAP attributes
> >                                                         'attr_map'                  =>  {   'Name' => 'uid',
> >                                                                                             'EmailAddress' => 'mail',
> >                                                                                         }
> >                                                     },
> >                                 # An example SSO cookie service
> >                                 'My_SSO_Cookie'  => {   # # The type of service (db/ldap/cookie)
> >                                                         'type'                      =>  'cookie',
> >                                                         # The name of the cookie to be used
> >                                                         'name'                      =>  'loginCookieValue',
> >                                                         # The users table
> >                                                         'u_table'                   =>  'users',
> >                                                         # The username field in the users table
> >                                                         'u_field'                   =>  'username',
> >                                                         # The field in the users table that uniquely identifies a user
> >                                                         # and also exists in the cookies table
> >                                                         'u_match_key'               =>  'userID',
> >                                                         # The cookies table
> >                                                         'c_table'                   =>  'login_cookie',
> >                                                         # The field that stores cookie values
> >                                                         'c_field'                   =>  'loginCookieValue',
> >                                                         # The field in the cookies table that uniquely identifies a user
> >                                                         # and also exists in the users table
> >                                                         'c_match_key'               =>  'loginCookieUserID',
> >                                                         # The DB service in this configuration to use to lookup the cookie information
> >                                                         'db_service_name'           =>  'My_MySQL'
> >                                                     }
> >                                 }
> > );
> > 
> > 1;
> > 
> > 
> > Set($LogToFile,      'debug');
> > Set($LogToFileNamed, 'rt.log');
> > Set($LogDir,         '/usr/local/rt4/var/log');
> > 
> > 1;
> > 
> > 
> > 
> > ---------
> > 
> > 
> > thank you very much for any advice you may have!
> > 
> > tim
> > 
> > 
> > 
> >  
> > --------
> > RT Training Sessions (http://bestpractical.com/services/training.html)
> > * Boston  March 5 & 6, 2012
> 
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston ? March 5 & 6, 2012
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston  March 5 & 6, 2012
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Thu Feb  2 12:15:33 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Thu, 2 Feb 2012 12:15:33 -0500
Subject: [rt-users] Problem configuring AD integration
In-Reply-To: <1510549EAAD18048862A0BB9D645881234743B@WISEXC02.wiseplatforms.local>
References: <1510549EAAD18048862A0BB9D645881234743B@WISEXC02.wiseplatforms.local>
Message-ID: <20120202171533.GK5178@jibsheet.com>

On Thu, Feb 02, 2012 at 04:21:48PM +0000, Bruno Martins wrote:
> Can't call method "as_string" on an undefined value at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm line 304.
> 
> I've followed instructions at http://requesttracker.wikia.com/wiki/ExternalAuth to set this up.

I suggest the docs in the config and with the module over anything on
the wiki.

> Set($ExternalAuthPriority,  [   'My_LDAP',
>                                 'My_MySQL',
>                                 'My_SSO_Cookie'
>                             ]
> );
> 
> Set($ExternalInfoPriority,  [   'My_MySQL',
>                                 'My_LDAP'
>                             ]
> );

Why do you have all of these turned on? You've only configured
My_LDAP. Telling RT to look into a misconfigured My_MySQL will only
cause other errors.

The config as shipped is an example and you should remove the pieces
you aren't using.

>                                 'My_LDAP'       =>  {   ## GENERIC SECTION
>                                                         # The type of service (db/ldap/cookie) 
>                                                         'type'                      =>  'ldap',
>                                                         # The server hosting the service
>                                                         'server'                    =>  'jupiter.galileu-f.galileu.pt',
>                                                         ## SERVICE-SPECIFIC SECTION
>                                                         # If you can bind to your LDAP server anonymously you should 
>                                                         # remove the user and pass config lines, otherwise specify them here:
>                                                         # 
>                                                         # The username RT should use to connect to the LDAP server 
>                                                         'user'                      =>  'ldap_domainadmin',
>                                                         # The password RT should use to connect to the LDAP server
>                                                         'pass'                    =>  'ldap_password',
>                                                         #
>                                                         # The LDAP search base
>                                                         'base'                      =>  'dc=galileu-f,dc=galileu,dc=pt',
>                                                         #
>                                                         # ALL FILTERS MUST BE VALID LDAP FILTERS ENCASED IN PARENTHESES!

See this doc ^

>                                                         # YOU **MUST** SPECIFY A filter AND A d_filter!!
>                                                         #
>                                                         # The filter to use to match RT-Users
>                                                         'filter'                    =>  'objectClass=*',

You're missing parens on this filter which I believe is causing your
problem.

>                                                         # A catch-all example filter: '(objectClass=*)'
>                                                         #
>                                                         # The filter that will only match disabled users
>                                                         'd_filter'                  =>  'UserAccountControl:1.2.840.113556.1.4.803:=2',
>                                                         # A catch-none example d_filter: '(objectClass=FooBarBaz)'
>                                                         #
>                                                         # Should we try to use TLS to encrypt connections?
>                                                         'tls'                       =>  0,
>                                                         # SSL Version to provide to Net::SSLeay *if* using SSL
>                                                         'ssl_version'               =>  3,
>                                                         # What other args should I pass to Net::LDAP->new($host, at args)?
>                                                         'net_ldap_args'             => [    version =>  3 , port => 3268  ],
>                                                         # Does authentication depend on group membership? What group name?
>                                                         #'group'                     =>  'GROUP_NAME',
>                                                         # What is the attribute for the group object that determines membership?
>                                                         #'group_attr'                =>  'GROUP_ATTR',
>                                                         ## RT ATTRIBUTE MATCHING SECTION
>                                                         # The list of RT attributes that uniquely identify a user
> 							# This example shows what you *can* specify.. I recommend reducing this
>                                                         # to just the Name and EmailAddress to save encountering problems later.
>                                                         'attr_match_list'           => [    'Name',
>                                                                                             'EmailAddress', 
>                                                                                             'RealName',
>                                                                                             'WorkPhone', 
>                                                                                             'Address2'
>                                                                                         ],

You also want to read the doc above attr_match_list.  As configured, you
cannot have to Bob Smiths in your RT.

-kevin

>                                                         # The mapping of RT attributes on to LDAP attributes
>                                                         'attr_map'                  =>  {   'Name' => 'sAMAccountName',
>                                                                                             'EmailAddress' => 'mail',
>                                                                                             'Organization' => 'physicalDeliveryOfficeName',
>                                                                                             'RealName' => 'cn',
>                                                                                             'ExternalAuthId' => 'sAMAccountName',
>                                                                                             'Gecos' => 'sAMAccountName',
>                                                                                             'WorkPhone' => 'telephoneNumber',
>                                                                                             'Address1' => 'streetAddress',
>                                                                                             'City' => 'l',
>                                                                                             'State' => 'st',
>                                                                                             'Zip' => 'postalCode',
>                                                                                             'Country' => 'co'
>                                                                                         }
>                                                     },
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Thu Feb  2 12:17:16 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Thu, 2 Feb 2012 12:17:16 -0500
Subject: [rt-users] External Auth using Active Directory 2008
In-Reply-To: <84E70F84D007E14BBD13A402719AF27C15833CF1@SN2PRD0102MB153.prod.exchangelabs.com>
References: <84E70F84D007E14BBD13A402719AF27C15832CC1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120201233243.GF5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C15833CF1@SN2PRD0102MB153.prod.exchangelabs.com>
Message-ID: <20120202171716.GL5178@jibsheet.com>

On Thu, Feb 02, 2012 at 04:16:53PM +0000, Howell, Van wrote:
> I do not have Debugging turned on. I am going to need some help turning it on since this is new to me.
> 
> Here are some errors from /var/log/messages...
> 
> This is a failed attempt...
> 
> Feb  1 16:02:25 localhost RT: My_LDAP AUTH FAILED mary.servantez (can't bind: LDAP_INVALID_CREDENTIALS 49 ) (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:82)
> Feb  1 16:02:25 localhost RT: FAILED LOGIN for mary.servantez from 10.1.41.95 (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
> 
> Here is a successful attemt....
> 
> Feb  2 10:14:02 localhost RT: RT::Authen::ExternalAuth::LDAP::GetAuth External Auth OK ( My_LDAP ): test.account (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:139)
> Feb  2 10:14:02 localhost RT: Couldn't enable user 28 (/opt/rt4/sbin/../lib/RT/User.pm:1066)
> Feb  2 10:14:02 localhost RT: User marked as ENABLED ( test.account ) per External Service (, ) (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:274)
> Feb  2 10:14:02 localhost RT: RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Address1: , City: , Country: , EmailAddress: test.account at LCU.EDU, ExternalAuthId: test.account, Gecos: test.account, Name: test.account, Organization: , RealName: Test Account, State: , WorkPhone: , Zip:  (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:536)
> Feb  2 10:14:02 localhost RT: Successful login for test.account from 10.1.5.9 (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:219)

Since you're seeing these in /var/log/messages I assume you're using
the syslog configuration.

You want to read about LogToSyslog in etc/RT_Config.pm then copy that
setting to RT_SiteConfig.pm and change it to debug.

Restart RT and try the failed login again.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From jnarins at seniorbridge.com  Thu Feb  2 13:25:13 2012
From: jnarins at seniorbridge.com (Josh Narins)
Date: Thu, 2 Feb 2012 13:25:13 -0500
Subject: [rt-users] Two questions
In-Reply-To: <20120201190535.GA95897@jibsheet.com>
References: 
	<20120131173512.GX95897@jibsheet.com>
	
	<20120201190535.GA95897@jibsheet.com>
Message-ID: 

> On Tue, Jan 31, 2012 at 12:54:04PM -0500, Josh Narins wrote:
> > > On Tue, Jan 31, 2012 at 09:28:00AM -0500, Josh Narins wrote:
> > > >    I got partway along writing a Mail Plugin for RT3.8, but,
> > > somewhere along the way, I lost it.
> > > >
> > > >    Can anyone point me to any documentation on them? My goal is
> to
> > > remove the endlessly
> > > >    duplicating newlines of the quoted text on each reply to our
> > > tickets and to remove the
> > > >    signatures.
> > >
> > > There is actually code in 3.8.10 or later to work around Outlook's
> > > bugs with newlines.
> >
> > I'm running 4.0.2 and still have the problem.
>
> Please followup with some sample data to rt-bugs?  Thanks

Sure. What data do you actually want? I'm happy to run any sort of
query. I found a ticket with no business-sensitive information that
has the problem.


Josh Narins
Director of Application Development
SeniorBridge

845 Third Ave
7th Floor
New York, NY 10022
Tel: (212) 994-6194
Mobile: (917) 488-6248
Fax: (212) 994-4260
jnarins at seniorbridge.com

SeniorBridge
Managing Complex Chronic Care
http://www.seniorbridge.com



SeniorBridge Statement of Confidentiality: The contents of this email message are intended for the exclusive use of the addressee(s) and may contain confidential or privileged information. Any dissemination, distribution or copying of this email by an unintended or mistaken recipient is strictly prohibited. In said event, kindly reply to the sender and destroy all entries of this message and any attachments from your system. Thank you.


From van.howell at lcu.edu  Thu Feb  2 13:21:20 2012
From: van.howell at lcu.edu (Howell, Van)
Date: Thu, 2 Feb 2012 18:21:20 +0000
Subject: [rt-users] External Auth using Active Directory 2008
In-Reply-To: <20120202171716.GL5178@jibsheet.com>
References: <84E70F84D007E14BBD13A402719AF27C15832CC1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120201233243.GF5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C15833CF1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120202171716.GL5178@jibsheet.com>
Message-ID: <84E70F84D007E14BBD13A402719AF27C1583405E@SN2PRD0102MB153.prod.exchangelabs.com>

I added Set($LogToSyslog, "debug"); to my RT_SiteConfig.pm file
I don't seem to be getting an more logging.
I restarted the httpd service, didn't see any more logging so I restarted the server.

This is the entire tail of the messages log....

[root at OpenNMS etc]# tail /var/log/messages
Feb  2 11:56:45 localhost abrtd: Dump directory is a duplicate of /var/spool/abrt/ccpp-2012-02-01-14:08:36-18683
Feb  2 11:56:45 localhost abrtd: Deleting dump directory ccpp-2012-02-02-11:54:56-2567 (dup of ccpp-2012-02-01-14:08:36-18683), sending dbus signal
Feb  2 12:00:42 localhost RT: The actual HTTP_HOST (192.168.1.200) does NOT match the configured WebDomain (lcu.edu). Perhaps you should Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, otherwise your internal links may be broken. (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
Feb  2 12:05:43 localhost RT: The actual HTTP_HOST (192.168.1.200) does NOT match the configured WebDomain (lcu.edu). Perhaps you should Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, otherwise your internal links may be broken. (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
Feb  2 12:10:44 localhost RT: The actual HTTP_HOST (192.168.1.200) does NOT match the configured WebDomain (helpdesk.lcu.edu). Perhaps you should Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, otherwise your internal links may be broken. (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
Feb  2 12:14:00 localhost RT: My_LDAP AUTH FAILED: van.howell (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:127)
Feb  2 12:14:00 localhost RT: FAILED LOGIN for van.howell from 10.1.5.9 (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
Feb  2 12:15:45 localhost RT: The actual HTTP_HOST (192.168.1.200) does NOT match the configured WebDomain (helpdesk.lcu.edu). Perhaps you should Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, otherwise your internal links may be broken. (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
Feb  2 12:16:16 localhost RT: My_LDAP AUTH FAILED: van.howell (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:127)
Feb  2 12:16:16 localhost RT: FAILED LOGIN for van.howell from 10.1.5.9 (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)

Thanks for helping with this.

Van Howell
System Administrator
Lubbock Christian University


-----Original Message-----
From: rt-users-bounces at lists.bestpractical.com [mailto:rt-users-bounces at lists.bestpractical.com] On Behalf Of Kevin Falcone
Sent: Thursday, February 02, 2012 11:17 AM
To: rt-users at lists.bestpractical.com
Subject: Re: [rt-users] External Auth using Active Directory 2008

On Thu, Feb 02, 2012 at 04:16:53PM +0000, Howell, Van wrote:
> I do not have Debugging turned on. I am going to need some help turning it on since this is new to me.
> 
> Here are some errors from /var/log/messages...
> 
> This is a failed attempt...
> 
> Feb  1 16:02:25 localhost RT: My_LDAP AUTH FAILED mary.servantez 
> (can't bind: LDAP_INVALID_CREDENTIALS 49 ) 
> (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> uth/LDAP.pm:82) Feb  1 16:02:25 localhost RT: FAILED LOGIN for 
> mary.servantez from 10.1.41.95 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
> 
> Here is a successful attemt....
> 
> Feb  2 10:14:02 localhost RT: RT::Authen::ExternalAuth::LDAP::GetAuth 
> External Auth OK ( My_LDAP ): test.account 
> (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> uth/LDAP.pm:139) Feb  2 10:14:02 localhost RT: Couldn't enable user 28 
> (/opt/rt4/sbin/../lib/RT/User.pm:1066)
> Feb  2 10:14:02 localhost RT: User marked as ENABLED ( test.account ) 
> per External Service (, ) 
> (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> uth.pm:274) Feb  2 10:14:02 localhost RT: 
> RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Address1: , 
> City: , Country: , EmailAddress: test.account at LCU.EDU, ExternalAuthId: 
> test.account, Gecos: test.account, Name: test.account, Organization: , 
> RealName: Test Account, State: , WorkPhone: , Zip:  
> (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> uth.pm:536) Feb  2 10:14:02 localhost RT: Successful login for 
> test.account from 10.1.5.9 
> (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> uth.pm:219)

Since you're seeing these in /var/log/messages I assume you're using the syslog configuration.

You want to read about LogToSyslog in etc/RT_Config.pm then copy that setting to RT_SiteConfig.pm and change it to debug.

Restart RT and try the failed login again.

-kevin



From bluethundr at jokefire.com  Thu Feb  2 14:15:28 2012
From: bluethundr at jokefire.com (Tim Dunphy)
Date: Thu, 02 Feb 2012 19:15:28 -0000 (UTC)
Subject: [rt-users] RT Bounce messages
In-Reply-To: <20120202171045.GJ5178@jibsheet.com>
Message-ID: 

>In this case, it means RT will be comparing against all the Queue
>address and your Correspond/Comment address.  Is it possible that RT
>is sending to an email address that feeds back into RT via an
>/etc/aliases file or something similar?

Interesting question. I did try the approach of using the aliases file in order to retrieve emails into the RT database, but I was having a little trouble with that. So, while it's a bit kludgy, I ultimately chose to achive this through pop and that's been working quite well. However I never got around to removing the aliases entry.


>From my aliases file:


#rt: "|/usr/local/rt4/bin/rt-mailgate --queue ops --action correspond --url http://rt.mm3.mlbam.com/helpdesk"

#rt-comment: "|/usr/local/rt4/bin/rt-mailgate --queue ops --action comment --url http://rt.mm3.mlbam.com/helpdesk"

ops: "|/usr/local/rt4/bin/rt-mailgate --queue ops --action correspond --url http://rt.mm3.mlbam.com/helpdesk"
ops-comment: "|/usr/local/rt4/bin/rt-mailgate --queue ops --action comment --url http://rt.mm3.mlbam.com/helpdesk"


I notice that I commented out the first two rt entries but left a couple of entries for queues that I had built in there.


I'll try removing those and see if that resolves the issue.


>It'd be useful to see that diff, more than the SiteCOnfig at this
>point, and you should consider cleaning it up so you'll know in the
>future what options you've overridden.


OK here we go... this is the diff of the RT_ConfigFile.pm and the RT_SiteConfig.pm file:


------------------------------------------------------------------

1c1
< #
---
> 
38c38
< Set($rtname, "example.com");
---
> Set($rtname, "mlb.com");
50c50
< Set($Organization, "example.com");
---
> Set($Organization, "mlb.com");
65c65
< Set($CorrespondAddress, '');
---
> Set($CorrespondAddress, 'rt at mm3.mlbam.com');
67c67
< Set($CommentAddress, '');
---
> Set($CommentAddress, 'rt-comment at mm3.mlbam.com');
76c76
< Set($WebDomain, "localhost");
---
> Set($WebDomain, "rt.mm3.mlbam.com");
103c103
< Set($WebPath, "");
---
> Set($WebPath, "/helpdesk");
128c128
< Set(@Plugins, ());
---
> Set(@Plugins, qw(RT::Authen::ExternalAuth));
316c316
< Set($OwnerEmail, 'root');
---
> Set($OwnerEmail, 'tim.dunphy at mlb.com');
458a459,460
> Set($SendmailPath , "/usr/local/rt4/bin/msmtp_wrapper");
> 
797a800
> #Set($WebDefaultStylesheet, "ballard");
807c810
< # Set($DefaultQueue, "General");
---
> Set($DefaultQueue, "Ops");
902c905,906
< Set($UsernameFormat, "concise");
---
> #Set($UsernameFormat, "concise");
> Set($UsernameFormat, "verbose");
2558c2562,2654
< =item C<$ResolveDefaultUpdateType>
---
> # The order in which the services defined in ExternalSettings
> # should be used to authenticate users. User is authenticated
> # if successfully confirmed by any service - no more services
> # are checked.
> Set($ExternalAuthPriority,  [   'My_LDAP',
>                                 'My_MySQL',
>                                 'My_SSO_Cookie'
>                             ]
> );
> 
> # The order in which the services defined in ExternalSettings
> # should be used to get information about users. This includes
> # RealName, Tel numbers etc, but also whether or not the user
> # should be considered disabled. 
> #
> # Once user info is found, no more services are checked.
> #
> # You CANNOT use a SSO cookie for authentication.
> Set($ExternalInfoPriority,  [   'My_MySQL',
>                                 'My_LDAP'
>                             ]
> );
> 
> # If this is set to true, then the relevant packages will
> # be loaded to use SSL/TLS connections. At the moment,
> # this just means "use Net::SSLeay;"
> Set($ExternalServiceUsesSSLorTLS,    0);
> 
> # If this is set to 1, then users should be autocreated by RT
> # as internal users if they fail to authenticate from an
> # external service.
> Set($AutoCreateNonExternalUsers,    1);
> 
> # These are the full settings for each external service as a HashOfHashes
> # Note that you may have as many external services as you wish. They will
> # be checked in the order specified in the Priority directives above.
> # e.g. 
> #   Set(ExternalAuthPriority,['My_LDAP']);
> #
> Set($ExternalSettings,      {   
>                                 # AN EXAMPLE LDAP SERVICE
>                                 'My_LDAP'       =>  {   ## GENERIC SECTION
>                                                         # The type of service (db/ldap/cookie) 
>                                                         'type'                      =>  'ldap',
>                                                         # The server hosting the service
>                                                         'server'                    =>  'ldap01.mlbam.com',
>                                                         ## SERVICE-SPECIFIC SECTION
>                                                         # If you can bind to your LDAP server anonymously you should 
>                                                         # remove the user and pass config lines, otherwise specify them here:
>                                                         # 
>                                                         # The username RT should use to connect to the LDAP server 
>                                                         #'user'                      =>  'uid=Dunphy,ou=People,cn=mlbam,cn=com',
>                                                         # The password RT should use to connect to the LDAP server
>                                                         #'pass'                    =>  'WR=78zu!uX',
>                                                         #
>                                                         # The LDAP search base
>                                                         'base'                      =>  'ou=People,dc=mlbam,dc=com',
>                                                         #
>                                                         # ALL FILTERS MUST BE VALID LDAP FILTERS ENCASED IN PARENTHESES!
>                                                         # YOU **MUST** SPECIFY A filter AND A d_filter!!
>                                                         #
>                                                         # The filter to use to match RT-Users
>                                                         'filter'                    =>  '(objectclass=*)',
>                                                         # A catch-all example filter: '(objectClass=*)'
>                                                         #
>                                                         # The filter that will only match disabled users
>                                                         'd_filter'                  =>  '(objectClass=FooBarBaz)',
>                                                         # A catch-none example d_filter: '(objectClass=FooBarBaz)'
>                                                         #
>                                                         # Should we try to use TLS to encrypt connections?
>                                                         'tls'                       =>  0,
>                                                         # SSL Version to provide to Net::SSLeay *if* using SSL
>                                                         #'ssl_version'               =>  2,
>                                                         # What other args should I pass to Net::LDAP->new($host, at args)?
>                                                         'net_ldap_args'             => [    version =>  3   ],
>                                                         # Does authentication depend on group membership? What group name?
>                                                         #'group'                     =>  'RTUsers',
>                                                         # What is the attribute for the group object that determines membership?
>                                                         #'group_attr'                =>  'cn',
>                                                         ## RT ATTRIBUTE MATCHING SECTION
>                                                         # The list of RT attributes that uniquely identify a user
> 							# This example shows what you *can* specify.. I recommend reducing this
>                                                         # to just the Name and EmailAddress to save encountering problems later.
>                                                         'attr_match_list'           => [    'Name',
>                                                                                             'EmailAddress', 
>                                                                                         ],
>                                                         # The mapping of RT attributes on to LDAP attributes
>                                                         'attr_map'                  =>  {   'Name' => 'uid',
>                                                                                             'EmailAddress' => 'mail',
>                                                                                         }
>                                                     },
>                                 }
> );
2560,2561c2656
< This option has been deprecated.  You can configure this site-wide
< with L (see L).
---
> 1;
2563c2658,2661
< =cut
---
> 
> Set($LogToFile,      'debug');
> Set($LogToFileNamed, 'rt.log');
> Set($LogDir,         '/usr/local/rt4/var/log');



-------------------------------------------------

Thanks once again for your help!
tim



----- Original Message -----
From: "Kevin Falcone" 
To: rt-users at lists.bestpractical.com
Sent: Thursday, February 2, 2012 12:10:45 PM
Subject: Re: [rt-users] RT Bounce messages

On Thu, Feb 02, 2012 at 04:05:53PM -0000, Tim Dunphy wrote:
> > This looks like an RT_Config.pm file.  Have you been editing
> > RT_Config.pm directly or did you copy all of RT_Config.pm to
> > RT_SiteConfig.pm?  Neither of those are recommended and it makes
> > following what is going on really hard.
> 
> I'm sorry but I don't recall doing this. However looking at a diff of the two files it certainly seems possible. 

It'd be useful to see that diff, more than the SiteCOnfig at this
point, and you should consider cleaning it up so you'll know in the
future what options you've overridden.

> > Usually this means RT was configured to send mail back into itself and
> > something has a X-RT-Loop-Prevention header.  Often this is a
> > misconfigured Template or a too-broad RTAddressRegexp setting.
> 
> Here's how my RTAddressRegexp is set - 
> 
> Set($RTAddressRegexp, undef);

In this case, it means RT will be comparing against all the Queue
address and your Correspond/Comment address.  Is it possible that RT
is sending to an email address that feeds back into RT via an
/etc/aliases file or something similar?

-kevin

> Well I don't recall copying the RT_Config.pm to RT_SiteConfig. 
> 
> However one thing that I can say is that I remember that I started seeing these bounce messages right about the time that I tried including an LDAP ExternalAuth method in the RT_SiteConfig.pm file.
> 
> # These are the full settings for each external service as a HashOfHashes
> # Note that you may have as many external services as you wish. They will
> # be checked in the order specified in the Priority directives above.
> # e.g. 
> #   Set(ExternalAuthPriority,['My_LDAP','My_MySQL','My_Oracle','SecondaryLDAP','Other-DB']);
> #
> Set($ExternalSettings,      {   
>                                 # AN EXAMPLE LDAP SERVICE
>                                 'My_LDAP'       =>  {   ## GENERIC SECTION
>                                                         # The type of service (db/ldap/cookie) 
>                                                         'type'                      =>  'ldap',
>                                                         # The server hosting the service
>                                                         'server'                    =>  'ldap01.mlbam.com',
>                                                         ## SERVICE-SPECIFIC SECTION
>                                                         # If you can bind to your LDAP server anonymously you should 
>                                                         # remove the user and pass config lines, otherwise specify them here:
>                                                         # 
>                                                         # The username RT should use to connect to the LDAP server 
>                                                         #'user'                      =>  'uid=Dunphy,ou=People,cn=mlbam,cn=com',
>                                                         # The password RT should use to connect to the LDAP server
>                                                         #'pass'                    =>  'WR=78zu!uX',
>                                                         #
>                                                         # The LDAP search base
>                                                         'base'                      =>  'ou=People,dc=mlbam,dc=com',
>                                                         #
>                                                         # ALL FILTERS MUST BE VALID LDAP FILTERS ENCASED IN PARENTHESES!
>                                                         # YOU **MUST** SPECIFY A filter AND A d_filter!!
>                                                         #
>                                                         # The filter to use to match RT-Users
>                                                         'filter'                    =>  '(objectclass=*)',
>                                                         # A catch-all example filter: '(objectClass=*)'
>                                                         #
>                                                         # The filter that will only match disabled users
>                                                         'd_filter'                  =>  '(objectClass=FooBarBaz)',
>                                                         # A catch-none example d_filter: '(objectClass=FooBarBaz)'
>                                                         #
>                                                         # Should we try to use TLS to encrypt connections?
>                                                         'tls'                       =>  0,
>                                                         # SSL Version to provide to Net::SSLeay *if* using SSL
>                                                         #'ssl_version'               =>  2,
>                                                         # What other args should I pass to Net::LDAP->new($host, at args)?
>                                                         'net_ldap_args'             => [    version =>  3   ],
>                                                         # Does authentication depend on group membership? What group name?
>                                                         #'group'                     =>  'RTUsers',
>                                                         # What is the attribute for the group object that determines membership?
>                                                         #'group_attr'                =>  'cn',
>                                                         ## RT ATTRIBUTE MATCHING SECTION
>                                                         # The list of RT attributes that uniquely identify a user
>                                                         # This example shows what you *can* specify.. I recommend reducing this
>                                                         # to just the Name and EmailAddress to save encountering problems later.
>                                                         'attr_match_list'           => [    'Name',
>                                                                                             'EmailAddress', 
>                                                                                         ],
>                                                         # The mapping of RT attributes on to LDAP attributes
>                                                         'attr_map'                  =>  {   'Name' => 'uid',
>                                                                                             'EmailAddress' => 'mail',
>                                                                                         }
>                                                     },
>                                 # An example SSO cookie service
>                                 'My_SSO_Cookie'  => {   # # The type of service (db/ldap/cookie)
>                                                         'type'                      =>  'cookie',
>                                                         # The name of the cookie to be used
>                                                         'name'                      =>  'loginCookieValue',
>                                                         # The users table
>                                                         'u_table'                   =>  'users',
>                                                         # The username field in the users table
>                                                         'u_field'                   =>  'username',
>                                                         # The field in the users table that uniquely identifies a user
>                                                         # and also exists in the cookies table
>                                                         'u_match_key'               =>  'userID',
>                                                         # The cookies table
>                                                         'c_table'                   =>  'login_cookie',
>                                                         # The field that stores cookie values
>                                                         'c_field'                   =>  'loginCookieValue',
>                                                         # The field in the cookies table that uniquely identifies a user
>                                                         # and also exists in the users table
>                                                         'c_match_key'               =>  'loginCookieUserID',
>                                                         # The DB service in this configuration to use to lookup the cookie information
>                                                         'db_service_name'           =>  'My_MySQL'
>                                                     }
>                                 }
> );
> 
> 1;
> 
> 
> 
> I wonder if this section could be part of the problem I'm having...
> 
> 
> thanks
> tim
> 
> 
> > ------------------------------------
> > 
> > 
> > 
> > # RT was configured with:
> > #
> > #   $ ./configure --enable-graphviz --enable-gd --enable-gpg --with-db-host=localhost --with-db-rt-host=localhost --with-db-dba=admin --with-db-rt-user=admin --with-db-rt-pass=Duk30fZh0u --with-web-user=apache --with-web-group=apache --with-apachectl /usr/sbin/apachectl --localstatedir=/var/rt4 --sysconfdir=/etc/rt4 --prefix=/usr/local/rt4 --exec-prefix=/usr/local/sbin
> > #
> > 
> > package RT;
> > 
> > #############################  WARNING  #############################
> > #                                                                   #
> > #                     NEVER EDIT RT_Config.pm !                     #
> > #                                                                   #
> > #         Instead, copy any sections you want to change to          #
> > #         RT_SiteConfig.pm and edit them there.  Otherwise,         #
> > #         your changes will be lost when you upgrade RT.            #
> > #                                                                   #
> > #############################  WARNING  #############################
> > 
> > =head1 NAME
> > 
> > RT::Config
> > 
> > =head1 Base configuration
> > 
> > =over 4
> > 
> > =item C<$rtname>
> > 
> > C<$rtname> is the string that RT will look for in mail messages to
> > figure out what ticket a new piece of mail belongs to.
> > 
> > Your domain name is recommended, so as not to pollute the namespace.
> > Once you start using a given tag, you should probably never change it;
> > otherwise, mail for existing tickets won't get put in the right place.
> > 
> > =cut
> > 
> > Set($rtname, "mlb.com");
> > 
> > =item C<$Organization>
> > 
> > You should set this to your organization's DNS domain. For example,
> > I or I. It is used by the linking
> > interface to guarantee that ticket URIs are unique and easy to
> > construct.  Changing it after you have created tickets in the system
> > will B all existing ticket links!
> > 
> > =cut
> > 
> > Set($Organization, "mlb.com");
> > 
> > =item C<$CorrespondAddress>, C<$CommentAddress>
> > 
> > RT is designed such that any mail which already has a ticket-id
> > associated with it will get to the right place automatically.
> > 
> > C<$CorrespondAddress> and C<$CommentAddress> are the default addresses
> > that will be listed in From: and Reply-To: headers of correspondence
> > and comment mail tracked by RT, unless overridden by a queue-specific
> > address.  They should be set to email addresses which have been
> > configured as aliases for F.
> > 
> > =cut
> > 
> > Set($CorrespondAddress, 'rt at mm3.mlbam.com');
> > 
> > Set($CommentAddress, 'rt-comment at mm3.mlbam.com');
> > 
> > =item C<$WebDomain>
> > 
> > Domain name of the RT server, e.g. 'www.example.com'. It should not
> > contain anything except the server name.
> > 
> > =cut
> > 
> > Set($WebDomain, "rt.mm3.mlbam.com");
> > 
> > =item C<$WebPort>
> > 
> > If we're running as a superuser, run on port 80.  Otherwise, pick a
> > high port for this user.
> > 
> > 443 is default port for https protocol.
> > 
> > =cut
> > 
> > Set($WebPort, 80);# + ($< * 7274) % 32766 + ($< && 1024));
> > 
> > =item C<$WebPath>
> > 
> > If you're putting the web UI somewhere other than at the root of your
> > server, you should set C<$WebPath> to the path you'll be serving RT
> > at.
> > 
> > C<$WebPath> requires a leading / but no trailing /, or it can be
> > blank.
> > 
> > In most cases, you should leave C<$WebPath> set to "" (an empty
> > value).
> > 
> > =cut
> > 
> > Set($WebPath, "/helpdesk");
> > 
> > =item C<$Timezone>
> > 
> > C<$Timezone> is the default timezone, used to convert times entered by
> > users into GMT, as they are stored in the database, and back again;
> > users can override this.  It should be set to a timezone recognized by
> > your server.
> > 
> > =cut
> > 
> > Set($Timezone, "US/Eastern");
> > 
> > =item C<@Plugins>
> > 
> > Set C<@Plugins> to a list of external RT plugins that should be
> > enabled (those plugins have to be previously downloaded and
> > installed).
> > 
> > Example:
> > 
> > C
> > 
> > =cut
> > 
> > Set(@Plugins, qw(RT::Authen::ExternalAuth));
> > 
> > =back
> > 
> > 
> > 
> > 
> > =head1 Database connection
> > 
> > =over 4
> > 
> > =item C<$DatabaseType>
> > 
> > Database driver being used; case matters.  Valid types are "mysql",
> > "Oracle" and "Pg".
> > 
> > =cut
> > 
> > Set($DatabaseType, "mysql");
> > 
> > =item C<$DatabaseHost>, C<$DatabaseRTHost>
> > 
> > The domain name of your database server.  If you're running MySQL and
> > on localhost, leave it blank for enhanced performance.
> > 
> > C is the fully-qualified hostname of your RT server,
> > for use in granting ACL rights on MySQL.
> > 
> > =cut
> > 
> > Set($DatabaseHost,   "localhost");
> > Set($DatabaseRTHost, "localhost");
> > 
> > =item C<$DatabasePort>
> > 
> > The port that your database server is running on.  Ignored unless it's
> > a positive integer. It's usually safe to leave this blank; RT will
> > choose the correct default.
> > 
> > =cut
> > 
> > Set($DatabasePort, "");
> > 
> > =item C<$DatabaseUser>
> > 
> > The name of the user to connect to the database as.
> > 
> > =cut
> > 
> > Set($DatabaseUser, "admin");
> > 
> > =item C<$DatabasePassword>
> > 
> > The password the C<$DatabaseUser> should use to access the database.
> > 
> > =cut
> > 
> > Set($DatabasePassword, q{Duk30fZh0u});
> > 
> > =item C<$DatabaseName>
> > 
> > The name of the RT database on your database server. For Oracle, the
> > SID and database objects are created in C<$DatabaseUser>'s schema.
> > 
> > =cut
> > 
> > Set($DatabaseName, q{rt4});
> > 
> > =item C<$DatabaseRequireSSL>
> > 
> > If you're using PostgreSQL and have compiled in SSL support, set
> > C<$DatabaseRequireSSL> to 1 to turn on SSL communication with the
> > database.
> > 
> > =cut
> > 
> > Set($DatabaseRequireSSL, undef);
> > 
> > =back
> > 
> > 
> > 
> > 
> > =head1 Logging
> > 
> > The default is to log anything except debugging information to syslog.
> > Check the L POD for information about how to get things
> > by syslog, mail or anything else, get debugging info in the log, etc.
> > 
> > It might generally make sense to send error and higher by email to
> > some administrator.  If you do this, be careful that this email isn't
> > sent to this RT instance.  Mail loops will generate a critical log
> > message.
> > 
> > =over 4
> > 
> > =item C<$LogToSyslog>, C<$LogToScreen>
> > 
> > The minimum level error that will be logged to the specific device.
> > From lowest to highest priority, the levels are:
> > 
> >     debug info notice warning error critical alert emergency
> > 
> > =cut
> > 
> > Set($LogToSyslog, "info");
> > Set($LogToScreen, "info");
> > 
> > =item C<$LogToFile>, C<$LogDir>, C<$LogToFileNamed>
> > 
> > Logging to a standalone file is also possible, but note that the file
> > should needs to both exist and be writable by all direct users of the
> > RT API.  This generally includes the web server and whoever
> > rt-crontool runs as.  Note that rt-mailgate and the RT CLI go through
> > the webserver, so their users do not need to have write permissions to
> > this file. If you expect to have multiple users of the direct API,
> > Best Practical recommends using syslog instead of direct file logging.
> > 
> > =cut
> > 
> > Set($LogToFile, undef);
> > Set($LogDir, q{var/log});
> > Set($LogToFileNamed, "rt.log");    #log to rt.log
> > 
> > =item C<$LogStackTraces>
> > 
> > If set to a log level then logging will include stack traces for
> > messages with level equal to or greater than specified.
> > 
> > NOTICE: Stack traces include parameters supplied to functions or
> > methods. It is possible for stack trace logging to reveal sensitive
> > information such as passwords or ticket content in your logs.
> > 
> > =cut
> > 
> > Set($LogStackTraces, "");
> > 
> > =item C<@LogToSyslogConf>
> > 
> > On Solaris or UnixWare, set to ( socket => 'inet' ).  Options here
> > override any other options RT passes to L.
> > Other interesting flags include facility and logopt.  (See the
> > L documentation for more information.)  (Maybe
> > ident too, if you have multiple RT installations.)
> > 
> > =cut
> > 
> > Set(@LogToSyslogConf, ());
> > 
> > =back
> > 
> > 
> > 
> > =head1 Incoming mail gateway
> > 
> > =over 4
> > 
> > =item C<$EmailSubjectTagRegex>
> > 
> > This regexp controls what subject tags RT recognizes as its own.  If
> > you're not dealing with historical C<$rtname> values, you'll likely
> > never have to change this configuration.
> > 
> > Be B with it. Note that it overrides C<$rtname> for
> > subject token matching and that you should use only "non-capturing"
> > parenthesis grouping. For example:
> > 
> > C
> > 
> > and NOT
> > 
> > C
> > 
> > The setting below would make RT behave exactly as it does without the
> > setting enabled.
> > 
> > =cut
> > 
> > # Set($EmailSubjectTagRegex, qr/\Q$rtname\E/i );
> > 
> > =item C<$OwnerEmail>
> > 
> > C<$OwnerEmail> is the address of a human who manages RT. RT will send
> > errors generated by the mail gateway to this address.  This address
> > should I be an address that's managed by your RT instance.
> > 
> > =cut
> > 
> > Set($OwnerEmail, 'tim.dunphy at example.com');
> > 
> > =item C<$LoopsToRTOwner>
> > 
> > If C<$LoopsToRTOwner> is defined, RT will send mail that it believes
> > might be a loop to C<$OwnerEmail>.
> > 
> > =cut
> > 
> > Set($LoopsToRTOwner, 1);
> > 
> > =item C<$StoreLoops>
> > 
> > If C<$StoreLoops> is defined, RT will record messages that it believes
> > to be part of mail loops.  As it does this, it will try to be careful
> > not to send mail to the sender of these messages.
> > 
> > =cut
> > 
> > Set($StoreLoops, undef);
> > 
> > =item C<$MaxAttachmentSize>
> > 
> > C<$MaxAttachmentSize> sets the maximum size (in bytes) of attachments
> > stored in the database.
> > 
> > For MySQL and Oracle, we set this size to 10 megabytes.  If you're
> > running a PostgreSQL version earlier than 7.1, you will need to drop
> > this to 8192. (8k)
> > 
> > =cut
> > 
> > 
> > Set($MaxAttachmentSize, 10_000_000);
> > 
> > =item C<$TruncateLongAttachments>
> > 
> > If this is set to a non-undef value, RT will truncate attachments
> > longer than C<$MaxAttachmentSize>.
> > 
> > =cut
> > 
> > Set($TruncateLongAttachments, undef);
> > 
> > =item C<$DropLongAttachments>
> > 
> > If this is set to a non-undef value, RT will silently drop attachments
> > longer than C.  C<$TruncateLongAttachments>, above,
> > takes priority over this.
> > 
> > =cut
> > 
> > Set($DropLongAttachments, undef);
> > 
> > =item C<$RTAddressRegexp>
> > 
> > C<$RTAddressRegexp> is used to make sure RT doesn't add itself as a
> > ticket CC if C<$ParseNewMessageForTicketCcs>, above, is enabled.  It
> > is important that you set this to a regular expression that matches
> > all addresses used by your RT.  This lets RT avoid sending mail to
> > itself.  It will also hide RT addresses from the list of "One-time Cc"
> > and Bcc lists on ticket reply.
> > 
> > If you have a number of addresses configured in your RT database
> > already, you can generate a naive first pass regexp by using:
> > 
> >     perl etc/upgrade/generate-rtaddressregexp
> > 
> > If left blank, RT will generate a regexp for you, based on your
> > comment and correspond address settings on your queues; this comes at
> > a small cost in start-up speed.
> > 
> > =cut
> > 
> > Set($RTAddressRegexp, undef);
> > 
> > =item C<$CanonicalizeEmailAddressMatch>, C<$CanonicalizeEmailAddressReplace>
> > 
> > RT provides functionality which allows the system to rewrite incoming
> > email addresses.  In its simplest form, you can substitute the value
> > in C for the value in
> > C (These values are passed to the
> > C subroutine in F)
> > 
> > By default, that routine performs a C on any
> > address passed to it.
> > 
> > =cut
> > 
> > # Set($CanonicalizeEmailAddressMatch, '@subdomain\.example\.com$');
> > # Set($CanonicalizeEmailAddressReplace, '@example.com');
> > 
> > =item C<$CanonicalizeOnCreate>
> > 
> > Set this to 1 and the create new user page will use the values that
> > you enter in the form but use the function CanonicalizeUserInfo in
> > F
> > 
> > =cut
> > 
> > Set($CanonicalizeOnCreate, 0);
> > 
> > =item C<$ValidateUserEmailAddresses>
> > 
> > If C<$ValidateUserEmailAddresses> is 1, RT will refuse to create
> > users with an invalid email address (as specified in RFC 2822) or with
> > an email address made of multiple email addresses.
> > 
> > =cut
> > 
> > Set($ValidateUserEmailAddresses, undef);
> > 
> > =item C<@MailPlugins>
> > 
> > C<@MailPlugins> is a list of authentication plugins for
> > L to use; see L
> > 
> > =cut
> > 
> > =item C<$UnsafeEmailCommands>
> > 
> > C<$UnsafeEmailCommands>, if set to 1, enables 'take' and 'resolve'
> > as possible actions via the mail gateway.  As its name implies, this
> > is very unsafe, as it allows email with a forged sender to possibly
> > resolve arbitrary tickets!
> > 
> > =cut
> > 
> > =item C<$ExtractSubjectTagMatch>, C<$ExtractSubjectTagNoMatch>
> > 
> > The default "extract remote tracking tags" scrip settings; these
> > detect when your RT is talking to another RT, and adjust the subject
> > accordingly.
> > 
> > =cut
> > 
> > Set($ExtractSubjectTagMatch, qr/\[.+? #\d+\]/);
> > Set($ExtractSubjectTagNoMatch, ( ${RT::EmailSubjectTagRegex}
> >        ? qr/\[(?:${RT::EmailSubjectTagRegex}) #\d+\]/
> >        : qr/\[\Q$RT::rtname\E #\d+\]/));
> > 
> > =back
> > 
> > Set($SendmailPath , "/usr/local/rt4/bin/msmtp_wrapper");
> > 
> > 
> > 
> > =head1 Outgoing mail
> > 
> > =over 4
> > 
> > =item C<$MailCommand>
> > 
> > C<$MailCommand> defines which method RT will use to try to send mail.
> > We know that 'sendmailpipe' works fairly well.  If 'sendmailpipe'
> > doesn't work well for you, try 'sendmail'.  Other options are 'smtp'
> > or 'qmail'.
> > 
> > Note that you should remove the '-t' from C<$SendmailArguments> if you
> > use 'sendmail' rather than 'sendmailpipe'
> > 
> > For testing purposes, or to simply disable sending mail out into the
> > world, you can set C<$MailCommand> to 'testfile' which writes all mail
> > to a temporary file.  RT will log the location of the temporary file
> > so you can extract mail from it afterward.
> > 
> > =cut
> > 
> > Set($MailCommand, "sendmailpipe");
> > 
> > =item C<$SetOutgoingMailFrom>
> > 
> > C<$SetOutgoingMailFrom> tells RT to set the sender envelope to the
> > Correspond mail address of the ticket's queue.
> > 
> > Warning: If you use this setting, bounced mails will appear to be
> > incoming mail to the system, thus creating new tickets.
> > 
> > =cut
> > 
> > Set($SetOutgoingMailFrom, 0);
> > 
> > =item C<$OverrideOutgoingMailFrom>
> > 
> > C<$OverrideOutgoingMailFrom> is used for overwriting the Correspond
> > address of the queue as it is handed to sendmail -f. This helps force
> > the From_ header away from www-data or other email addresses that show
> > up in the "Sent by" line in Outlook.
> > 
> > The option is a hash reference of queue name to email address.  If
> > there is no ticket involved, then the value of the C key will
> > be used.
> > 
> > This option is irrelevant unless C<$SetOutgoingMailFrom> is set.
> > 
> > =cut
> > 
> > Set($OverrideOutgoingMailFrom, {
> > #    'Default' => 'admin at rt.example.com',
> > #    'General' => 'general at rt.example.com',
> > });
> > 
> > =item C<$DefaultMailPrecedence>
> > 
> > C<$DefaultMailPrecedence> is used to control the default Precedence
> > level of outgoing mail where none is specified.  By default it is
> > C, but if you only send mail to your staff, you may wish to
> > change it.
> > 
> > Note that you can set the precedence of individual templates by
> > including an explicit Precedence header.
> > 
> > If you set this value to C then we do not set a default
> > Precedence header to outgoing mail. However, if there already is a
> > Precedence header, it will be preserved.
> > 
> > =cut
> > 
> > Set($DefaultMailPrecedence, "bulk");
> > 
> > =item C<$DefaultErrorMailPrecedence>
> > 
> > C<$DefaultErrorMailPrecedence> is used to control the default
> > Precedence level of outgoing mail that indicates some kind of error
> > condition. By default it is C, but if you only send mail to your
> > staff, you may wish to change it.
> > 
> > If you set this value to C then we do not add a Precedence
> > header to error mail.
> > 
> > =cut
> > 
> > Set($DefaultErrorMailPrecedence, "bulk");
> > 
> > =item C<$UseOriginatorHeader>
> > 
> > C<$UseOriginatorHeader> is used to control the insertion of an
> > RT-Originator Header in every outgoing mail, containing the mail
> > address of the transaction creator.
> > 
> > =cut
> > 
> > Set($UseOriginatorHeader, 1);
> > 
> > =item C<$UseFriendlyFromLine>
> > 
> > By default, RT sets the outgoing mail's "From:" header to "SenderName
> > via RT".  Setting C<$UseFriendlyFromLine> to 0 disables it.
> > 
> > =cut
> > 
> > Set($UseFriendlyFromLine, 1);
> > 
> > =item C<$FriendlyFromLineFormat>
> > 
> > C format of the friendly 'From:' header; its arguments are
> > SenderName and SenderEmailAddress.
> > 
> > =cut
> > 
> > Set($FriendlyFromLineFormat, "\"%s via RT\" <%s>");
> > 
> > =item C<$UseFriendlyToLine>
> > 
> > RT can optionally set a "Friendly" 'To:' header when sending messages
> > to Ccs or AdminCcs (rather than having a blank 'To:' header.
> > 
> > This feature DOES NOT WORK WITH SENDMAIL[tm] BRAND SENDMAIL.  If you
> > are using sendmail, rather than postfix, qmail, exim or some other
> > MTA, you _must_ disable this option.
> > 
> > =cut
> > 
> > Set($UseFriendlyToLine, 0);
> > 
> > =item C<$FriendlyToLineFormat>
> > 
> > C format of the friendly 'To:' header; its arguments are
> > WatcherType and TicketId.
> > 
> > =cut
> > 
> > Set($FriendlyToLineFormat, "\"%s of ". RT->Config->Get('rtname') ." Ticket #%s\":;");
> > 
> > =item C<$NotifyActor>
> > 
> > By default, RT doesn't notify the person who performs an update, as
> > they already know what they've done. If you'd like to change this
> > behavior, Set C<$NotifyActor> to 1
> > 
> > =cut
> > 
> > Set($NotifyActor, 0);
> > 
> > =item C<$RecordOutgoingEmail>
> > 
> > By default, RT records each message it sends out to its own internal
> > database.  To change this behavior, set C<$RecordOutgoingEmail> to 0
> > 
> > =cut
> > 
> > Set($RecordOutgoingEmail, 1);
> > 
> > =item C<$VERPPrefix>, C<$VERPDomain>
> > 
> > Setting these options enables VERP support
> > L.
> > 
> > Uncomment the following two directives to generate envelope senders
> > of the form C<${VERPPrefix}${originaladdress}@${VERPDomain}>
> > (i.e. rt-jesse=fsck.com at rt.example.com ).
> > 
> > This currently only works with sendmail and sendmailpipe.
> > 
> > =cut
> > 
> > # Set($VERPPrefix, "rt-");
> > # Set($VERPDomain, $RT::Organization);
> > 
> > 
> > =item C<$ForwardFromUser>
> > 
> > By default, RT forwards a message using queue's address and adds RT's
> > tag into subject of the outgoing message, so recipients' replies go
> > into RT as correspondents.
> > 
> > To change this behavior, set C<$ForwardFromUser> to 1 and RT
> > will use the address of the current user and remove RT's subject tag.
> > 
> > =cut
> > 
> > Set($ForwardFromUser, 0);
> > 
> > =back
> > 
> > =head2 Email dashboards
> > 
> > =over 4
> > 
> > =item C<$DashboardAddress>
> > 
> > The email address from which RT will send dashboards. If none is set,
> > then C<$OwnerEmail> will be used.
> > 
> > =cut
> > 
> > Set($DashboardAddress, '');
> > 
> > =item C<$DashboardSubject>
> > 
> > Lets you set the subject of dashboards. Arguments are the frequency (Daily,
> > Weekly, Monthly) of the dashboard and the dashboard's name.
> > 
> > =cut
> > 
> > Set($DashboardSubject, "%s Dashboard: %s");
> > 
> > =item C<@EmailDashboardRemove>
> > 
> > A list of regular expressions that will be used to remove content from
> > mailed dashboards.
> > 
> > =cut
> > 
> > Set(@EmailDashboardRemove, ());
> > 
> > =back
> > 
> > 
> > 
> > =head2 Sendmail configuration
> > 
> > These options only take effect if C<$MailCommand> is 'sendmail' or
> > 'sendmailpipe'
> > 
> > =over 4
> > 
> > =item C<$SendmailArguments>
> > 
> > C<$SendmailArguments> defines what flags to pass to C<$SendmailPath>
> > If you picked 'sendmailpipe', you MUST add a -t flag to
> > C<$SendmailArguments> These options are good for most sendmail
> > wrappers and work-a-likes.
> > 
> > These arguments are good for sendmail brand sendmail 8 and newer:
> > C
> > 
> > =cut
> > 
> > Set($SendmailArguments, "-oi -t");
> > 
> > 
> > =item C<$SendmailBounceArguments>
> > 
> > C<$SendmailBounceArguments> defines what flags to pass to C<$Sendmail>
> > assuming RT needs to send an error (i.e. bounce).
> > 
> > =cut
> > 
> > Set($SendmailBounceArguments, '-f "<>"');
> > 
> > =item C<$SendmailPath>
> > 
> > If you selected 'sendmailpipe' above, you MUST specify the path to
> > your sendmail binary in C<$SendmailPath>.
> > 
> > =cut
> > 
> > Set($SendmailPath, "/usr/sbin/sendmail");
> > 
> > 
> > =back
> > 
> > =head2 SMTP configuration
> > 
> > These options only take effect if C<$MailCommand> is 'smtp'
> > 
> > =over 4
> > 
> > =item C<$SMTPServer>
> > 
> > C<$SMTPServer> should be set to the hostname of the SMTP server to use
> > 
> > =cut
> > 
> > Set($SMTPServer, undef);
> > 
> > =item C<$SMTPFrom>
> > 
> > C<$SMTPFrom> should be set to the 'From' address to use, if not the
> > email's 'From'
> > 
> > =cut
> > 
> > Set($SMTPFrom, undef);
> > 
> > =item C<$SMTPDebug>
> > 
> > C<$SMTPDebug> should be set to 1 to debug SMTP mail sending
> > 
> > =cut
> > 
> > Set($SMTPDebug, 0);
> > 
> > =back
> > 
> > =head2 Other mailers
> > 
> > =over 4
> > 
> > =item C<@MailParams>
> > 
> > C<@MailParams> defines a list of options passed to $MailCommand if it
> > is not 'sendmailpipe', 'sendmail', or 'smtp'
> > 
> > =cut
> > 
> > Set(@MailParams, ());
> > 
> > =back
> > 
> > 
> > =head1 Web interface
> > 
> > =over 4
> > 
> > =item C<$WebDefaultStylesheet>
> > 
> > This determines the default stylesheet the RT web interface will use.
> > RT ships with several themes by default:
> > 
> >   web2            The default layout for RT 3.8
> >   aileron         The default layout for RT 4.0
> >   ballard         Theme which doesn't rely on JavaScript for menuing
> > 
> > This value actually specifies a directory in F
> > from which RT will try to load the file main.css (which should @import
> > any other files the stylesheet needs).  This allows you to easily and
> > cleanly create your own stylesheets to apply to RT.  This option can
> > be overridden by users in their preferences.
> > 
> > =cut
> > 
> > Set($WebDefaultStylesheet, "aileron");
> > #Set($WebDefaultStylesheet, "ballard");
> > 
> > =item C<$DefaultQueue>
> > 
> > Use this to select the default queue name that will be used for
> > creating new tickets. You may use either the queue's name or its
> > ID. This only affects the queue selection boxes on the web interface.
> > 
> > =cut
> > 
> > Set($DefaultQueue, "Ops");
> > 
> > =item C<$RememberDefaultQueue>
> > 
> > When a queue is selected in the new ticket dropdown, make it the new
> > default for the new ticket dropdown.
> > 
> > =cut
> > 
> > # Set($RememberDefaultQueue, 1);
> > 
> > =item C<$EnableReminders>
> > 
> > Hide all links and portlets related to Reminders by setting this to 0
> > 
> > =cut
> > 
> > Set($EnableReminders, 1);
> > 
> > =item C<@CustomFieldValuesSources>
> > 
> > Set C<@CustomFieldValuesSources> to a list of class names which extend
> > L.  This can be used to pull lists of
> > custom field values from external sources at runtime.
> > 
> > =cut
> > 
> > Set(@CustomFieldValuesSources, ());
> > 
> > =item C<$CanonicalizeRedirectURLs>
> > 
> > Set C<$CanonicalizeRedirectURLs> to 1 to use C<$WebURL> when
> > redirecting rather than the one we get from C<%ENV>.
> > 
> > If you use RT behind a reverse proxy, you almost certainly want to
> > enable this option.
> > 
> > =cut
> > 
> > Set($CanonicalizeRedirectURLs, 0);
> > 
> > =item C<@JSFiles>
> > 
> > A list of JavaScript files to be included in head.  Removing any of
> > the default entries is not suggested.
> > 
> > =cut
> > 
> > Set(@JSFiles, qw/
> >     jquery-1.4.2.min.js
> >     jquery_noconflict.js
> >     jquery-ui-1.8.4.custom.min.js
> >     jquery-ui-patch-datepicker.js
> >     ui.timepickr.js
> >     titlebox-state.js
> >     util.js
> >     userautocomplete.js
> >     jquery.event.hover-1.0.js
> >     superfish.js
> >     supersubs.js
> >     jquery.supposition.js
> >     history-folding.js
> >     late.js
> > /);
> > 
> > =item C<$JSMinPath>
> > 
> > Path to the jsmin binary, available from
> > http://www.crockford.com/javascript/jsmin.html
> > 
> > If specified, it will be used to minify C.  If it cannot be
> > found, RT will fall back to the L module;
> > failing that, RT will will simply concatenate the files.
> > 
> > =cut
> > 
> > # Set($JSMinPath, "/path/to/jsmin");
> > 
> > =item C<@CSSFiles>
> > 
> > A list of additional CSS files to be included in head.
> > 
> > =cut
> > 
> > Set(@CSSFiles, qw//);
> > 
> > =item C<$UsernameFormat>
> > 
> > This determines how user info is displayed. 'concise' will show one of
> > either NickName, RealName, Name or EmailAddress, depending on what
> > exists and whether the user is privileged or not. 'verbose' will show
> > RealName and EmailAddress.
> > 
> > =cut
> > 
> > #Set($UsernameFormat, "concise");
> > Set($UsernameFormat, "verbose");
> > 
> > =item C<$WebBaseURL>, C<$WebURL>
> > 
> > Usually you don't want to set these options. The only obvious reason
> > is if RT is accessible via https protocol on a non standard port, e.g.
> > 'https://rt.example.com:9999'. In all other cases these options are
> > computed using C<$WebDomain>, C<$WebPort> and C<$WebPath>.
> > 
> > C<$WebBaseURL> is the scheme, server and port
> > (e.g. 'http://rt.example.com') for constructing URLs to the web
> > UI. C<$WebBaseURL> doesn't need a trailing /.
> > 
> > C<$WebURL> is the C<$WebBaseURL>, C<$WebPath> and trailing /, for
> > example: 'http://www.example.com/rt/'.
> > 
> > =cut
> > 
> > my $port = RT->Config->Get('WebPort');
> > Set($WebBaseURL,
> >     ($port == 443? 'https': 'http') .'://'
> >     . RT->Config->Get('WebDomain')
> >     . ($port != 80 && $port != 443? ":$port" : '')
> > );
> > 
> > Set($WebURL, RT->Config->Get('WebBaseURL') . RT->Config->Get('WebPath') . "/");
> > 
> > =item C<$WebImagesURL>
> > 
> > C<$WebImagesURL> points to the base URL where RT can find its images.
> > Define the directory name to be used for images in RT web documents.
> > 
> > =cut
> > 
> > Set($WebImagesURL, RT->Config->Get('WebPath') . "/NoAuth/images/");
> > 
> > =item C<$LogoURL>
> > 
> > C<$LogoURL> points to the URL of the RT logo displayed in the web UI.
> > This can also be configured via the web UI.
> > 
> > =cut
> > 
> > Set($LogoURL, RT->Config->Get('WebImagesURL') . "bpslogo.png");
> > 
> > =item C<$LogoLinkURL>
> > 
> > C<$LogoLinkURL> is the URL that the RT logo hyperlinks to.
> > 
> > =cut
> > 
> > Set($LogoLinkURL, "http://bestpractical.com");
> > 
> > =item C<$LogoAltText>
> > 
> > C<$LogoAltText> is a string of text for the alt-text of the logo. It
> > will be passed through C for localization.
> > 
> > =cut
> > 
> > Set($LogoAltText, "Best Practical Solutions, LLC corporate logo");
> > 
> > =item C<$LogoImageHeight>
> > 
> > C<$LogoImageHeight> is the value of the C attribute of the logo
> > C tag.
> > 
> > =cut
> > 
> > Set($LogoImageHeight, 38);
> > 
> > =item C<$LogoImageWidth>
> > 
> > C<$LogoImageWidth> is the value of the C attribute of the logo
> > C tag.
> > 
> > =cut
> > 
> > Set($LogoImageWidth, 181);
> > 
> > =item C<$WebNoAuthRegex>
> > 
> > What portion of RT's URL space should not require authentication.  The
> > default is almost certainly correct, and should only be changed if you
> > are extending RT.
> > 
> > =cut
> > 
> > Set($WebNoAuthRegex, qr{^ (?:/+NoAuth/ | /+REST/\d+\.\d+/NoAuth/) }x );
> > 
> > =item C<$SelfServiceRegex>
> > 
> > What portion of RT's URLspace should be accessible to Unprivileged
> > users This does not override the redirect from F
> > to F when Unprivileged users attempt to
> > access ticked displays.
> > 
> > =cut
> > 
> > Set($SelfServiceRegex, qr!^(?:/+SelfService/)!x );
> > 
> > =item C<$WebFlushDbCacheEveryRequest>
> > 
> > By default, RT clears its database cache after every page view.  This
> > ensures that you've always got the most current information when
> > working in a multi-process (mod_perl or FastCGI) Environment.  Setting
> > C<$WebFlushDbCacheEveryRequest> to 0 will turn this off, which will
> > speed RT up a bit, at the expense of a tiny bit of data accuracy.
> > 
> > =cut
> > 
> > Set($WebFlushDbCacheEveryRequest, 1);
> > 
> > =item C<%ChartFont>
> > 
> > The L module (which RT uses for graphs) ships with a built-in font
> > that doesn't have full Unicode support. You can use a given TrueType
> > font for a specific language by setting %ChartFont to (language =E
> > the absolute path of a font) pairs. Your GD library must have support
> > for TrueType fonts to use this option. If there is no entry for a
> > language in the hash then font with 'others' key is used.
> > 
> > RT comes with two TrueType fonts covering most available languages.
> > 
> > =cut
> > 
> > Set(
> >     %ChartFont,
> >     'zh-cn'  => "$RT::BasePath/share/fonts/DroidSansFallback.ttf",
> >     'zh-tw'  => "$RT::BasePath/share/fonts/DroidSansFallback.ttf",
> >     'ja'     => "$RT::BasePath/share/fonts/DroidSansFallback.ttf",
> >     'others' => "$RT::BasePath/share/fonts/DroidSans.ttf",
> > );
> > 
> > =item C<$ChartsTimezonesInDB>
> > 
> > RT stores dates using the UTC timezone in the DB, so charts grouped by
> > dates and time are not representative. Set C<$ChartsTimezonesInDB> to 1
> > to enable timezone conversions using your DB's capabilities. You may
> > need to do some work on the DB side to use this feature, read more in
> > F.
> > 
> > At this time, this feature only applies to MySQL and PostgreSQL.
> > 
> > =cut
> > 
> > Set($ChartsTimezonesInDB, 0);
> > 
> > =back
> > 
> > 
> > 
> > =head2 Home page
> > 
> > =over 4
> > 
> > =item C<$DefaultSummaryRows>
> > 
> > C<$DefaultSummaryRows> is default number of rows displayed in for
> > search results on the front page.
> > 
> > =cut
> > 
> > Set($DefaultSummaryRows, 10);
> > 
> > =item C<$HomePageRefreshInterval>
> > 
> > C<$HomePageRefreshInterval> is default number of seconds to refresh
> > the RT home page. Choose from [0, 120, 300, 600, 1200, 3600, 7200].
> > 
> > =cut
> > 
> > Set($HomePageRefreshInterval, 0);
> > 
> > =item C<$HomepageComponents>
> > 
> > C<$HomepageComponents> is an arrayref of allowed components on a
> > user's customized homepage ("RT at a glance").
> > 
> > =cut
> > 
> > Set($HomepageComponents, [qw(QuickCreate Quicksearch MyAdminQueues MySupportQueues MyReminders RefreshHomepage Dashboards SavedSearches)]);
> > 
> > =back
> > 
> > 
> > 
> > 
> > =head2 Ticket search
> > 
> > =over 4
> > 
> > =item C<$UseSQLForACLChecks>
> > 
> > Historically, ACLs were checked on display, which could lead to empty
> > search pages and wrong ticket counts.  Set C<$UseSQLForACLChecks> to 1
> > to limit search results in SQL instead, which eliminates these
> > problems.
> > 
> > This option is still relatively new; it may result in performance
> > problems in some cases, or significant speedups in others.
> > 
> > =cut
> > 
> > Set($UseSQLForACLChecks, undef);
> > 
> > =item C<$TicketsItemMapSize>
> > 
> > On the display page of a ticket from search results, RT provides links
> > to the first, next, previous and last ticket from the results.  In
> > order to build these links, RT needs to fetch the full result set from
> > the database, which can be resource-intensive.
> > 
> > Set C<$TicketsItemMapSize> to number of tickets you want RT to examine
> > to build these links. If the full result set is larger than this
> > number, RT will omit the "last" link in the menu.  Set this to zero to
> > always examine all results.
> > 
> > =cut
> > 
> > Set($TicketsItemMapSize, 1000);
> > 
> > =item C<$SearchResultsRefreshInterval>
> > 
> > C<$SearchResultsRefreshInterval> is default number of seconds to
> > refresh search results in RT. Choose from [0, 120, 300, 600, 1200,
> > 3600, 7200].
> > 
> > =cut
> > 
> > Set($SearchResultsRefreshInterval, 0);
> > 
> > =item C<$DefaultSearchResultFormat>
> > 
> > C<$DefaultSearchResultFormat> is the default format for RT search
> > results
> > 
> > =cut
> > 
> > Set ($DefaultSearchResultFormat, qq{
> >    '__id__/TITLE:#',
> >    '__Subject__/TITLE:Subject',
> >    Status,
> >    QueueName,
> >    OwnerName,
> >    Priority,
> >    '__NEWLINE__',
> >    '',
> >    '__Requestors__',
> >    '__CreatedRelative__',
> >    '__ToldRelative__',
> >    '__LastUpdatedRelative__',
> >    '__TimeLeft__'});
> > 
> > =item C<$DefaultSelfServiceSearchResultFormat>
> > 
> > C<$DefaultSelfServiceSearchResultFormat> is the default format of
> > searches displayed in the SelfService interface.
> > 
> > =cut
> > 
> > Set($DefaultSelfServiceSearchResultFormat, qq{
> >    '__id__/TITLE:#',
> >    '__Subject__/TITLE:Subject',
> >    Status,
> >    Requestors,
> >    OwnerName});
> > 
> > =item C<%FullTextSearch>
> > 
> > Full text search (FTS) without database indexing is a very slow
> > operation, and is thus disabled by default.
> > 
> > Before setting C to 1, read F for
> > the full details of FTS on your particular database.
> > 
> > It is possible to enable FTS without database indexing support, simply
> > by setting the C key to 1, while leaving C set to 0.
> > This is not generally suggested, as unindexed full-text searching can
> > cause severe performance problems.
> > 
> > =cut
> > 
> > Set(%FullTextSearch,
> >     Enable  => 0,
> >     Indexed => 0,
> > );
> > 
> > 
> > =item C<$OnlySearchActiveTicketsInSimpleSearch>
> > 
> > When query in simple search doesn't have status info, use this to only
> > search active ones.
> > 
> > =cut
> > 
> > Set($OnlySearchActiveTicketsInSimpleSearch, 1);
> > 
> > =item C<$SearchResultsAutoRedirect>
> > 
> > When only one ticket is found in search, use this to redirect to the
> > ticket display page automatically.
> > 
> > =cut
> > 
> > Set($SearchResultsAutoRedirect, 0);
> > 
> > =back
> > 
> > 
> > 
> > =head2 Ticket display
> > 
> > =over 4
> > 
> > =item C<$ShowMoreAboutPrivilegedUsers>
> > 
> > This determines if the 'More about requestor' box on
> > Ticket/Display.html is shown for Privileged Users.
> > 
> > =cut
> > 
> > Set($ShowMoreAboutPrivilegedUsers, 0);
> > 
> > =item C<$MoreAboutRequestorTicketList>
> > 
> > This can be set to Active, Inactive, All or None.  It controls what
> > ticket list will be displayed in the 'More about requestor' box on
> > Ticket/Display.html.  This option can be controlled by users also.
> > 
> > =cut
> > 
> > Set($MoreAboutRequestorTicketList, "Active");
> > 
> > =item C<$MoreAboutRequestorExtraInfo>
> > 
> > By default, the 'More about requestor' box on Ticket/Display.html
> > shows the Requestor's name and ticket list.  If you would like to see
> > extra information about the user, this expects a Format string of user
> > attributes.  Please note that not all the attributes are supported in
> > this display because we're not building a table.
> > 
> > =cut
> > 
> > Set($MoreAboutRequestorExtraInfo, "");
> > 
> > =item C<$MoreAboutRequestorGroupsLimit>
> > 
> > By default, the 'More about requestor' box on Ticket/Display.html
> > shows all the groups of the Requestor.  Use this to limit the number
> > of groups; a value of undef removes the group display entirely.
> > 
> > =cut
> > 
> > Set($MoreAboutRequestorGroupsLimit, 0);
> > 
> > =item C<$UseSideBySideLayout>
> > 
> > Should the ticket create and update forms use a more space efficient
> > two column layout.  This layout may not work in narrow browsers if you
> > set a MessageBoxWidth (below).
> > 
> > =cut
> > 
> > Set($UseSideBySideLayout, 1);
> > 
> > =item C<$EditCustomFieldsSingleColumn>
> > 
> > When displaying a list of Ticket Custom Fields for editing, RT
> > defaults to a 2 column list.  If you set this to 1, it will instead
> > display the Custom Fields in a single column.
> > 
> > =cut
> > 
> > Set($EditCustomFieldsSingleColumn, 0);
> > 
> > =item C<$ShowUnreadMessageNotifications>
> > 
> > If set to 1, RT will prompt users when there are new,
> > unread messages on tickets they are viewing.
> > 
> > =cut
> > 
> > Set($ShowUnreadMessageNotifications, 0);
> > 
> > =item C<$AutocompleteOwners>
> > 
> > If set to 1, the owner drop-downs for ticket update/modify and the query
> > builder are replaced by text fields that autocomplete.  This can
> > alleviate the sometimes huge owner list for installations where many
> > users have the OwnTicket right.
> > 
> > =cut
> > 
> > Set($AutocompleteOwners, 0);
> > 
> > =item C<$UserAutocompleteFields>
> > 
> > Specifies which fields of L to match against and how to
> > match each field when autocompleting users.  Valid match methods are
> > LIKE, STARTSWITH, ENDSWITH, =, and !=.
> > 
> > =cut
> > 
> > Set($UserAutocompleteFields, {
> >     EmailAddress => 'STARTSWITH',
> >     Name         => 'STARTSWITH',
> >     RealName     => 'LIKE',
> > });
> > 
> > =item C<$AllowUserAutocompleteForUnprivileged>
> > 
> > Should unprivileged users be allowed to autocomplete users.  Setting
> > this option to 1 means unprivileged users will be able to search all
> > your users.
> > 
> > =cut
> > 
> > Set($AllowUserAutocompleteForUnprivileged, 0);
> > 
> > =item C<$DisplayTicketAfterQuickCreate>
> > 
> > Enable this to redirect to the created ticket display page
> > automatically when using QuickCreate.
> > 
> > =cut
> > 
> > Set($DisplayTicketAfterQuickCreate, 0);
> > 
> > =item C<$WikiImplicitLinks>
> > 
> > Support implicit links in WikiText custom fields?  Setting this to 1
> > causes InterCapped or ALLCAPS words in WikiText fields to automatically
> > become links to searches for those words.  If used on Articles, it links
> > to the Article with that name.
> > 
> > =cut
> > 
> > Set($WikiImplicitLinks, 0);
> > 
> > =item C<$PreviewScripMessages>
> > 
> > Set C<$PreviewScripMessages> to 1 if the scrips preview on the ticket
> > reply page should include the content of the messages to be sent.
> > 
> > =cut
> > 
> > Set($PreviewScripMessages, 0);
> > 
> > =item C<$SimplifiedRecipients>
> > 
> > If C<$SimplifiedRecipients> is set, a simple list of who will receive
> > B kind of mail will be shown on the ticket reply page, instead of a
> > detailed breakdown by scrip.
> > 
> > =cut
> > 
> > Set($SimplifiedRecipients, 0);
> > 
> > =back
> > 
> > 
> > 
> > =head2 Articles
> > 
> > =over 4
> > 
> > =item C<$ArticleOnTicketCreate>
> > 
> > Set this to 1 to display the Articles interface on the Ticket Create
> > page in addition to the Reply/Comment page.
> > 
> > =cut
> > 
> > Set($ArticleOnTicketCreate, 0);
> > 
> > =item C<$HideArticleSearchOnReplyCreate>
> > 
> > Set this to 1 to hide the search and include boxes from the Article
> > UI.  This assumes you have enabled Article Hotlist feature, otherwise
> > you will have no access to Articles.
> > 
> > =cut
> > 
> > Set($HideArticleSearchOnReplyCreate, 0);
> > 
> > =back
> > 
> > 
> > 
> > =head2 Message box properties
> > 
> > =over 4
> > 
> > =item C<$MessageBoxWidth>, C<$MessageBoxHeight>
> > 
> > For message boxes, set the entry box width, height and what type of
> > wrapping to use.  These options can be overridden by users in their
> > preferences.
> > 
> > When the width is set to undef, no column count is specified and the
> > message box will take up 100% of the available width.  Combining this
> > with HARD messagebox wrapping (below) is not recommended, as it will
> > lead to inconsistent width in transactions between browsers.
> > 
> > These settings only apply to the non-RichText message box.  See below
> > for Rich Text settings.
> > 
> > =cut
> > 
> > Set($MessageBoxWidth, undef);
> > Set($MessageBoxHeight, 15);
> > 
> > =item C<$MessageBoxWrap>
> > 
> > Wrapping is disabled when using MessageBoxRichText because of a bad
> > interaction between IE and wrapping with the Rich Text Editor.
> > 
> > =cut
> > 
> > Set($MessageBoxWrap, "SOFT");
> > 
> > =item C<$MessageBoxRichText>
> > 
> > Should "rich text" editing be enabled? This option lets your users
> > send HTML email messages from the web interface.
> > 
> > =cut
> > 
> > Set($MessageBoxRichText, 1);
> > 
> > =item C<$MessageBoxRichTextHeight>
> > 
> > Height of rich text JavaScript enabled editing boxes (in pixels)
> > 
> > =cut
> > 
> > Set($MessageBoxRichTextHeight, 200);
> > 
> > =item C<$MessageBoxIncludeSignature>
> > 
> > Should your users' signatures (from their Preferences page) be
> > included in Comments and Replies.
> > 
> > =cut
> > 
> > Set($MessageBoxIncludeSignature, 1);
> > 
> > =item C<$MessageBoxIncludeSignatureOnComment>
> > 
> > Should your users' signatures (from their Preferences page) be
> > included in Comments. Setting this to false overrides
> > C<$MessageBoxIncludeSignature>.
> > 
> > =cut
> > 
> > Set($MessageBoxIncludeSignatureOnComment, 1);
> > 
> > =back
> > 
> > 
> > =head2 Transaction display
> > 
> > =over 4
> > 
> > =item C<$OldestTransactionsFirst>
> > 
> > By default, RT shows newest transactions at the bottom of the ticket
> > history page, if you want see them at the top set this to 0.  This
> > option can be overridden by users in their preferences.
> > 
> > =cut
> > 
> > Set($OldestTransactionsFirst, 1);
> > 
> > =item C<$DeferTransactionLoading>
> > 
> > When set, defers loading ticket history until the user clicks a link.
> > This should end up serving pages to users quicker, since generating
> > all the HTML for transaction history can be slow for long tickets.
> > 
> > =cut
> > 
> > # Set($DeferTransactionLoading, 1);
> > 
> > =item C<$ShowBccHeader>
> > 
> > By default, RT hides from the web UI information about blind copies
> > user sent on reply or comment.
> > 
> > =cut
> > 
> > Set($ShowBccHeader, 0);
> > 
> > =item C<$TrustHTMLAttachments>
> > 
> > If C is not defined, we will display them as
> > text. This prevents malicious HTML and JavaScript from being sent in a
> > request (although there is probably more to it than that)
> > 
> > =cut
> > 
> > Set($TrustHTMLAttachments, undef);
> > 
> > =item C<$AlwaysDownloadAttachments>
> > 
> > Always download attachments, regardless of content type. If set, this
> > overrides C.
> > 
> > =cut
> > 
> > Set($AlwaysDownloadAttachments, undef);
> > 
> > =item C<$AttachmentUnits>
> > 
> > Controls the units (kilobytes or bytes) that attachment sizes use for
> > display. The default is to display kilobytes if the attachment is
> > larger than 1024 bytes, bytes otherwise. If you set
> > C<$AttachmentUnits> to C<'k'> then attachment sizes will always be
> > displayed in kilobytes. If set to C<'b'>, then sizes will be bytes.
> > 
> > =cut
> > 
> > Set($AttachmentUnits, undef);
> > 
> > =item C<$PreferRichText>
> > 
> > If C<$PreferRichText> is set to 1, RT will show HTML/Rich text messages
> > in preference to their plain-text alternatives. RT "scrubs" the HTML to
> > show only a minimal subset of HTML to avoid possible contamination by
> > cross-site-scripting attacks.
> > 
> > =cut
> > 
> > Set($PreferRichText, undef);
> > 
> > =item C<$MaxInlineBody>
> > 
> > C<$MaxInlineBody> is the maximum attachment size that we want to see
> > inline when viewing a transaction.  RT will inline any text if the
> > value is undefined or 0.  This option can be overridden by users in
> > their preferences.
> > 
> > =cut
> > 
> > Set($MaxInlineBody, 12000);
> > 
> > =item C<$ShowTransactionImages>
> > 
> > By default, RT shows images attached to incoming (and outgoing) ticket
> > updates inline. Set this variable to 0 if you'd like to disable that
> > behavior.
> > 
> > =cut
> > 
> > Set($ShowTransactionImages, 1);
> > 
> > =item C<$PlainTextPre>
> > 
> > Normally plaintext attachments are displayed as HTML with line breaks
> > preserved.  This causes space- and tab-based formatting not to be
> > displayed correctly.  By setting $PlainTextPre messages will be
> > displayed using 
; this option overrides C<$PlainTextMono>.
> > 
> > =cut
> > 
> > Set($PlainTextPre, 0);
> > 
> > 
> > =item C<$PlainTextMono>
> > 
> > Set C<$PlainTextMono> to 1 to use monospaced font and preserve
> > formatting; unlike C<$PlainTextPre>, the text will wrap to fit width
> > of the browser window.
> > 
> > =cut
> > 
> > Set($PlainTextMono, 0);
> > 
> > =item C<$SuppressInlineTextFiles>
> > 
> > If C<$SuppressInlineTextFiles> is set to 1, then uploaded text files
> > (text-type attachments with file names) are prevented from being
> > displayed in-line when viewing a ticket's history.
> > 
> > =cut
> > 
> > Set($SuppressInlineTextFiles, undef);
> > 
> > 
> > =item C<@Active_MakeClicky>
> > 
> > MakeClicky detects various formats of data in headers and email
> > messages, and extends them with supporting links.  By default, RT
> > provides two formats:
> > 
> > * 'httpurl': detects http:// and https:// URLs and adds '[Open URL]'
> >   link after the URL.
> > 
> > * 'httpurl_overwrite': also detects URLs as 'httpurl' format, but
> >   replaces the URL with a link and *adds spaces* into the text if it
> >   is longer then 30 characters. This allows the browser to wrap long
> >   URLs and avoid horizontal scrolling.
> > 
> > See F for documentation on how to add
> > your own styles of link detection.
> > 
> > =cut
> > 
> > Set(@Active_MakeClicky, qw());
> > 
> > =back
> > 
> > 
> > 
> > =head1 Application logic
> > 
> > =over 4
> > 
> > =item C<$ParseNewMessageForTicketCcs>
> > 
> > If C<$ParseNewMessageForTicketCcs> is set to 1, RT will attempt to
> > divine Ticket 'Cc' watchers from the To and Cc lines of incoming
> > messages.  Be forewarned that if you have I addresses which forward
> > mail to RT automatically and you enable this option without modifying
> > C<$RTAddressRegexp> below, you will get yourself into a heap of trouble.
> > 
> > =cut
> > 
> > Set($ParseNewMessageForTicketCcs, undef);
> > 
> > =item C<$UseTransactionBatch>
> > 
> > Set C<$UseTransactionBatch> to 1 to execute transactions in batches,
> > such that a resolve and comment (for example) would happen
> > simultaneously, instead of as two transactions, unaware of each
> > others' existence.
> > 
> > =cut
> > 
> > Set($UseTransactionBatch, 1);
> > 
> > =item C<$StrictLinkACL>
> > 
> > When this feature is enabled a user needs I rights on
> > both tickets to link them together; otherwise, I rights
> > on either of them is sufficient.
> > 
> > =cut
> > 
> > Set($StrictLinkACL, 1);
> > 
> > =item C<$RedistributeAutoGeneratedMessages>
> > 
> > Should RT redistribute correspondence that it identifies as machine
> > generated?  A 1 will do so; setting this to 0 will cause no
> > such messages to be redistributed.  You can also use 'privileged' (the
> > default), which will redistribute only to privileged users. This helps
> > to protect against malformed bounces and loops caused by auto-created
> > requestors with bogus addresses.
> > 
> > =cut
> > 
> > Set($RedistributeAutoGeneratedMessages, "privileged");
> > 
> > =item C<$ApprovalRejectionNotes>
> > 
> > Should rejection notes from approvals be sent to the requestors?
> > 
> > =back
> > 
> > =cut
> > 
> > Set($ApprovalRejectionNotes, 1);
> > 
> > =head1 Extra security
> > 
> > =over 4
> > 
> > This is a list of extra security measures to enable that help keep your RT
> > safe.  If you don't know what these mean, you should almost certainly leave the
> > defaults alone.
> > 
> > =item C<$DisallowExecuteCode>
> > 
> > If set to a true value, the C right will be removed from
> > all users, B the superuser.  This is intended for when RT is
> > installed into a shared environment where even the superuser should not
> > be allowed to run arbitrary Perl code on the server via scrips.
> > 
> > =cut
> > 
> > Set($DisallowExecuteCode, 0);
> > 
> > =item C<$Framebusting>
> > 
> > If set to a false value, framekiller javascript will be disabled and the
> > X-Frame-Options: DENY header will be suppressed from all responses.
> > This disables RT's clickjacking protection.
> > 
> > =cut
> > 
> > Set($Framebusting, 1);
> > 
> > =back
> > 
> > =head1 Authorization and user configuration
> > 
> > =over 4
> > 
> > =item C<$WebExternalAuth>
> > 
> > If C<$WebExternalAuth> is defined, RT will defer to the environment's
> > REMOTE_USER variable.
> > 
> > =cut
> > 
> > Set($WebExternalAuth, undef);
> > 
> > =item C<$WebExternalAuthContinuous>
> > 
> > If C<$WebExternalAuthContinuous> is defined, RT will check for the
> > REMOTE_USER on each access.  If you would prefer this to only happen
> > once (at initial login) set this to a false value.  The default
> > setting will help ensure that if your external authentication system
> > deauthenticates a user, RT notices as soon as possible.
> > 
> > =cut
> > 
> > Set($WebExternalAuthContinuous, 1);
> > 
> > =item C<$WebFallbackToInternalAuth>
> > 
> > If C<$WebFallbackToInternalAuth> is defined, the user is allowed a
> > chance of fallback to the login screen, even if REMOTE_USER failed.
> > 
> > =cut
> > 
> > Set($WebFallbackToInternalAuth, undef);
> > 
> > =item C<$WebExternalGecos>
> > 
> > C<$WebExternalGecos> means to match 'gecos' field as the user
> > identity); useful with mod_auth_pwcheck and IIS Integrated Windows
> > logon.
> > 
> > =cut
> > 
> > Set($WebExternalGecos, undef);
> > 
> > =item C<$WebExternalAuto>
> > 
> > C<$WebExternalAuto> will create users under the same name as
> > REMOTE_USER upon login, if it's missing in the Users table.
> > 
> > =cut
> > 
> > Set($WebExternalAuto, undef);
> > 
> > =item C<$AutoCreate>
> > 
> > If C<$WebExternalAuto> is set to 1, C<$AutoCreate> will be passed to
> > User's Create method.  Use it to set defaults, such as creating
> > Unprivileged users with C<{ Privileged => 0 }> This must be a hashref.
> > 
> > =cut
> > 
> > Set($AutoCreate, undef);
> > 
> > =item C<$WebSessionClass>
> > 
> > C<$WebSessionClass> is the class you wish to use for managing
> > Sessions.  It defaults to use your SQL database, but if you are using
> > MySQL 3.x and plans to use non-ascii Queue names, uncomment and add
> > this line to F to prevent session corruption.
> > 
> > =cut
> > 
> > # Set($WebSessionClass, "Apache::Session::File");
> > 
> > =item C<$AutoLogoff>
> > 
> > By default, RT's user sessions persist until a user closes his or her
> > browser. With the C<$AutoLogoff> option you can setup session lifetime
> > in minutes. A user will be logged out if he or she doesn't send any
> > requests to RT for the defined time.
> > 
> > =cut
> > 
> > Set($AutoLogoff, 0);
> > 
> > =item C<$LogoutRefresh>
> > 
> > The number of seconds to wait after logout before sending the user to
> > the login page. By default, 1 second, though you may want to increase
> > this if you display additional information on the logout page.
> > 
> > =cut
> > 
> > Set($LogoutRefresh, 1);
> > 
> > =item C<$WebSecureCookies>
> > 
> > By default, RT's session cookie isn't marked as "secure". Some web
> > browsers will treat secure cookies more carefully than non-secure
> > ones, being careful not to write them to disk, only sending them over
> > an SSL secured connection, and so on. To enable this behavior, set
> > C<$WebSecureCookies> to 1.  NOTE: You probably don't want to turn this
> > on I users are only connecting via SSL encrypted HTTPS
> > connections.
> > 
> > =cut
> > 
> > Set($WebSecureCookies, 0);
> > 
> > =item C<$MinimumPasswordLength>
> > 
> > C<$MinimumPasswordLength> defines the minimum length for user
> > passwords. Setting it to 0 disables this check.
> > 
> > =cut
> > 
> > Set($MinimumPasswordLength, 5);
> > 
> > =back
> > 
> > 
> > =head1 Internationalization
> > 
> > =over 4
> > 
> > =item C<@LexiconLanguages>
> > 
> > An array that contains languages supported by RT's
> > internationalization interface.  Defaults to all *.po lexicons;
> > setting it to C will make RT bilingual instead of
> > multilingual, but will save some memory.
> > 
> > =cut
> > 
> > Set(@LexiconLanguages, qw(*));
> > 
> > =item C<@EmailInputEncodings>
> > 
> > An array that contains default encodings used to guess which charset
> > an attachment uses, if it does not specify one explicitly.  All
> > options must be recognized by L.  The first element may
> > also be '*', which enables encoding detection using
> > L, if installed.
> > 
> > =cut
> > 
> > Set(@EmailInputEncodings, qw(utf-8 iso-8859-1 us-ascii));
> > 
> > =item C<$EmailOutputEncoding>
> > 
> > The charset for localized email.  Must be recognized by Encode.
> > 
> > =cut
> > 
> > Set($EmailOutputEncoding, "utf-8");
> > 
> > =back
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > =head1 Date and time handling
> > 
> > =over 4
> > 
> > =item C<$DateTimeFormat>
> > 
> > You can choose date and time format.  See the "Output formatters"
> > section in perldoc F for more options.  This option
> > can be overridden by users in their preferences.
> > 
> > Some examples:
> > 
> > C
> > C "ISO", Seconds => 0 });>
> > C
> > C "RFC2822", Seconds => 0, DayOfWeek => 0 });>
> > 
> > =cut
> > 
> > Set($DateTimeFormat, "DefaultFormat");
> > 
> > # Next two options are for Time::ParseDate
> > 
> > =item C<$DateDayBeforeMonth>
> > 
> > Set this to 1 if your local date convention looks like "dd/mm/yy"
> > instead of "mm/dd/yy". Used only for parsing, not for displaying
> > dates.
> > 
> > =cut
> > 
> > Set($DateDayBeforeMonth, 1);
> > 
> > =item C<$AmbiguousDayInPast>, C<$AmbiguousDayInFuture>
> > 
> > Should an unspecified day or year in a date refer to a future or a
> > past value? For example, should a date of "Tuesday" default to mean
> > the date for next Tuesday or last Tuesday? Should the date "March 1"
> > default to the date for next March or last March?
> > 
> > Set C<$AmbiguousDayInPast> for the last date, or
> > C<$AmbiguousDayInFuture> for the next date; the default is usually
> > correct.  If both are set, C<$AmbiguousDayInPast> takes precedence.
> > 
> > =cut
> > 
> > Set($AmbiguousDayInPast, 0);
> > Set($AmbiguousDayInFuture, 0);
> > 
> > =item C<$DefaultTimeUnitsToHours>
> > 
> > Use this to set the default units for time entry to hours instead of
> > minutes.  Note that this only effects entry, not display.
> > 
> > =cut
> > 
> > Set($DefaultTimeUnitsToHours, 0);
> > 
> > =back
> > 
> > 
> > 
> > 
> > =head1 GnuPG integration
> > 
> > A full description of the (somewhat extensive) GnuPG integration can
> > be found by running the command `perldoc L` (or
> > `perldoc lib/RT/Crypt/GnuPG.pm` from your RT install directory).
> > 
> > =over 4
> > 
> > =item C<%GnuPG>
> > 
> > Set C to 'inline' to use inline encryption and
> > signatures instead of 'RFC' (GPG/MIME: RFC3156 and RFC1847) format.
> > 
> > If you want to allow people to encrypt attachments inside the DB then
> > set C to 1.
> > 
> > Set C to false if you don't want to reject
> > emails encrypted for key RT doesn't have and can not decrypt.
> > 
> > Set C to false if you don't want to reject letters
> > with incorrect GnuPG data.
> > 
> > =cut
> > 
> > Set(%GnuPG,
> >     Enable => 1,
> >     OutgoingMessagesFormat => "RFC", # Inline
> >     AllowEncryptDataInDB   => 0,
> > 
> >     RejectOnMissingPrivateKey => 1,
> >     RejectOnBadData           => 1,
> > );
> > 
> > =item C<%GnuPGOptions>
> > 
> > Options to pass to the GnuPG program.
> > 
> > If you override this in your RT_SiteConfig, you should be sure to
> > include a homedir setting.
> > 
> > Note that options with '-' character MUST be quoted.
> > 
> > =cut
> > 
> > Set(%GnuPGOptions,
> >     homedir => q{var/data/gpg},
> > 
> > # URL of a keyserver
> > #    keyserver => 'hkp://subkeys.pgp.net',
> > 
> > # enables the automatic retrieving of keys when encrypting
> > #    'auto-key-locate' => 'keyserver',
> > 
> > # enables the automatic retrieving of keys when verifying signatures
> > #    'auto-key-retrieve' => undef,
> > );
> > 
> > =back
> > 
> > 
> > 
> > =head1 Lifecycles
> > 
> > =head2 Lifecycle definitions
> > 
> > Each lifecycle is a list of possible statuses split into three logic
> > sets: B, B and B. Each status in a
> > lifecycle must be unique. (Statuses may not be repeated across sets.)
> > Each set may have any number of statuses.
> > 
> > For example:
> > 
> >     default => {
> >         initial  => ['new'],
> >         active   => ['open', 'stalled'],
> >         inactive => ['resolved', 'rejected', 'deleted'],
> >         ...
> >     },
> > 
> > Status names can be from 1 to 64 ASCII characters.  Statuses are
> > localized using RT's standard internationalization and localization
> > system.
> > 
> > =over 4
> > 
> > =item initial
> > 
> > You can define multiple B statuses for tickets in a given
> > lifecycle.
> > 
> > RT will automatically set its B date when you change a
> > ticket's status from an B state to an B or
> > B status.
> > 
> > =item active
> > 
> > B tickets are "currently in play" - they're things that are
> > being worked on and not yet complete.
> > 
> > =item inactive
> > 
> > B tickets are typically in their "final resting state".
> > 
> > While you're free to implement a workflow that ignores that
> > description, typically once a ticket enters an inactive state, it will
> > never again enter an active state.
> > 
> > RT will automatically set the B date when a ticket's status
> > is changed from an B or B status to an B
> > status.
> > 
> > B is still a special status and protected by the
> > B right, unless you re-defined rights (read below). If
> > you don't want to allow ticket deletion at any time simply don't
> > include it in your lifecycle.
> > 
> > =back
> > 
> > Statuses in each set are ordered and listed in the UI in the defined
> > order.
> > 
> > Changes between statuses are constrained by transition rules, as
> > described below.
> > 
> > =head2 Default values
> > 
> > In some cases a default value is used to display in UI or in API when
> > value is not provided. You can configure defaults using the following
> > syntax:
> > 
> >     default => {
> >         ...
> >         defaults => {
> >             on_create => 'new',
> >             on_resolve => 'resolved',
> >             ...
> >         },
> >     },
> > 
> > The following defaults are used.
> > 
> > =over 4
> > 
> > =item on_create
> > 
> > If you (or your code) doesn't specify a status when creating a ticket,
> > RT will use the this status. See also L > ticket creation>.
> > 
> > =item on_merge
> > 
> > When tickets are merged, the status of the ticket that was merged
> > away is forced to this value.  It should be one of inactive statuses;
> > 'resolved' or its equivalent is most probably the best candidate.
> > 
> > =item approved
> > 
> > When an approval is accepted, the status of depending tickets will
> > be changed to this value.
> > 
> > =item denied
> > 
> > When an approval is denied, the status of depending tickets will
> > be changed to this value.
> > 
> > =back
> > 
> > =head2 Transitions between statuses and UI actions
> > 
> > A B is a change of status from A to B. You should define
> > all possible transitions in each lifecycle using the following format:
> > 
> >     default => {
> >         ...
> >         transitions => {
> >             ''       => [qw(new open resolved)],
> >             new      => [qw(open resolved rejected deleted)],
> >             open     => [qw(stalled resolved rejected deleted)],
> >             stalled  => [qw(open)],
> >             resolved => [qw(open)],
> >             rejected => [qw(open)],
> >             deleted  => [qw(open)],
> >         },
> >         ...
> >     },
> > 
> > =head3 Statuses available during ticket creation
> > 
> > By default users can create tickets with any status, except
> > deleted. If you want to restrict statuses available during creation
> > then describe transition from '' (empty string), like in the example
> > above.
> > 
> > =head3 Protecting status changes with rights
> > 
> > A transition or group of transitions can be protected by a specific
> > right.  Additionally, you can name new right names, which will be added
> > to the system to control that transition.  For example, if you wished to
> > create a lesser right than ModifyTicket for rejecting tickets, you could
> > write:
> > 
> >     default => {
> >         ...
> >         rights => {
> >             '* -> deleted'  => 'DeleteTicket',
> >             '* -> rejected' => 'RejectTicket',
> >             '* -> *'        => 'ModifyTicket',
> >         },
> >         ...
> >     },
> > 
> > This would create a new C right in the system which you
> > could assign to whatever groups you choose.
> > 
> > On the left hand side you can have the following variants:
> > 
> >     ' -> '
> >     '* -> '
> >     ' -> *'
> >     '* -> *'
> > 
> > Valid transitions are listed in order of priority. If a user attempts
> > to change a ticket's status from B to B then the lifecycle
> > is checked for presence of an exact match, then for 'any to B',
> > 'B to any' and finally 'any to any'.
> > 
> > If you don't define any rights, or there is no match for a transition,
> > RT will use the B or B as appropriate.
> > 
> > =head3 Labeling and defining actions
> > 
> > For each transition you can define an action that will be shown in the
> > UI; each action annotated with a label and an update type.
> > 
> > Each action may provide a default update type, which can be
> > B, B, or absent. For example, you may want your
> > staff to write a reply to the end user when they change status from
> > B to B, and thus set the update to B.  Neither
> > B nor B are mandatory, and user may leave the
> > message empty, regardless of the update type.
> > 
> > This configuration can be used to accomplish what
> > $ResolveDefaultUpdateType was used for in RT 3.8.
> > 
> > Use the following format to define labels and actions of transitions:
> > 
> >     default => {
> >         ...
> >         actions => [
> >             'new -> open'     => { label => 'Open it', update => 'Respond' },
> >             'new -> resolved' => { label => 'Resolve', update => 'Comment' },
> >             'new -> rejected' => { label => 'Reject',  update => 'Respond' },
> >             'new -> deleted'  => { label => 'Delete' },
> > 
> >             'open -> stalled'  => { label => 'Stall',   update => 'Comment' },
> >             'open -> resolved' => { label => 'Resolve', update => 'Comment' },
> >             'open -> rejected' => { label => 'Reject',  update => 'Respond' },
> > 
> >             'stalled -> open'  => { label => 'Open it' },
> >             'resolved -> open' => { label => 'Re-open', update => 'Comment' },
> >             'rejected -> open' => { label => 'Re-open', update => 'Comment' },
> >             'deleted -> open'  => { label => 'Undelete' },
> >         ],
> >         ...
> >     },
> > 
> > In addition, you may define multiple actions for the same transition.
> > Alternately, you may use '* -> x' to match more than one transition.
> > For example:
> > 
> >     default => {
> >         ...
> >         actions => [
> >             ...
> >             'new -> rejected' => { label => 'Reject', update => 'Respond' },
> >             'new -> rejected' => { label => 'Quick Reject' },
> >             ...
> >             '* -> deleted' => { label => 'Delete' },
> >             ...
> >         ],
> >         ...
> >     },
> > 
> > =head2 Moving tickets between queues with different lifecycles
> > 
> > Unless there is an explicit mapping between statuses in two different
> > lifecycles, you can not move tickets between queues with these
> > lifecycles.  Such a mapping is defined as follows:
> > 
> >     __maps__ => {
> >         'from lifecycle -> to lifecycle' => {
> >             'status in left lifecycle' => 'status in right lifecycle',
> >             ...
> >         },
> >         ...
> >     },
> > 
> > =cut
> > 
> > Set(%Lifecycles,
> >     default => {
> >         initial         => [ 'new' ],
> >         active          => [ 'open', 'stalled' ],
> >         inactive        => [ 'resolved', 'rejected', 'deleted' ],
> > 
> >         defaults => {
> >             on_create => 'new',
> >             on_merge  => 'resolved',
> >             approved  => 'open',
> >             denied    => 'rejected',
> >         },
> > 
> >         transitions => {
> >             ''       => [qw(new open resolved)],
> > 
> >             # from   => [ to list ],
> >             new      => [qw(open stalled resolved rejected deleted)],
> >             open     => [qw(new stalled resolved rejected deleted)],
> >             stalled  => [qw(new open rejected resolved deleted)],
> >             resolved => [qw(new open stalled rejected deleted)],
> >             rejected => [qw(new open stalled resolved deleted)],
> >             deleted  => [qw(new open stalled rejected resolved)],
> >         },
> >         rights => {
> >             '* -> deleted'  => 'DeleteTicket',
> >             '* -> *'        => 'ModifyTicket',
> >         },
> >         actions => [
> >             'new -> open'      => {
> >                 label  => 'Open It', # loc
> >                 update => 'Respond',
> >             },
> >             'new -> resolved'  => {
> >                 label  => 'Resolve', # loc
> >                 update => 'Comment',
> >             },
> >             'new -> rejected'  => {
> >                 label  => 'Reject', # loc
> >                 update => 'Respond',
> >             },
> >             'new -> deleted'   => {
> >                 label  => 'Delete', # loc
> >             },
> > 
> >             'open -> stalled'  => {
> >                 label  => 'Stall', # loc
> >                 update => 'Comment',
> >             },
> >             'open -> resolved' => {
> >                 label  => 'Resolve', # loc
> >                 update => 'Comment',
> >             },
> >             'open -> rejected' => {
> >                 label  => 'Reject', # loc
> >                 update => 'Respond',
> >             },
> > 
> >             'stalled -> open'  => {
> >                 label  => 'Open It', # loc
> >             },
> >             'resolved -> open' => {
> >                 label  => 'Re-open', # loc
> >                 update => 'Comment',
> >             },
> >             'rejected -> open' => {
> >                 label  => 'Re-open', # loc
> >                 update => 'Comment',
> >             },
> >             'deleted -> open'  => {
> >                 label  => 'Undelete', # loc
> >             },
> >         ],
> >     },
> > # don't change lifecyle of the approvals, they are not capable to deal with
> > # custom statuses
> >     approvals => {
> >         initial         => [ 'new' ],
> >         active          => [ 'open', 'stalled' ],
> >         inactive        => [ 'resolved', 'rejected', 'deleted' ],
> > 
> >         defaults => {
> >             on_create => 'new',
> >             on_merge => 'resolved',
> >         },
> > 
> >         transitions => {
> >             ''       => [qw(new open resolved)],
> > 
> >             # from   => [ to list ],
> >             new      => [qw(open stalled resolved rejected deleted)],
> >             open     => [qw(new stalled resolved rejected deleted)],
> >             stalled  => [qw(new open rejected resolved deleted)],
> >             resolved => [qw(new open stalled rejected deleted)],
> >             rejected => [qw(new open stalled resolved deleted)],
> >             deleted  => [qw(new open stalled rejected resolved)],
> >         },
> >         rights => {
> >             '* -> deleted'  => 'DeleteTicket',
> >             '* -> rejected' => 'ModifyTicket',
> >             '* -> *'        => 'ModifyTicket',
> >         },
> >         actions => [
> >             'new -> open'      => {
> >                 label  => 'Open It', # loc
> >                 update => 'Respond',
> >             },
> >             'new -> resolved'  => {
> >                 label  => 'Resolve', # loc
> >                 update => 'Comment',
> >             },
> >             'new -> rejected'  => {
> >                 label  => 'Reject', # loc
> >                 update => 'Respond',
> >             },
> >             'new -> deleted'   => {
> >                 label  => 'Delete', # loc
> >             },
> > 
> >             'open -> stalled'  => {
> >                 label  => 'Stall', # loc
> >                 update => 'Comment',
> >             },
> >             'open -> resolved' => {
> >                 label  => 'Resolve', # loc
> >                 update => 'Comment',
> >             },
> >             'open -> rejected' => {
> >                 label  => 'Reject', # loc
> >                 update => 'Respond',
> >             },
> > 
> >             'stalled -> open'  => {
> >                 label  => 'Open It', # loc
> >             },
> >             'resolved -> open' => {
> >                 label  => 'Re-open', # loc
> >                 update => 'Comment',
> >             },
> >             'rejected -> open' => {
> >                 label  => 'Re-open', # loc
> >                 update => 'Comment',
> >             },
> >             'deleted -> open'  => {
> >                 label  => 'Undelete', # loc
> >             },
> >         ],
> >     },
> > );
> > 
> > 
> > 
> > 
> > 
> > =head1 Administrative interface
> > 
> > =over 4
> > 
> > =item C<$ShowRTPortal>
> > 
> > RT can show administrators a feed of recent RT releases and other
> > related announcements and information from Best Practical on the top
> > level Configuration page.  This feature helps you stay up to date on
> > RT security announcements and version updates.
> > 
> > RT provides this feature using an "iframe" on C
> > which asks the administrator's browser to show an inline page from
> > Best Practical's website.
> > 
> > If you'd rather not make this feature available to your
> > administrators, set C<$ShowRTPortal> to a false value.
> > 
> > =cut
> > 
> > Set($ShowRTPortal, 1);
> > 
> > =item C<%AdminSearchResultFormat>
> > 
> > In the admin interface, format strings similar to tickets result
> > formats are used. Use C<%AdminSearchResultFormat> to define the format
> > strings used in the admin interface on a per-RT-class basis.
> > 
> > =cut
> > 
> > Set(%AdminSearchResultFormat,
> >     Queues =>
> >         q{'__id__/TITLE:#'}
> >         .q{,'__Name__/TITLE:Name'}
> >         .q{,__Description__,__Address__,__Priority__,__DefaultDueIn__,__Disabled__},
> > 
> >     Groups =>
> >         q{'__id__/TITLE:#'}
> >         .q{,'__Name__/TITLE:Name'}
> >         .q{,'__Description__'},
> > 
> >     Users =>
> >         q{'__id__/TITLE:#'}
> >         .q{,'__Name__/TITLE:Name'}
> >         .q{,__RealName__, __EmailAddress__},
> > 
> >     CustomFields =>
> >         q{'__id__/TITLE:#'}
> >         .q{,'__Name__/TITLE:Name'}
> >         .q{,__AppliedTo__, __FriendlyType__, __FriendlyPattern__},
> > 
> >     Scrips =>
> >         q{'__id__/TITLE:#'}
> >         .q{,'__Description__/TITLE:Description'}
> >         .q{,__Stage__, __Condition__, __Action__, __Template__},
> > 
> >     Templates =>
> >         q{'__id__/TITLE:#'}
> >         .q{,'__Name__/TITLE:Name'}
> >         .q{,'__Description__'},
> >     Classes =>
> >         q{ '__id__/TITLE:#'}
> >         .q{,'__Name__/TITLE:Name'}
> >         .q{,__Description__},
> > );
> > 
> > =back
> > 
> > 
> > 
> > 
> > =head1 Development options
> > 
> > =over 4
> > 
> > =item C<$DevelMode>
> > 
> > RT comes with a "Development mode" setting.  This setting, as a
> > convenience for developers, turns on several of development options
> > that you most likely don't want in production:
> > 
> > =over 4
> > 
> > =item *
> > 
> > Uses L to reload changed Perl modules on each
> > request.
> > 
> > =item *
> > 
> > Turns off Mason's C directive; this causes Mason to
> > reload template files which have been modified on disk.
> > 
> > =item *
> > 
> > Turns on Mason's HTML C; this renders compilation errors
> > to the browser, along with a full stack trace.  It is possible for
> > stack traces to reveal sensitive information such as passwords or
> > ticket content.
> > 
> > =item *
> > 
> > Turns off caching of callbacks; this enables additional callbacks to
> > be added while the server is running.
> > 
> > =back
> > 
> > =cut
> > 
> > Set($DevelMode, "0");
> > 
> > 
> > =item C<$RecordBaseClass>
> > 
> > What abstract base class should RT use for its records. You should
> > probably never change this.
> > 
> > Valid values are C or
> > C
> > 
> > =cut
> > 
> > Set($RecordBaseClass, "DBIx::SearchBuilder::Record::Cachable");
> > 
> > 
> > =item C<@MasonParameters>
> > 
> > C<@MasonParameters> is the list of parameters for the constructor of
> > HTML::Mason's Apache or CGI Handler.  This is normally only useful for
> > debugging, e.g. profiling individual components with:
> > 
> >     use MasonX::Profiler; # available on CPAN
> >     Set(@MasonParameters, (preamble => 'my $p = MasonX::Profiler->new($m, $r);'));
> > 
> > =cut
> > 
> > Set(@MasonParameters, ());
> > 
> > =item C<$StatementLog>
> > 
> > RT has rudimentary SQL statement logging support; simply set
> > C<$StatementLog> to be the level that you wish SQL statements to be
> > logged at.
> > 
> > Enabling this option will also expose the SQL Queries page in the
> > Configuration -> Tools menu for SuperUsers.
> > 
> > =cut
> > 
> > Set($StatementLog, undef);
> > 
> > =back
> > 
> > 
> > 
> > 
> > =head1 Deprecated options
> > 
> > =over 4
> > 
> > =item C<$LinkTransactionsRun1Scrip>
> > 
> > RT-3.4 backward compatibility setting. Add/Delete Link used to record
> > one transaction and run one scrip. Set this value to 1 if you want
> > only one of the link transactions to have scrips run.
> > 
> > =cut
> > 
> > Set($LinkTransactionsRun1Scrip, 0);
> > 
> > # The order in which the services defined in ExternalSettings
> > # should be used to authenticate users. User is authenticated
> > # if successfully confirmed by any service - no more services
> > # are checked.
> > Set($ExternalAuthPriority,  [   'My_LDAP',
> >                                 'My_MySQL',
> >                                 'My_SSO_Cookie'
> >                             ]
> > );
> > 
> > # The order in which the services defined in ExternalSettings
> > # should be used to get information about users. This includes
> > # RealName, Tel numbers etc, but also whether or not the user
> > # should be considered disabled. 
> > #
> > # Once user info is found, no more services are checked.
> > #
> > # You CANNOT use a SSO cookie for authentication.
> > Set($ExternalInfoPriority,  [   'My_MySQL',
> >                                 'My_LDAP'
> >                             ]
> > );
> > 
> > # If this is set to true, then the relevant packages will
> > # be loaded to use SSL/TLS connections. At the moment,
> > # this just means "use Net::SSLeay;"
> > Set($ExternalServiceUsesSSLorTLS,    0);
> > 
> > # If this is set to 1, then users should be autocreated by RT
> > # as internal users if they fail to authenticate from an
> > # external service.
> > Set($AutoCreateNonExternalUsers,    1);
> > 
> > # These are the full settings for each external service as a HashOfHashes
> > # Note that you may have as many external services as you wish. They will
> > # be checked in the order specified in the Priority directives above.
> > # e.g. 
> > #   Set(ExternalAuthPriority,['My_LDAP','My_MySQL','My_Oracle','SecondaryLDAP','Other-DB']);
> > #
> > Set($ExternalSettings,      {   
> >                                 # AN EXAMPLE LDAP SERVICE
> >                                 'My_LDAP'       =>  {   ## GENERIC SECTION
> >                                                         # The type of service (db/ldap/cookie) 
> >                                                         'type'                      =>  'ldap',
> >                                                         # The server hosting the service
> >                                                         'server'                    =>  'ldap01.example.com',
> >                                                         ## SERVICE-SPECIFIC SECTION
> >                                                         # If you can bind to your LDAP server anonymously you should 
> >                                                         # remove the user and pass config lines, otherwise specify them here:
> >                                                         # 
> >                                                         # The username RT should use to connect to the LDAP server 
> >                                                         #'user'                      =>  'uid=Dunphy,ou=People,cn=mlbam,cn=com',
> >                                                         # The password RT should use to connect to the LDAP server
> >                                                         #'pass'                    =>  'secret',
> >                                                         #
> >                                                         # The LDAP search base
> >                                                         'base'                      =>  'ou=People,dc=example,dc=com',
> >                                                         #
> >                                                         # ALL FILTERS MUST BE VALID LDAP FILTERS ENCASED IN PARENTHESES!
> >                                                         # YOU **MUST** SPECIFY A filter AND A d_filter!!
> >                                                         #
> >                                                         # The filter to use to match RT-Users
> >                                                         'filter'                    =>  '(objectclass=*)',
> >                                                         # A catch-all example filter: '(objectClass=*)'
> >                                                         #
> >                                                         # The filter that will only match disabled users
> >                                                         'd_filter'                  =>  '(objectClass=FooBarBaz)',
> >                                                         # A catch-none example d_filter: '(objectClass=FooBarBaz)'
> >                                                         #
> >                                                         # Should we try to use TLS to encrypt connections?
> >                                                         'tls'                       =>  0,
> >                                                         # SSL Version to provide to Net::SSLeay *if* using SSL
> >                                                         #'ssl_version'               =>  2,
> >                                                         # What other args should I pass to Net::LDAP->new($host, at args)?
> >                                                         'net_ldap_args'             => [    version =>  3   ],
> >                                                         # Does authentication depend on group membership? What group name?
> >                                                         #'group'                     =>  'RTUsers',
> >                                                         # What is the attribute for the group object that determines membership?
> >                                                         #'group_attr'                =>  'cn',
> >                                                         ## RT ATTRIBUTE MATCHING SECTION
> >                                                         # The list of RT attributes that uniquely identify a user
> > 							# This example shows what you *can* specify.. I recommend reducing this
> >                                                         # to just the Name and EmailAddress to save encountering problems later.
> >                                                         'attr_match_list'           => [    'Name',
> >                                                                                             'EmailAddress', 
> >                                                                                         ],
> >                                                         # The mapping of RT attributes on to LDAP attributes
> >                                                         'attr_map'                  =>  {   'Name' => 'uid',
> >                                                                                             'EmailAddress' => 'mail',
> >                                                                                         }
> >                                                     },
> >                                 # An example SSO cookie service
> >                                 'My_SSO_Cookie'  => {   # # The type of service (db/ldap/cookie)
> >                                                         'type'                      =>  'cookie',
> >                                                         # The name of the cookie to be used
> >                                                         'name'                      =>  'loginCookieValue',
> >                                                         # The users table
> >                                                         'u_table'                   =>  'users',
> >                                                         # The username field in the users table
> >                                                         'u_field'                   =>  'username',
> >                                                         # The field in the users table that uniquely identifies a user
> >                                                         # and also exists in the cookies table
> >                                                         'u_match_key'               =>  'userID',
> >                                                         # The cookies table
> >                                                         'c_table'                   =>  'login_cookie',
> >                                                         # The field that stores cookie values
> >                                                         'c_field'                   =>  'loginCookieValue',
> >                                                         # The field in the cookies table that uniquely identifies a user
> >                                                         # and also exists in the users table
> >                                                         'c_match_key'               =>  'loginCookieUserID',
> >                                                         # The DB service in this configuration to use to lookup the cookie information
> >                                                         'db_service_name'           =>  'My_MySQL'
> >                                                     }
> >                                 }
> > );
> > 
> > 1;
> > 
> > 
> > Set($LogToFile,      'debug');
> > Set($LogToFileNamed, 'rt.log');
> > Set($LogDir,         '/usr/local/rt4/var/log');
> > 
> > 1;
> > 
> > 
> > 
> > ---------
> > 
> > 
> > thank you very much for any advice you may have!
> > 
> > tim
> > 
> > 
> > 
> >  
> > --------
> > RT Training Sessions (http://bestpractical.com/services/training.html)
> > * Boston  March 5 & 6, 2012
> 
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston ? March 5 & 6, 2012
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston  March 5 & 6, 2012

--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Boston ? March 5 & 6, 2012


From ram0502 at gmail.com  Thu Feb  2 15:56:44 2012
From: ram0502 at gmail.com (Ram Moskovitz)
Date: Thu, 2 Feb 2012 12:56:44 -0800
Subject: [rt-users] Filter by requestor email domain
In-Reply-To: 
References: 
	
Message-ID: 

Thanks Bart,
That looks good. I'm having an issue with it though - I need to match
against a regexp for the exception list.. I added an entry like '*@
example.com' to @exceptionlist  and rt is still sending out create
confirmations. What am I missing?
thanks!


On Mon, Jan 30, 2012 at 2:41 AM, Bart  wrote:

> Hi,
>
> We had a similar requirement for a bunch of e-mail addresses.
>
> This can be achieved by editing the autoreply scrip to look something like
> this:
>
>    - Condition: User Defined
>    - Action: Auto Reply To Requestors
>    - Template: Your AutoReply template
>    - Stage: TransactionCreate
>    - Custom Condition:
>
>
> my @exceptionList = ('name1 at example.com',
>                      'name2 at example.com',
>                      'name3 at example.com');
>
> my $transactionType = $self->TransactionObj->Type;
> my $ticketRequestor = lc($self->TicketObj->RequestorAddresses);
> my $trans = $self->TransactionObj;
>
> if ($transactionType eq 'Create') {
>   return if grep { $ticketRequestor eq lc($_) } @exceptionList;
>   my $msgattr = $trans->Message->First;
>   return 0 unless $msgattr;
>   return 1 if $msgattr->GetHeader('Received');
> }
> return 0;
>
> In addition the above only sends an autoreply when someone sends an
> e-mail, in our case we don't like the autoreply mails when we manually
> create a ticket (e.g. via quick create).
>
> Hope this helps.
>
> -- Bart
>
>
> Op 25 januari 2012 21:02 schreef Ram Moskovitz  het
> volgende:
>
>> Hey there,
>> I'm looking to not auto-reply on create to inbound emails from a certain
>> domain ( anything at example.com and even anything at sd.example.com). I
>> suppose the right way to go about this is via user defined condition in the
>> global scrip for autoreply on create. I have steps 1 and 3.. what's step 2?
>>
>> 1 return 0 unless $self->TransactionObj->Type eq "Create";
>> 2 return 0 if #self->TicketObj->????
>> 3 return 1
>>
>> thanks
>> ram
>>
>>
>> --------
>> RT Training Sessions (http://bestpractical.com/services/training.html)
>> * Boston ? March 5 & 6, 2012
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From alekreg at gmail.com  Thu Feb  2 16:40:22 2012
From: alekreg at gmail.com (Alek Cesarz)
Date: Thu, 02 Feb 2012 22:40:22 +0100
Subject: [rt-users] RT-to-RT communication
In-Reply-To: <4F206A92.9050803@gmail.com>
References: <4F1FA64D.2040107@gmail.com> <20120125175130.GH95897@jibsheet.com>
	<4F206A92.9050803@gmail.com>
Message-ID: <4F2B02C6.30904@gmail.com>

Alek Cesarz pisze, W dniu 2012-01-25 21:48:

> thanks Kevin. will check and get back with results.

I tried to review the code but with no success. nothing found in
incoming mail looks like it should trigger any special behaviour, but...
I am not a Perl hacker so my understanding of RT's code is limited.
what I found is that during ticket creation RT adds following headers to
first transaction:
>>
RT-Squelch-Replies-To:	 request at blahblah.net.pl
RT-DetectedAutoGenerated:	 true
>>
which may block autoresponder.
request at blahblah.net.pl is the address from which other instance of RT
is sending mails.

below are original headers from incoming email and headers recorded in
RT's first transation ("Ticket created")

*original headers*:

>>
Subject:
=?UTF-8?B?W2RpYWxvZyAjMTE5MjE1MV0gVEVTVDogemfFgm9zemVuaWUgdGVzdG93ZSBm?=
=?UTF-8?B?cm9tIHJlcXVlc3Q=?=
From: request at blahblah.net.pl
Reply-To: request at blahblah.net.pl
In-Reply-To:
References: 
Message-ID: 
Precedence: bulk
X-RT-Loop-Prevention: blahblah
RT-Ticket: blahblah #1192151
Managed-by: RT 3.6.7 (http://www.bestpractical.com/rt/)
RT-Originator: someuser at blahblah.net.pl
To: blahblah at support.s4tech.pl
Cc: some.user at blahblah.pl
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="utf-8"
X-RT-Original-Encoding: utf-8
Date: Wed, 01 Feb 2012 13:01:17 +0100
>>

*headers recorded by RT*:
>>
CC:	 some.user at blahblah.pl
MIME-Version:	 1.0
In-Reply-To:	 
References:	 




Typ zawarto?ci:	 text/plain; charset="utf-8"
Reply-To:	 request at blahblah.net.pl
Message-ID:	 
X-RT-Original-Encoding:	 utf-8
RT-Originator:	 someuser at wroclaw.blahblah.net.pl
Received:	 from mail-1-out.blahblah.net.pl ([1.2.3.4]
helo=srv-1.blahblah.net.pl) by support.s4tech.pl with esmtp (Exim 4.72)
(envelope-from ) id 1RstL7-0002rf-GS
for blahblah at support.s4tech.pl; Thu, 02 Feb 2012 10:52:25 +0100
Received:	 from [5.6.7.8] (port=39720 helo=tracker-1.blahblah.net.pl) by
srv.blahblah.net.pl with esmtp (blahblah SMTP) id 1RstMA-00001k-Q5
(envelope-from cdsrt at tracker-1.blahblah.net.pl); Thu, 02 Feb 2012
10:53:30 +0100
Received:	 from cdsrt by rt-cds.int with local (Exim 4.63)
(envelope-from ) id 1RstPZ-0005X3-N9;
Thu, 02 Feb 2012 10:57:01 +0100
Managed-BY:	 RT 3.6.7 (http://www.bestpractical.com/rt/)
Temat:	 [blahblah #1192151] TEST: zg?oszenie testowe from request
Date:	 Thu, 02 Feb 2012 10:57:01 +0100
RT-Ticket:	 blahblah #1192151
Precedence:	 bulk
X-RT-Loop-Prevention:	 blahblah
Do:	 blahblah at support.s4tech.pl
Content-Transfer-Encoding:	 8bit
From:	 request at blahblah.net.pl
RT-Squelch-Replies-To:	 request at blahblah.net.pl
RT-DetectedAutoGenerated:	 true
Content-Length:	 2786
>>

any ideas?

-- 



From falcone at bestpractical.com  Thu Feb  2 16:40:39 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Thu, 2 Feb 2012 16:40:39 -0500
Subject: [rt-users] [rt-announce] RT 4.0.5 Released
Message-ID: <20120202214039.GC66847@jibsheet.com>

I'm happy to announce that RT 4.0.5 is now available for download.

http://download.bestpractical.com/pub/rt/release/rt-4.0.5.tar.gz
http://download.bestpractical.com/pub/rt/release/rt-4.0.5.tar.gz.sig

SHA1 sums

59697fbfa3876d1950499796a429622941272edf  rt-4.0.5.tar.gz
a9040dfb1ae59f872727564709186fbdecaffe1c  rt-4.0.5.tar.gz.sig

This release contains a number of bugfixes and small improvements since
the 4.0.4 release; a few of the more notable ones include:

* Greatly improved print CSS
* New Config option - HideResolveActionsWithDependencies removes
  actions such as Resolve from the action menu on tickets with
  outstanding dependencies
* New Config option - AutocompleteOwnersForSearch allows admins to force
  an Owner autocompleter in the Query Builder
* New Config option - NoTicketInterfaceForApprovals redirects users to
  the Approvals interface if they visit an Approval ticket in the
  regular RT UI
* Improved Simple Search documentation and new 'any' keyword for any
  status
* Improved case insensitivity in the User and Custom Field Autocompleters
* new --enable-ssl-mailgate configure option and rt-mailgate options
  to assist with setting rt-mailgate up to talk to your ssl enabled
  RT server
* More improvements to email quote detection to handle Outlook quoting
* The CreateTickets action now supports adding Groups as Watchers
* httpurl_overwrite no longer inserts spaces into your URLs
* Added NBSP as a search column in the Query Builder
* Maintain Approved/Denied state in the radio button on past Approvals
* Fixes for __Bookmarked__ ticket searches
* Bugfixes for OverrideOutgoingMailFrom and sending bounces 
* More consistent ordering of Articles
* Improvements to menu internals, including fixes for Search collections
  and localization of key names
* Preserve Content-Disposition when redistributing mail
* Improved PGP handling for .asc attachments with misleading content-types
* By default, RT's session cookie will not be available to javascript
* Allow Charts to be grouped by Told.
* Test and localization cleanups.

A complete changelog is available from git by running `git log
rt-4.0.4..rt-4.0.5`
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 
-------------- next part --------------
_______________________________________________
rt-announce mailing list
rt-announce at lists.bestpractical.com
http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-announce

From borngunners at aol.com  Thu Feb  2 17:13:56 2012
From: borngunners at aol.com (Borngunners)
Date: Thu, 2 Feb 2012 17:13:56 -0500 (EST)
Subject: [rt-users] Help installing RT4 on Ubuntu
In-Reply-To: 
References: <8CEAA636B3B3E9B-2444-63944@webmail-d182.sysops.aol.com><20120126214009.GL95897@jibsheet.com><8CEAD9C927D0CBE-1B14-16399@webmail-m076.sysops.aol.com><20120130202502.GU95897@jibsheet.com><8CEADB34E8A73CF-1B14-17819@webmail-m076.sysops.aol.com><20120130233238.GV95897@jibsheet.com><8CEAE66CC35259E-1B14-1DEE4@webmail-m076.sysops.aol.com><8CEAFCA97A6097A-1C60-8B16@webmail-m076.sysops.aol.com><3B9178D874F56F47B616AB50C01F7B7701D5FACC@GRUPRD8002MB111.lamprd80.prod.outlook.com>
	
Message-ID: <8CEB00F17171DA2-18C0-103BE@webmail-d101.sysops.aol.com>

Now RT is coming up, but I noticed couple of things:
1. It seems like RT is using sqlite database instead of mysql. (How do you make RT to use mysql? If I make the changes in RT_SiteConfig.pm to use mysql, will it work?)
2. How do I make RT to work without the /rt path in the RT_SiteConfig.pm?

Also, If I want to configure LDAP authentication, how do I go about accomplishing that since the installation was done via aptitude?
Last but not least I have a backup database from another RT server version 3.8, which was mysql database, how do I go about restoring the database from the fron-end, if possible?


Thanks,

 

 

 

-----Original Message-----
From: Bart 
To: rt-users 
Sent: Thu, Feb 2, 2012 10:00 am
Subject: Re: [rt-users] Help installing RT4 on Ubuntu


Hi,


As mentioned, after the installation you have to manually add the RT config to apache.


The installation won't configure apache automatically for you, you can probably use the include line Diaulas mentioned.


Other then that, it looks like you've done the installation the Ubuntu way (which is ok), all you need to do now is configure Apache.


Let us know if it worked.

-- Bart



Op 2 februari 2012 15:12 schreef Diaulas Castro  het volgende:


 
Did you put /rt in the end of url? Ex: http://192.168.1.1/rt
 
Have Ubuntu 11.10 installed 3 weeks ago, don?t remember to change apache conf except of including this line:
 
    Include "/etc/request-tracker4/apache2-modperl2.conf?
 
 
Last 2 lines of my conf:
 
tail -n2 /etc/apache2/sites-available/default
Include "/etc/request-tracker4/apache2-modperl2.conf"

 
 
 
De: rt-users-bounces at lists.bestpractical.com [mailto:rt-users-bounces at lists.bestpractical.com]Em nome de Borngunners
Enviada em: quinta-feira, 2 de fevereiro de 2012 12:04
Para: bart at pleh.info; rt-users at lists.bestpractical.com
Assunto: Re: [rt-users] Help installing RT4 on Ubuntu

 
I have reinstalled everything again, starting from the OS. I installed ubuntu 11 and I installed RT using the following command apt-get install request-tracker4. Everything has being installed, but I am still getting the It Works! message. It seems like this version of RT is a bit complicated to install, right? Don't know what else to do regarding the installing RT. I seriously need help with detail how-to, please....

Thanks,

 

 

 

-----Original Message-----
From: Bart 
To: rt-users 
Sent: Wed, Feb 1, 2012 10:06 am
Subject: Re: [rt-users] Help installing RT4 on Ubuntu

Hi,

 

Are you trying to do the source installation on Ubuntu? (btw, which version of Ubuntu?)

 

At least, it looks that way. If the above is what you've done then I really don't understand the external auth errors your getting, a clean installation doesn't contain external auth...

 

My advise would be to make sure you have a clean installation up and running first before playing with plugins (theres really no point).

 

Also, if you have the latest Ubuntu server then you can also install RT using Aptitude ( aptitude search request-tracker4 ).

 

I assume you've documented all your steps up to this point, could you show us exactly what you've done? (you've installed plugins, so undo that to begin with or at least turn off the plugins in the RT_SiteConfig).

 


-- Bart



Op 31 januari 2012 20:36 schreef Borngunners  het volgende:

Okay. Now I have try to reinstall RT again and so far these are the configurations I have:

root at helpdesks:/var/tmp/rt-4.0.4# make initialize-database
/usr/bin/perl -I/opt/rt4/local/lib -I/opt/rt4/lib sbin/rt-setup-database --action init --prompt-for-dba-password
In order to create or update your RT database, this script needs to connect to your  mysql instance on localhost as root
Please specify that user's database password below. If the user has no database
password, just press return.

Password:
Working with:
Type:   mysql
Host:   localhost
Name:   rt4
User:   rtuser
DBA:    root
Now creating a mysql database rt4 for RT.
Done.
Now populating database schema.
Done.
Now inserting database ACLs.
Granting access to rtuser@'localhost' on rt4.
Done.
Now inserting RT core system objects.
Done.
[Tue Jan 31 19:32:37 2012] [warning]: The ActiveStatus configuration has been replaced by the new Lifecycles
functionality. You should set the 'active' property of the 'default'
lifecycle and add transition rules; see RT_Config.pm for documentation. (/var/tmp/rt-4.0.4/sbin/../lib/RT/Config.pm:766)
Now inserting data.
[Tue Jan 31 19:32:37 2012] [info]: RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Comments: SuperUser, Disabled: 0, EmailAddress: root at localhost, Gecos: root, Name: root, Password: password, Privileged: 1, RealName: Enoch Root (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:536)
[Tue Jan 31 19:32:37 2012] [error]: Could not set user info (/var/tmp/rt-4.0.4/sbin/../lib/RT/Handle.pm:826)
[Tue Jan 31 19:32:38 2012] [error]: Unable to load user: root : Couldn't find row (/var/tmp/rt-4.0.4/sbin/../lib/RT/Handle.pm:956)
Done inserting data.
Done.


Apache configuration:

  ErrorLog /opt/rt4/var/log/apache2.error
  TransferLog /opt/rt4/var/log/apache2.access
  # LogLevel debug

  AddDefaultCharset UTF-8

  DocumentRoot "/opt/rt4/share/html"
   
       Order allow,deny
       Allow from all

       SetHandler perl-script 


       PerlResponseHandler Plack::Handler::Apache2
       PerlSetVar psgi_app /opt/rt4/sbin/rt-server

   
     


        use Plack::Handler::Apache2;
        Plack::Handler::Apache2->preload("/opt/rt4/sbin/rt-server");

    



thanks,

 

 


-----Original Message-----
From: Kevin Falcone 
To: rt-users 

Sent: Mon, Jan 30, 2012 6:32 pm
Subject: Re: [rt-users] Help installing RT4 on Ubuntu


On Mon, Jan 30, 2012 at 05:11:54PM -0500, Borngunners wrote:
>    Hello Falcone,
>    I have tried the config as stated. This is the message I receive after 
starting apche:
>    root at helpdesks:/etc/apache2# /etc/init.d/apache2 start
>     * Starting web server
>    apache2
>    [Mon Jan 30 22:08:01 2012] [warning]: DBD::mysql::st execute failed: Table 
'rt4.Users' doesn't
>    exist at /usr/local/share/perl/5.10.1/DBIx/SearchBuilder/Handle.pm line 
587.
>    (/usr/local/share/perl/5.10.1/DBIx/SearchBuilder/Handle.pm:587)
 
You don't appear to have created the RT database.
 
When you said
 
>  >      On Thu, Jan 26, 2012 at 12:02:28PM -0500, Borngunners wrote:
>  >      >    I have installed RT 4 on ubuntu and have tested the web after
 
What did you do to install RT?  It'd be great if you looked through
the README and compared the steps to the notes about what you did.
 
-kevin



--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Boston ? March 5 & 6, 2012



--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Boston ? March 5 & 6, 2012

 


--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Boston ? March 5 & 6, 2012






 
--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Boston ? March 5 & 6, 2012

 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From bart at pleh.info  Fri Feb  3 04:45:28 2012
From: bart at pleh.info (Bart)
Date: Fri, 3 Feb 2012 10:45:28 +0100
Subject: [rt-users] Filter by requestor email domain
In-Reply-To: 
References: 
	
	
Message-ID: 

I think your exception list is ok, but this line basically tells the if
statement that the content needs to exactly match your list:

  return if grep { $ticketRequestor eq lc($_) } @exceptionList;

Instead of eq you could try using =~ instead, below a little info:

http://www.troubleshooters.com/codecorn/littperl/perlreg.htm#SymbolExplanations

You might also need to edit the exception list with /@example.com/, or
something like that.

Maybe someone with a little more programming skills can reply on this ^_^
I'm not sure if the above would work.

-- Bart


Op 2 februari 2012 21:56 schreef Ram Moskovitz  het
volgende:

> Thanks Bart,
> That looks good. I'm having an issue with it though - I need to match
> against a regexp for the exception list.. I added an entry like '*@
> example.com' to @exceptionlist  and rt is still sending out create
> confirmations. What am I missing?
> thanks!
>
>
> On Mon, Jan 30, 2012 at 2:41 AM, Bart  wrote:
>
>> Hi,
>>
>> We had a similar requirement for a bunch of e-mail addresses.
>>
>> This can be achieved by editing the autoreply scrip to look something
>> like this:
>>
>>    - Condition: User Defined
>>    - Action: Auto Reply To Requestors
>>    - Template: Your AutoReply template
>>    - Stage: TransactionCreate
>>    - Custom Condition:
>>
>>
>> my @exceptionList = ('name1 at example.com',
>>                      'name2 at example.com',
>>                      'name3 at example.com');
>>
>> my $transactionType = $self->TransactionObj->Type;
>> my $ticketRequestor = lc($self->TicketObj->RequestorAddresses);
>> my $trans = $self->TransactionObj;
>>
>> if ($transactionType eq 'Create') {
>>   return if grep { $ticketRequestor eq lc($_) } @exceptionList;
>>   my $msgattr = $trans->Message->First;
>>   return 0 unless $msgattr;
>>   return 1 if $msgattr->GetHeader('Received');
>> }
>> return 0;
>>
>> In addition the above only sends an autoreply when someone sends an
>> e-mail, in our case we don't like the autoreply mails when we manually
>> create a ticket (e.g. via quick create).
>>
>> Hope this helps.
>>
>> -- Bart
>>
>>
>> Op 25 januari 2012 21:02 schreef Ram Moskovitz  het
>> volgende:
>>
>>>  Hey there,
>>> I'm looking to not auto-reply on create to inbound emails from a certain
>>> domain ( anything at example.com and even anything at sd.example.com). I
>>> suppose the right way to go about this is via user defined condition in the
>>> global scrip for autoreply on create. I have steps 1 and 3.. what's step 2?
>>>
>>> 1 return 0 unless $self->TransactionObj->Type eq "Create";
>>> 2 return 0 if #self->TicketObj->????
>>> 3 return 1
>>>
>>> thanks
>>> ram
>>>
>>>
>>> --------
>>> RT Training Sessions (http://bestpractical.com/services/training.html)
>>> * Boston ? March 5 & 6, 2012
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From yacketrj at potsdam.edu  Fri Feb  3 10:36:07 2012
From: yacketrj at potsdam.edu (Ronald J. Yacketta)
Date: 3 Feb 2012 10:36:07 -0500
Subject: [rt-users] [rt 4.0.4] Unable to change status from New -> Open
Message-ID: <4F2BFEE7.9020802@potsdam.edu>

Hello all!

We went live with rt 4.0.04 last night and have been getting reports of 
end-users being unable to change ticket status in ANY queue from New -> 
Open.

Ticket 39927: Status 'open' isn't a valid status for tickets in this queue.

We are using the 'default' Lifecycle which allows for 'new' -> 'open'

default => {
         initial         => [ 'new' ],
         active          => [ 'new',' open', 'stalled' ],
         inactive        => [ 'resolved', 'rejected', 'deleted', 'billed' ],

...
# Added 'billed' transaction status
transitions => {
             ''       => [qw(new open resolved)],

             # from   => [ to list ],
             new      => [qw(open stalled resolved rejected billed 
deleted)],
             open     => [qw(new stalled resolved rejected billed deleted)],
             stalled  => [qw(new open rejected resolved billed deleted)],
             resolved => [qw(new open stalled rejected billed deleted)],
             rejected => [qw(new open stalled resolved billed deleted)],
             billed   => [qw(new open stalled rejected resolved deleted)],
             deleted  => [qw(new open stalled rejected resolved billed)],
         },
...
actions => [
             'new -> open'      => {
                 label  => 'Open It', # loc
                 update => 'Respond',
             },

...


-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From yacketrj at potsdam.edu  Fri Feb  3 11:37:59 2012
From: yacketrj at potsdam.edu (Ronald J. Yacketta)
Date: 3 Feb 2012 11:37:59 -0500
Subject: [rt-users] [rt 4.0.4] Unable to change status from New -> Open
In-Reply-To: <4F2BFEE7.9020802@potsdam.edu>
References: <4F2BFEE7.9020802@potsdam.edu>
Message-ID: <4F2C0D67.60902@potsdam.edu>

On 2/3/2012 10:36 AM, Ronald J. Yacketta wrote:
> Hello all!
>
> We went live with rt 4.0.04 last night and have been getting reports 
> of end-users being unable to change ticket status in ANY queue from 
> New -> Open.
>
> Ticket 39927: Status 'open' isn't a valid status for tickets in this 
> queue.
>
> We are using the 'default' Lifecycle which allows for 'new' -> 'open'
>
> default => {
>         initial         => [ 'new' ],
>         active          => [ 'new',' open', 'stalled' ],
>         inactive        => [ 'resolved', 'rejected', 'deleted', 
> 'billed' ],
>
> ...
> # Added 'billed' transaction status
> transitions => {
>             ''       => [qw(new open resolved)],
>
>             # from   => [ to list ],
>             new      => [qw(open stalled resolved rejected billed 
> deleted)],
>             open     => [qw(new stalled resolved rejected billed 
> deleted)],
>             stalled  => [qw(new open rejected resolved billed deleted)],
>             resolved => [qw(new open stalled rejected billed deleted)],
>             rejected => [qw(new open stalled resolved billed deleted)],
>             billed   => [qw(new open stalled rejected resolved deleted)],
>             deleted  => [qw(new open stalled rejected resolved billed)],
>         },
> ...
> actions => [
>             'new -> open'      => {
>                 label  => 'Open It', # loc
>                 update => 'Respond',
>             },
>
> ...
>
>
>
>
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston --- March 5&  6, 2012
Seeing the following log message when attempting to set status from 
'new' to 'open'

Feb  3 11:37:39 track RT: 
SelectQueue---33610---CreateTicket---1CurrentUserSelectQueue---33610---ShowTicket---1ticketsDefaultQueuecreate_in_typesActions_session_idCurrentSearchHashmy_rt_portletsSelectQueue---33610---CreateTicket---0NextPagei 
at 
/opt/rt4/local/plugins/RTx-AssetTracker/html/Callbacks/AssetTracker/Elements/Tabs/Privileged 
line 11. 
(/opt/rt4/local/plugins/RTx-AssetTracker/html/Callbacks/AssetTracker/Elements/Tabs/Privileged:11

time to dig
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From yacketrj at potsdam.edu  Fri Feb  3 11:44:01 2012
From: yacketrj at potsdam.edu (Ronald J. Yacketta)
Date: 3 Feb 2012 11:44:01 -0500
Subject: [rt-users] [rt 4.0.4] Unable to change status from New -> Open
In-Reply-To: <4F2C0D67.60902@potsdam.edu>
References: <4F2BFEE7.9020802@potsdam.edu> <4F2C0D67.60902@potsdam.edu>
Message-ID: <4F2C0ED1.8070109@potsdam.edu>

On 2/3/2012 11:37 AM, Ronald J. Yacketta wrote:
> On 2/3/2012 10:36 AM, Ronald J. Yacketta wrote:
>> Hello all!
>>
>> We went live with rt 4.0.04 last night and have been getting reports 
>> of end-users being unable to change ticket status in ANY queue from 
>> New -> Open.
>>
>> Ticket 39927: Status 'open' isn't a valid status for tickets in this 
>> queue.
>>
>> We are using the 'default' Lifecycle which allows for 'new' -> 'open'
>>
>> default => {
>>         initial         => [ 'new' ],
>>         active          => [ 'new',' open', 'stalled' ],
>>         inactive        => [ 'resolved', 'rejected', 'deleted', 
>> 'billed' ],
>>
>> ...
>> # Added 'billed' transaction status
>> transitions => {
>>             ''       => [qw(new open resolved)],
>>
>>             # from   => [ to list ],
>>             new      => [qw(open stalled resolved rejected billed 
>> deleted)],
>>             open     => [qw(new stalled resolved rejected billed 
>> deleted)],
>>             stalled  => [qw(new open rejected resolved billed deleted)],
>>             resolved => [qw(new open stalled rejected billed deleted)],
>>             rejected => [qw(new open stalled resolved billed deleted)],
>>             billed   => [qw(new open stalled rejected resolved deleted)],
>>             deleted  => [qw(new open stalled rejected resolved billed)],
>>         },
>> ...
>> actions => [
>>             'new -> open'      => {
>>                 label  => 'Open It', # loc
>>                 update => 'Respond',
>>             },
>>
>> ...
>>
>>
>>
>>
>> --------
>> RT Training Sessions (http://bestpractical.com/services/training.html)
>> * Boston --- March 5&  6, 2012
> Seeing the following log message when attempting to set status from 
> 'new' to 'open'
>
> Feb  3 11:37:39 track RT: 
> SelectQueue---33610---CreateTicket---1CurrentUserSelectQueue---33610---ShowTicket---1ticketsDefaultQueuecreate_in_typesActions_session_idCurrentSearchHashmy_rt_portletsSelectQueue---33610---CreateTicket---0NextPagei 
> at 
> /opt/rt4/local/plugins/RTx-AssetTracker/html/Callbacks/AssetTracker/Elements/Tabs/Privileged 
> line 11. 
> (/opt/rt4/local/plugins/RTx-AssetTracker/html/Callbacks/AssetTracker/Elements/Tabs/Privileged:11
>
> time to dig
>
>
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston --- March 5&  6, 2012
Ignore that last message, looks like RT:AT devs left a hanging 'warn' in 
'Privileged' still trying to figure out whye we can not go from 'new' -> 
'open'
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From falcone at bestpractical.com  Fri Feb  3 12:27:56 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Fri, 3 Feb 2012 12:27:56 -0500
Subject: [rt-users] [rt 4.0.4] Unable to change status from New -> Open
In-Reply-To: <4F2BFEE7.9020802@potsdam.edu>
References: <4F2BFEE7.9020802@potsdam.edu>
Message-ID: <20120203172756.GM5178@jibsheet.com>

On Fri, Feb 03, 2012 at 10:36:07AM -0500, Ronald J. Yacketta wrote:
>    Hello all!
> 
>    We went live with rt 4.0.04 last night and have been getting reports of end-users being unable
>    to change ticket status in ANY queue from New -> Open.
> 
>    Ticket 39927: Status 'open' isn't a valid status for tickets in this queue.

This error means that open is invalid for the current Queue, not there
is no transition from new -> open. Unfortunately, your truncated config
doesn't fail locally.  Are you sure you don't have other lifecycles
configured and applied?  If you look at the System Configuration page,
does it show the Lifecycle config you expect?

You could also tweak Ticket.pm's SetStatus to warn when you encounter
the error so you could see $cycle->Name.

-kevin


>    We are using the 'default' Lifecycle which allows for 'new' -> 'open'
> 
>    default => {
>            initial         => [ 'new' ],
>            active          => [ 'new',' open', 'stalled' ],
>            inactive        => [ 'resolved', 'rejected', 'deleted', 'billed' ],
> 
>    ...
>    # Added 'billed' transaction status
>    transitions => {
>                ''       => [qw(new open resolved)],
> 
>                # from   => [ to list ],
>                new      => [qw(open stalled resolved rejected billed deleted)],
>                open     => [qw(new stalled resolved rejected billed deleted)],
>                stalled  => [qw(new open rejected resolved billed deleted)],
>                resolved => [qw(new open stalled rejected billed deleted)],
>                rejected => [qw(new open stalled resolved billed deleted)],
>                billed   => [qw(new open stalled rejected resolved deleted)],
>                deleted  => [qw(new open stalled rejected resolved billed)],
>            },
>    ...
>    actions => [
>                'new -> open'      => {
>                    label  => 'Open It', # loc
>                    update => 'Respond',
>                },
> 
>    ...

> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston ? March 5 & 6, 2012

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Fri Feb  3 12:32:18 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Fri, 3 Feb 2012 12:32:18 -0500
Subject: [rt-users] External Auth using Active Directory 2008
In-Reply-To: <84E70F84D007E14BBD13A402719AF27C1583405E@SN2PRD0102MB153.prod.exchangelabs.com>
References: <84E70F84D007E14BBD13A402719AF27C15832CC1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120201233243.GF5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C15833CF1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120202171716.GL5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C1583405E@SN2PRD0102MB153.prod.exchangelabs.com>
Message-ID: <20120203173218.GN5178@jibsheet.com>

On Thu, Feb 02, 2012 at 06:21:20PM +0000, Howell, Van wrote:
> I added Set($LogToSyslog, "debug"); to my RT_SiteConfig.pm file
> I don't seem to be getting an more logging.
> I restarted the httpd service, didn't see any more logging so I restarted the server.

Unfortunately - it seems you have syslog itself set to discard debug
messages.  You can try turning up $LogToScreen to debug and then check
your webserver logs instead of your syslog logs.

-kevin

> This is the entire tail of the messages log....
> 
> [root at OpenNMS etc]# tail /var/log/messages
> Feb  2 11:56:45 localhost abrtd: Dump directory is a duplicate of /var/spool/abrt/ccpp-2012-02-01-14:08:36-18683
> Feb  2 11:56:45 localhost abrtd: Deleting dump directory ccpp-2012-02-02-11:54:56-2567 (dup of ccpp-2012-02-01-14:08:36-18683), sending dbus signal
> Feb  2 12:00:42 localhost RT: The actual HTTP_HOST (192.168.1.200) does NOT match the configured WebDomain (lcu.edu). Perhaps you should Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, otherwise your internal links may be broken. (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:05:43 localhost RT: The actual HTTP_HOST (192.168.1.200) does NOT match the configured WebDomain (lcu.edu). Perhaps you should Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, otherwise your internal links may be broken. (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:10:44 localhost RT: The actual HTTP_HOST (192.168.1.200) does NOT match the configured WebDomain (helpdesk.lcu.edu). Perhaps you should Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, otherwise your internal links may be broken. (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:14:00 localhost RT: My_LDAP AUTH FAILED: van.howell (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:127)
> Feb  2 12:14:00 localhost RT: FAILED LOGIN for van.howell from 10.1.5.9 (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
> Feb  2 12:15:45 localhost RT: The actual HTTP_HOST (192.168.1.200) does NOT match the configured WebDomain (helpdesk.lcu.edu). Perhaps you should Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, otherwise your internal links may be broken. (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:16:16 localhost RT: My_LDAP AUTH FAILED: van.howell (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:127)
> Feb  2 12:16:16 localhost RT: FAILED LOGIN for van.howell from 10.1.5.9 (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
> 
> Thanks for helping with this.
> 
> Van Howell
> System Administrator
> Lubbock Christian University
> 
> 
> -----Original Message-----
> From: rt-users-bounces at lists.bestpractical.com [mailto:rt-users-bounces at lists.bestpractical.com] On Behalf Of Kevin Falcone
> Sent: Thursday, February 02, 2012 11:17 AM
> To: rt-users at lists.bestpractical.com
> Subject: Re: [rt-users] External Auth using Active Directory 2008
> 
> On Thu, Feb 02, 2012 at 04:16:53PM +0000, Howell, Van wrote:
> > I do not have Debugging turned on. I am going to need some help turning it on since this is new to me.
> > 
> > Here are some errors from /var/log/messages...
> > 
> > This is a failed attempt...
> > 
> > Feb  1 16:02:25 localhost RT: My_LDAP AUTH FAILED mary.servantez 
> > (can't bind: LDAP_INVALID_CREDENTIALS 49 ) 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> > uth/LDAP.pm:82) Feb  1 16:02:25 localhost RT: FAILED LOGIN for 
> > mary.servantez from 10.1.41.95 
> > (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
> > 
> > Here is a successful attemt....
> > 
> > Feb  2 10:14:02 localhost RT: RT::Authen::ExternalAuth::LDAP::GetAuth 
> > External Auth OK ( My_LDAP ): test.account 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> > uth/LDAP.pm:139) Feb  2 10:14:02 localhost RT: Couldn't enable user 28 
> > (/opt/rt4/sbin/../lib/RT/User.pm:1066)
> > Feb  2 10:14:02 localhost RT: User marked as ENABLED ( test.account ) 
> > per External Service (, ) 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> > uth.pm:274) Feb  2 10:14:02 localhost RT: 
> > RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Address1: , 
> > City: , Country: , EmailAddress: test.account at LCU.EDU, ExternalAuthId: 
> > test.account, Gecos: test.account, Name: test.account, Organization: , 
> > RealName: Test Account, State: , WorkPhone: , Zip:  
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> > uth.pm:536) Feb  2 10:14:02 localhost RT: Successful login for 
> > test.account from 10.1.5.9 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> > uth.pm:219)
> 
> Since you're seeing these in /var/log/messages I assume you're using the syslog configuration.
> 
> You want to read about LogToSyslog in etc/RT_Config.pm then copy that setting to RT_SiteConfig.pm and change it to debug.
> 
> Restart RT and try the failed login again.
> 
> -kevin
> 
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston  March 5 & 6, 2012
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Fri Feb  3 12:35:06 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Fri, 3 Feb 2012 12:35:06 -0500
Subject: [rt-users] RT Bounce messages
In-Reply-To: 
References: <20120202171045.GJ5178@jibsheet.com>
	
Message-ID: <20120203173506.GO5178@jibsheet.com>

On Thu, Feb 02, 2012 at 07:15:28PM -0000, Tim Dunphy wrote:
> >In this case, it means RT will be comparing against all the Queue
> >address and your Correspond/Comment address.  Is it possible that RT
> >is sending to an email address that feeds back into RT via an
> >/etc/aliases file or something similar?
> 
> Interesting question. I did try the approach of using the aliases file
> in order to retrieve emails into the RT database, but I was having a
> little trouble with that. So, while it's a bit kludgy, I ultimately
> chose to achive this through pop and that's been working quite well.
> However I never got around to removing the aliases entry.
>
> From my aliases file:
> 
> 
> #rt: "|/usr/local/rt4/bin/rt-mailgate --queue ops --action correspond --url http://rt.mm3.mlbam.com/helpdesk"
> 
> #rt-comment: "|/usr/local/rt4/bin/rt-mailgate --queue ops --action comment --url http://rt.mm3.mlbam.com/helpdesk"
> 
> ops: "|/usr/local/rt4/bin/rt-mailgate --queue ops --action correspond --url http://rt.mm3.mlbam.com/helpdesk"
> ops-comment: "|/usr/local/rt4/bin/rt-mailgate --queue ops --action comment --url http://rt.mm3.mlbam.com/helpdesk"
> 
> 
> I notice that I commented out the first two rt entries but left a couple of entries for queues that I had built in there.

If you're using ops@ then unless you've configured those addresses on
the Queue's CorrespondAddress, RT doesn't know that ops@ is an RT
address and you might be accidentally looping mail back into it.

You may need to provide headers for one of the mails that is looping
sot that they can be compared to your correspond/comment addresses and
other internally configured addresses.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Fri Feb  3 12:42:06 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Fri, 3 Feb 2012 12:42:06 -0500
Subject: [rt-users] RT-to-RT communication
In-Reply-To: <4F2B02C6.30904@gmail.com>
References: <4F1FA64D.2040107@gmail.com> <20120125175130.GH95897@jibsheet.com>
	<4F206A92.9050803@gmail.com> <4F2B02C6.30904@gmail.com>
Message-ID: <20120203174206.GP5178@jibsheet.com>

On Thu, Feb 02, 2012 at 10:40:22PM +0100, Alek Cesarz wrote:
> Alek Cesarz pisze, W dniu 2012-01-25 21:48:
> 
> > thanks Kevin. will check and get back with results.
> 
> I tried to review the code but with no success. nothing found in
> incoming mail looks like it should trigger any special behaviour, but...
> I am not a Perl hacker so my understanding of RT's code is limited.
> what I found is that during ticket creation RT adds following headers to
> first transaction:
> >>
> RT-Squelch-Replies-To:	 request at blahblah.net.pl
> RT-DetectedAutoGenerated:	 true
> >>
> which may block autoresponder.
> request at blahblah.net.pl is the address from which other instance of RT
> is sending mails.
> 
> below are original headers from incoming email and headers recorded in
> RT's first transation ("Ticket created")
> 
> *original headers*:
> 
> Precedence: bulk

This one ^ is going to cause the CheckForAutoGenerated method to
return true, which will cause those headers you saw and turn off
outgoing mail back to the auto generated user.  I'm not sure if there
is a config you could use to turn this off unfortunately, since RT is
trying to avoid having a mail loop.

Do further correspondences on your local ticket sent to the external
RT?

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From yacketrj at potsdam.edu  Fri Feb  3 12:42:47 2012
From: yacketrj at potsdam.edu (Ronald J Yacketta)
Date: 3 Feb 2012 12:42:47 -0500
Subject: [rt-users] [rt 4.0.4] Unable to change status from New -> Open
In-Reply-To: <20120203172756.GM5178@jibsheet.com>
References: <4F2BFEE7.9020802@potsdam.edu> <20120203172756.GM5178@jibsheet.com>
Message-ID: <0ea399dacc69f6c3501501b5e0429368.squirrel@bearmail.potsdam.edu>



> On Fri, Feb 03, 2012 at 10:36:07AM -0500, Ronald J. Yacketta wrote:
>>    Hello all!
>>
>>    We went live with rt 4.0.04 last night and have been getting reports
>> of end-users being unable
>>    to change ticket status in ANY queue from New -> Open.
>>
>>    Ticket 39927: Status 'open' isn't a valid status for tickets in this
>> queue.
>
> This error means that open is invalid for the current Queue, not there
> is no transition from new -> open. Unfortunately, your truncated config
> doesn't fail locally.  Are you sure you don't have other lifecycles
> configured and applied?  If you look at the System Configuration page,
> does it show the Lifecycle config you expect?

Fixed, someone had a typo in the RT_Config.pm

'active' => [
                               'new',
                               =>' open',<= darn space between ' and open
                               'stalled'
                             ],
-Ron




From falcone at bestpractical.com  Fri Feb  3 12:49:55 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Fri, 3 Feb 2012 12:49:55 -0500
Subject: [rt-users] Two questions
In-Reply-To: 
References: 
	<20120131173512.GX95897@jibsheet.com>
	
	<20120201190535.GA95897@jibsheet.com>
	
Message-ID: <20120203174955.GQ5178@jibsheet.com>

On Thu, Feb 02, 2012 at 01:25:13PM -0500, Josh Narins wrote:
> > On Tue, Jan 31, 2012 at 12:54:04PM -0500, Josh Narins wrote:
> > > > On Tue, Jan 31, 2012 at 09:28:00AM -0500, Josh Narins wrote:
> > > > >    I got partway along writing a Mail Plugin for RT3.8, but,
> > > > somewhere along the way, I lost it.
> > > > >
> > > > >    Can anyone point me to any documentation on them? My goal is
> > to
> > > > remove the endlessly
> > > > >    duplicating newlines of the quoted text on each reply to our
> > > > tickets and to remove the
> > > > >    signatures.
> > > >
> > > > There is actually code in 3.8.10 or later to work around Outlook's
> > > > bugs with newlines.
> > >
> > > I'm running 4.0.2 and still have the problem.
> >
> > Please followup with some sample data to rt-bugs?  Thanks
> 
> Sure. What data do you actually want? I'm happy to run any sort of
> query. I found a ticket with no business-sensitive information that
> has the problem.

I suspect the most useful thing is reconstructing from the Attachments
table email that can be shoved through rt-mailgate so they can be
added to the existing tests for the newline removal.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Fri Feb  3 12:52:09 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Fri, 3 Feb 2012 12:52:09 -0500
Subject: [rt-users] [rt 4.0.4] Unable to change status from New -> Open
In-Reply-To: <0ea399dacc69f6c3501501b5e0429368.squirrel@bearmail.potsdam.edu>
References: <4F2BFEE7.9020802@potsdam.edu> <20120203172756.GM5178@jibsheet.com>
	<0ea399dacc69f6c3501501b5e0429368.squirrel@bearmail.potsdam.edu>
Message-ID: <20120203175209.GR5178@jibsheet.com>

On Fri, Feb 03, 2012 at 12:42:47PM -0500, Ronald J Yacketta wrote:
> 
> 
> > On Fri, Feb 03, 2012 at 10:36:07AM -0500, Ronald J. Yacketta wrote:
> >>    Hello all!
> >>
> >>    We went live with rt 4.0.04 last night and have been getting reports
> >> of end-users being unable
> >>    to change ticket status in ANY queue from New -> Open.
> >>
> >>    Ticket 39927: Status 'open' isn't a valid status for tickets in this
> >> queue.
> >
> > This error means that open is invalid for the current Queue, not there
> > is no transition from new -> open. Unfortunately, your truncated config
> > doesn't fail locally.  Are you sure you don't have other lifecycles
> > configured and applied?  If you look at the System Configuration page,
> > does it show the Lifecycle config you expect?
> 
> Fixed, someone had a typo in the RT_Config.pm

You really want all local configs in RT_SiteConfig.pm, not
RT_Config.pm.  Next time you upgrade, any changes to RT_Config.pm will
be blown away.

> 'active' => [
>                                'new',
>                                =>' open',<= darn space between ' and open
>                                'stalled'
>                              ],
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From van.howell at lcu.edu  Fri Feb  3 13:08:46 2012
From: van.howell at lcu.edu (Howell, Van)
Date: Fri, 3 Feb 2012 18:08:46 +0000
Subject: [rt-users] External Auth using Active Directory 2008
In-Reply-To: <20120203173218.GN5178@jibsheet.com>
References: <84E70F84D007E14BBD13A402719AF27C15832CC1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120201233243.GF5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C15833CF1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120202171716.GL5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C1583405E@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120203173218.GN5178@jibsheet.com>
Message-ID: <84E70F84D007E14BBD13A402719AF27C158371A4@SN2PRD0102MB153.prod.exchangelabs.com>

Here is the Apache Log from my last login attempt....

[Fri Feb  3 18:02:40 2012] [debug]: Password validation required for service - Executing... (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:155)
[Fri Feb  3 18:02:40 2012] [debug]: Trying external auth service: My_LDAP (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:16)
[Fri Feb  3 18:02:40 2012] [debug]: LDAP Search ===  Base: DC=xxxxxx,DC=xxx,DC=edu == Filter: (&(sAMAccountName=van.howell)(&(ObjectCategory=User)(ObjectClass=Person))) == Attrs: dn (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:43)
[Fri Feb  3 18:02:40 2012] [debug]: Found LDAP DN: CN=Howell\, Van,OU=Staff,OU=LCU,DC=xxxxxx,DC=xxx,DC=edu (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:75)
[Fri Feb  3 18:02:40 2012] [debug]: LDAP Search ===  Base: DC=xxxxxx,DC=xxx,DC=edu == Filter: (member=CN=Howell, Van,OU=Staff,OU=LCU,DC=xxxxxx,DC=xxx,DC=edu) == Attrs: dn (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:100)
[Fri Feb  3 18:02:40 2012] [info]: My_LDAP AUTH FAILED: van.howell (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:127)
[Fri Feb  3 18:02:40 2012] [debug]: LDAP password validation result: 0 (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:334)
[Fri Feb  3 18:02:40 2012] [debug]: Password Validation Check Result:  0 (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:159)
[Fri Feb  3 18:02:40 2012] [debug]: Autohandler called ExternalAuth. Response: (0, Password Invalid) (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/html/Elements/DoAuth:11)
[Fri Feb  3 18:02:40 2012] [error]: FAILED LOGIN for van.howell from 10.1.5.9 (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)

Van Howell
System Administrator
Lubbock Christian University

-----Original Message-----
From: rt-users-bounces at lists.bestpractical.com [mailto:rt-users-bounces at lists.bestpractical.com] On Behalf Of Kevin Falcone
Sent: Friday, February 03, 2012 11:32 AM
To: rt-users at lists.bestpractical.com
Subject: Re: [rt-users] External Auth using Active Directory 2008

On Thu, Feb 02, 2012 at 06:21:20PM +0000, Howell, Van wrote:
> I added Set($LogToSyslog, "debug"); to my RT_SiteConfig.pm file I 
> don't seem to be getting an more logging.
> I restarted the httpd service, didn't see any more logging so I restarted the server.

Unfortunately - it seems you have syslog itself set to discard debug messages.  You can try turning up $LogToScreen to debug and then check your webserver logs instead of your syslog logs.

-kevin

> This is the entire tail of the messages log....
> 
> [root at OpenNMS etc]# tail /var/log/messages Feb  2 11:56:45 localhost 
> abrtd: Dump directory is a duplicate of 
> /var/spool/abrt/ccpp-2012-02-01-14:08:36-18683
> Feb  2 11:56:45 localhost abrtd: Deleting dump directory 
> ccpp-2012-02-02-11:54:56-2567 (dup of ccpp-2012-02-01-14:08:36-18683), 
> sending dbus signal Feb  2 12:00:42 localhost RT: The actual HTTP_HOST 
> (192.168.1.200) does NOT match the configured WebDomain (lcu.edu). 
> Perhaps you should Set($WebDomain, '192.168.1.200'); in 
> RT_SiteConfig.pm, otherwise your internal links may be broken. 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:05:43 localhost RT: The actual HTTP_HOST (192.168.1.200) 
> does NOT match the configured WebDomain (lcu.edu). Perhaps you should 
> Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, otherwise your 
> internal links may be broken. 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:10:44 localhost RT: The actual HTTP_HOST (192.168.1.200) 
> does NOT match the configured WebDomain (helpdesk.lcu.edu). Perhaps 
> you should Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, 
> otherwise your internal links may be broken. 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:14:00 localhost RT: My_LDAP AUTH FAILED: van.howell 
> (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> uth/LDAP.pm:127) Feb  2 12:14:00 localhost RT: FAILED LOGIN for 
> van.howell from 10.1.5.9 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
> Feb  2 12:15:45 localhost RT: The actual HTTP_HOST (192.168.1.200) 
> does NOT match the configured WebDomain (helpdesk.lcu.edu). Perhaps 
> you should Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, 
> otherwise your internal links may be broken. 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:16:16 localhost RT: My_LDAP AUTH FAILED: van.howell 
> (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> uth/LDAP.pm:127) Feb  2 12:16:16 localhost RT: FAILED LOGIN for 
> van.howell from 10.1.5.9 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
> 
> Thanks for helping with this.
> 
> Van Howell
> System Administrator
> Lubbock Christian University
> 
> 
> -----Original Message-----
> From: rt-users-bounces at lists.bestpractical.com 
> [mailto:rt-users-bounces at lists.bestpractical.com] On Behalf Of Kevin 
> Falcone
> Sent: Thursday, February 02, 2012 11:17 AM
> To: rt-users at lists.bestpractical.com
> Subject: Re: [rt-users] External Auth using Active Directory 2008
> 
> On Thu, Feb 02, 2012 at 04:16:53PM +0000, Howell, Van wrote:
> > I do not have Debugging turned on. I am going to need some help turning it on since this is new to me.
> > 
> > Here are some errors from /var/log/messages...
> > 
> > This is a failed attempt...
> > 
> > Feb  1 16:02:25 localhost RT: My_LDAP AUTH FAILED mary.servantez 
> > (can't bind: LDAP_INVALID_CREDENTIALS 49 ) 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth/LDAP.pm:82) Feb  1 16:02:25 localhost RT: FAILED LOGIN for 
> > mary.servantez from 10.1.41.95
> > (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
> > 
> > Here is a successful attemt....
> > 
> > Feb  2 10:14:02 localhost RT: 
> > RT::Authen::ExternalAuth::LDAP::GetAuth
> > External Auth OK ( My_LDAP ): test.account 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth/LDAP.pm:139) Feb  2 10:14:02 localhost RT: Couldn't enable user 
> > 28
> > (/opt/rt4/sbin/../lib/RT/User.pm:1066)
> > Feb  2 10:14:02 localhost RT: User marked as ENABLED ( test.account 
> > ) per External Service (, ) 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth.pm:274) Feb  2 10:14:02 localhost RT: 
> > RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Address1: ,
> > City: , Country: , EmailAddress: test.account at LCU.EDU, ExternalAuthId: 
> > test.account, Gecos: test.account, Name: test.account, Organization: 
> > ,
> > RealName: Test Account, State: , WorkPhone: , Zip:  
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth.pm:536) Feb  2 10:14:02 localhost RT: Successful login for 
> > test.account from 10.1.5.9 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth.pm:219)
> 
> Since you're seeing these in /var/log/messages I assume you're using the syslog configuration.
> 
> You want to read about LogToSyslog in etc/RT_Config.pm then copy that setting to RT_SiteConfig.pm and change it to debug.
> 
> Restart RT and try the failed login again.
> 
> -kevin
> 
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston  March 5 & 6, 2012



From van.howell at lcu.edu  Fri Feb  3 13:11:53 2012
From: van.howell at lcu.edu (Howell, Van)
Date: Fri, 3 Feb 2012 18:11:53 +0000
Subject: [rt-users] External Auth using Active Directory 2008
In-Reply-To: <20120203173218.GN5178@jibsheet.com>
References: <84E70F84D007E14BBD13A402719AF27C15832CC1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120201233243.GF5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C15833CF1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120202171716.GL5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C1583405E@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120203173218.GN5178@jibsheet.com>
Message-ID: <84E70F84D007E14BBD13A402719AF27C158371EC@SN2PRD0102MB153.prod.exchangelabs.com>

One more thing,
It's like it is not sending the password to AD at all. I can type a random password multiple times and is does not lock my account.

Van Howell
System Administrator
Lubbock Christian University


-----Original Message-----
From: rt-users-bounces at lists.bestpractical.com [mailto:rt-users-bounces at lists.bestpractical.com] On Behalf Of Kevin Falcone
Sent: Friday, February 03, 2012 11:32 AM
To: rt-users at lists.bestpractical.com
Subject: Re: [rt-users] External Auth using Active Directory 2008

On Thu, Feb 02, 2012 at 06:21:20PM +0000, Howell, Van wrote:
> I added Set($LogToSyslog, "debug"); to my RT_SiteConfig.pm file I 
> don't seem to be getting an more logging.
> I restarted the httpd service, didn't see any more logging so I restarted the server.

Unfortunately - it seems you have syslog itself set to discard debug messages.  You can try turning up $LogToScreen to debug and then check your webserver logs instead of your syslog logs.

-kevin

> This is the entire tail of the messages log....
> 
> [root at OpenNMS etc]# tail /var/log/messages Feb  2 11:56:45 localhost 
> abrtd: Dump directory is a duplicate of 
> /var/spool/abrt/ccpp-2012-02-01-14:08:36-18683
> Feb  2 11:56:45 localhost abrtd: Deleting dump directory 
> ccpp-2012-02-02-11:54:56-2567 (dup of ccpp-2012-02-01-14:08:36-18683), 
> sending dbus signal Feb  2 12:00:42 localhost RT: The actual HTTP_HOST 
> (192.168.1.200) does NOT match the configured WebDomain (lcu.edu). 
> Perhaps you should Set($WebDomain, '192.168.1.200'); in 
> RT_SiteConfig.pm, otherwise your internal links may be broken. 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:05:43 localhost RT: The actual HTTP_HOST (192.168.1.200) 
> does NOT match the configured WebDomain (lcu.edu). Perhaps you should 
> Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, otherwise your 
> internal links may be broken. 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:10:44 localhost RT: The actual HTTP_HOST (192.168.1.200) 
> does NOT match the configured WebDomain (helpdesk.lcu.edu). Perhaps 
> you should Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, 
> otherwise your internal links may be broken. 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:14:00 localhost RT: My_LDAP AUTH FAILED: van.howell 
> (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> uth/LDAP.pm:127) Feb  2 12:14:00 localhost RT: FAILED LOGIN for 
> van.howell from 10.1.5.9 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
> Feb  2 12:15:45 localhost RT: The actual HTTP_HOST (192.168.1.200) 
> does NOT match the configured WebDomain (helpdesk.lcu.edu). Perhaps 
> you should Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, 
> otherwise your internal links may be broken. 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:16:16 localhost RT: My_LDAP AUTH FAILED: van.howell 
> (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> uth/LDAP.pm:127) Feb  2 12:16:16 localhost RT: FAILED LOGIN for 
> van.howell from 10.1.5.9 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
> 
> Thanks for helping with this.
> 
> Van Howell
> System Administrator
> Lubbock Christian University
> 
> 
> -----Original Message-----
> From: rt-users-bounces at lists.bestpractical.com 
> [mailto:rt-users-bounces at lists.bestpractical.com] On Behalf Of Kevin 
> Falcone
> Sent: Thursday, February 02, 2012 11:17 AM
> To: rt-users at lists.bestpractical.com
> Subject: Re: [rt-users] External Auth using Active Directory 2008
> 
> On Thu, Feb 02, 2012 at 04:16:53PM +0000, Howell, Van wrote:
> > I do not have Debugging turned on. I am going to need some help turning it on since this is new to me.
> > 
> > Here are some errors from /var/log/messages...
> > 
> > This is a failed attempt...
> > 
> > Feb  1 16:02:25 localhost RT: My_LDAP AUTH FAILED mary.servantez 
> > (can't bind: LDAP_INVALID_CREDENTIALS 49 ) 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth/LDAP.pm:82) Feb  1 16:02:25 localhost RT: FAILED LOGIN for 
> > mary.servantez from 10.1.41.95
> > (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
> > 
> > Here is a successful attemt....
> > 
> > Feb  2 10:14:02 localhost RT: 
> > RT::Authen::ExternalAuth::LDAP::GetAuth
> > External Auth OK ( My_LDAP ): test.account 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth/LDAP.pm:139) Feb  2 10:14:02 localhost RT: Couldn't enable user 
> > 28
> > (/opt/rt4/sbin/../lib/RT/User.pm:1066)
> > Feb  2 10:14:02 localhost RT: User marked as ENABLED ( test.account 
> > ) per External Service (, ) 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth.pm:274) Feb  2 10:14:02 localhost RT: 
> > RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Address1: ,
> > City: , Country: , EmailAddress: test.account at LCU.EDU, ExternalAuthId: 
> > test.account, Gecos: test.account, Name: test.account, Organization: 
> > ,
> > RealName: Test Account, State: , WorkPhone: , Zip:  
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth.pm:536) Feb  2 10:14:02 localhost RT: Successful login for 
> > test.account from 10.1.5.9 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth.pm:219)
> 
> Since you're seeing these in /var/log/messages I assume you're using the syslog configuration.
> 
> You want to read about LogToSyslog in etc/RT_Config.pm then copy that setting to RT_SiteConfig.pm and change it to debug.
> 
> Restart RT and try the failed login again.
> 
> -kevin
> 
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston  March 5 & 6, 2012



From van.howell at lcu.edu  Fri Feb  3 13:23:45 2012
From: van.howell at lcu.edu (Howell, Van)
Date: Fri, 3 Feb 2012 18:23:45 +0000
Subject: [rt-users] External Auth using Active Directory 2008
In-Reply-To: <20120203173218.GN5178@jibsheet.com>
References: <84E70F84D007E14BBD13A402719AF27C15832CC1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120201233243.GF5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C15833CF1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120202171716.GL5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C1583405E@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120203173218.GN5178@jibsheet.com>
Message-ID: <84E70F84D007E14BBD13A402719AF27C1583726E@SN2PRD0102MB153.prod.exchangelabs.com>

Here is the debug log for a successful attempt....

[Fri Feb  3 18:20:32 2012] [warning]: Couldn't enable user 28 (/opt/rt4/sbin/../lib/RT/User.pm:1066)
[Fri Feb  3 18:20:32 2012] [info]: User marked as ENABLED ( test.account ) per External Service (, ) (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:274)
[Fri Feb  3 18:20:32 2012] [debug]: RT::Authen::ExternalAuth::CanonicalizeUserInfo called by RT::Authen::ExternalAuth /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm 553 with: Name: test.account (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:450)
[Fri Feb  3 18:20:32 2012] [debug]: Attempting to get user info using this external service: My_LDAP (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:458)
[Fri Feb  3 18:20:32 2012] [debug]: Attempting to use this canonicalization key: Name (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:472)
[Fri Feb  3 18:20:32 2012] [debug]: LDAP Search ===  Base: DC=xxxxxx,DC=xxx,DC=edu == Filter: (&(&(ObjectCategory=User)(ObjectClass=Person))(sAMAccountName=test.account)) == Attrs: l,cn,st,mail,sAMAccountName,co,streetAddress,postalCode,telephoneNumber,sAMAccountName,physicalDeliveryOfficeName,sAMAccountName (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:195)
[Fri Feb  3 18:20:32 2012] [info]: RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Address1: , City: , Country: , EmailAddress: test.account at LCU.EDU, ExternalAuthId: test.account, Gecos: test.account, Name: test.account, Organization: , RealName: Test Account, State: , WorkPhone: , Zip:  (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:536)
[Fri Feb  3 18:20:32 2012] [debug]: UPDATED user ( test.account ) from External Service (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:307)
[Fri Feb  3 18:20:32 2012] [info]: Successful login for test.account from 10.1.5.9 (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:219)
[Fri Feb  3 18:20:32 2012] [debug]: Autohandler called ExternalAuth. Response: (1, Successful login) (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/html/Elements/DoAuth:11)

Van Howell
System Administrator
Lubbock Christian University


-----Original Message-----
From: rt-users-bounces at lists.bestpractical.com [mailto:rt-users-bounces at lists.bestpractical.com] On Behalf Of Kevin Falcone
Sent: Friday, February 03, 2012 11:32 AM
To: rt-users at lists.bestpractical.com
Subject: Re: [rt-users] External Auth using Active Directory 2008

On Thu, Feb 02, 2012 at 06:21:20PM +0000, Howell, Van wrote:
> I added Set($LogToSyslog, "debug"); to my RT_SiteConfig.pm file I 
> don't seem to be getting an more logging.
> I restarted the httpd service, didn't see any more logging so I restarted the server.

Unfortunately - it seems you have syslog itself set to discard debug messages.  You can try turning up $LogToScreen to debug and then check your webserver logs instead of your syslog logs.

-kevin

> This is the entire tail of the messages log....
> 
> [root at OpenNMS etc]# tail /var/log/messages Feb  2 11:56:45 localhost 
> abrtd: Dump directory is a duplicate of 
> /var/spool/abrt/ccpp-2012-02-01-14:08:36-18683
> Feb  2 11:56:45 localhost abrtd: Deleting dump directory 
> ccpp-2012-02-02-11:54:56-2567 (dup of ccpp-2012-02-01-14:08:36-18683), 
> sending dbus signal Feb  2 12:00:42 localhost RT: The actual HTTP_HOST 
> (192.168.1.200) does NOT match the configured WebDomain (lcu.edu). 
> Perhaps you should Set($WebDomain, '192.168.1.200'); in 
> RT_SiteConfig.pm, otherwise your internal links may be broken. 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:05:43 localhost RT: The actual HTTP_HOST (192.168.1.200) 
> does NOT match the configured WebDomain (lcu.edu). Perhaps you should 
> Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, otherwise your 
> internal links may be broken. 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:10:44 localhost RT: The actual HTTP_HOST (192.168.1.200) 
> does NOT match the configured WebDomain (helpdesk.lcu.edu). Perhaps 
> you should Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, 
> otherwise your internal links may be broken. 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:14:00 localhost RT: My_LDAP AUTH FAILED: van.howell 
> (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> uth/LDAP.pm:127) Feb  2 12:14:00 localhost RT: FAILED LOGIN for 
> van.howell from 10.1.5.9 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
> Feb  2 12:15:45 localhost RT: The actual HTTP_HOST (192.168.1.200) 
> does NOT match the configured WebDomain (helpdesk.lcu.edu). Perhaps 
> you should Set($WebDomain, '192.168.1.200'); in RT_SiteConfig.pm, 
> otherwise your internal links may be broken. 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:1087)
> Feb  2 12:16:16 localhost RT: My_LDAP AUTH FAILED: van.howell 
> (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalA
> uth/LDAP.pm:127) Feb  2 12:16:16 localhost RT: FAILED LOGIN for 
> van.howell from 10.1.5.9 
> (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
> 
> Thanks for helping with this.
> 
> Van Howell
> System Administrator
> Lubbock Christian University
> 
> 
> -----Original Message-----
> From: rt-users-bounces at lists.bestpractical.com 
> [mailto:rt-users-bounces at lists.bestpractical.com] On Behalf Of Kevin 
> Falcone
> Sent: Thursday, February 02, 2012 11:17 AM
> To: rt-users at lists.bestpractical.com
> Subject: Re: [rt-users] External Auth using Active Directory 2008
> 
> On Thu, Feb 02, 2012 at 04:16:53PM +0000, Howell, Van wrote:
> > I do not have Debugging turned on. I am going to need some help turning it on since this is new to me.
> > 
> > Here are some errors from /var/log/messages...
> > 
> > This is a failed attempt...
> > 
> > Feb  1 16:02:25 localhost RT: My_LDAP AUTH FAILED mary.servantez 
> > (can't bind: LDAP_INVALID_CREDENTIALS 49 ) 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth/LDAP.pm:82) Feb  1 16:02:25 localhost RT: FAILED LOGIN for 
> > mary.servantez from 10.1.41.95
> > (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
> > 
> > Here is a successful attemt....
> > 
> > Feb  2 10:14:02 localhost RT: 
> > RT::Authen::ExternalAuth::LDAP::GetAuth
> > External Auth OK ( My_LDAP ): test.account 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth/LDAP.pm:139) Feb  2 10:14:02 localhost RT: Couldn't enable user 
> > 28
> > (/opt/rt4/sbin/../lib/RT/User.pm:1066)
> > Feb  2 10:14:02 localhost RT: User marked as ENABLED ( test.account 
> > ) per External Service (, ) 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth.pm:274) Feb  2 10:14:02 localhost RT: 
> > RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Address1: ,
> > City: , Country: , EmailAddress: test.account at LCU.EDU, ExternalAuthId: 
> > test.account, Gecos: test.account, Name: test.account, Organization: 
> > ,
> > RealName: Test Account, State: , WorkPhone: , Zip:  
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth.pm:536) Feb  2 10:14:02 localhost RT: Successful login for 
> > test.account from 10.1.5.9 
> > (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/Externa
> > lA
> > uth.pm:219)
> 
> Since you're seeing these in /var/log/messages I assume you're using the syslog configuration.
> 
> You want to read about LogToSyslog in etc/RT_Config.pm then copy that setting to RT_SiteConfig.pm and change it to debug.
> 
> Restart RT and try the failed login again.
> 
> -kevin
> 
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston  March 5 & 6, 2012



From alekreg at gmail.com  Fri Feb  3 13:31:10 2012
From: alekreg at gmail.com (Alek Cesarz)
Date: Fri, 03 Feb 2012 19:31:10 +0100
Subject: [rt-users] RT-to-RT communication
In-Reply-To: <20120203174206.GP5178@jibsheet.com>
References: <4F1FA64D.2040107@gmail.com> <20120125175130.GH95897@jibsheet.com>
	<4F206A92.9050803@gmail.com> <4F2B02C6.30904@gmail.com>
	<20120203174206.GP5178@jibsheet.com>
Message-ID: <4F2C27EE.1080107@gmail.com>

Kevin Falcone pisze, W dniu 2012-02-03 18:42:
>> Precedence: bulk
> 
> This one ^ is going to cause the CheckForAutoGenerated method to
> return true, which will cause those headers you saw and turn off
> outgoing mail back to the auto generated user.  I'm not sure if there
> is a config you could use to turn this off unfortunately, since RT is
> trying to avoid having a mail loop.

maybe I can add a custom scrip which will "unsquelch" this email
address? the only question is if it will be fired before autoreply is
being sent...

> Do further correspondences on your local ticket sent to the external
> RT?

yes.

-- 
Alek


From ram0502 at gmail.com  Fri Feb  3 13:30:25 2012
From: ram0502 at gmail.com (Ram Moskovitz)
Date: Fri, 3 Feb 2012 10:30:25 -0800
Subject: [rt-users] Filter by requestor email domain
In-Reply-To: 
References: 
	
	
	
Message-ID: 

Yep  changed the comparison from equality (eq) to match reg-exp (=~) and
was a bit more careful with my expression...

  '.*?\@example\.com',

The ? makes the * 'non-greedy' and the back-slashes make the dots literal.

thanks Bart,
ram


On Fri, Feb 3, 2012 at 1:45 AM, Bart  wrote:

> I think your exception list is ok, but this line basically tells the if
> statement that the content needs to exactly match your list:
>
>   return if grep { $ticketRequestor eq lc($_) } @exceptionList;
>
> Instead of eq you could try using =~ instead, below a little info:
>
>
> http://www.troubleshooters.com/codecorn/littperl/perlreg.htm#SymbolExplanations
>
> You might also need to edit the exception list with /@example.com/, or
> something like that.
>
> Maybe someone with a little more programming skills can reply on this ^_^
> I'm not sure if the above would work.
>
> -- Bart
>
>
> Op 2 februari 2012 21:56 schreef Ram Moskovitz  het
> volgende:
>
> Thanks Bart,
>> That looks good. I'm having an issue with it though - I need to match
>> against a regexp for the exception list.. I added an entry like '*@
>> example.com' to @exceptionlist  and rt is still sending out create
>> confirmations. What am I missing?
>> thanks!
>>
>>
>> On Mon, Jan 30, 2012 at 2:41 AM, Bart  wrote:
>>
>>> Hi,
>>>
>>> We had a similar requirement for a bunch of e-mail addresses.
>>>
>>> This can be achieved by editing the autoreply scrip to look something
>>> like this:
>>>
>>>    - Condition: User Defined
>>>    - Action: Auto Reply To Requestors
>>>    - Template: Your AutoReply template
>>>    - Stage: TransactionCreate
>>>    - Custom Condition:
>>>
>>>
>>> my @exceptionList = ('name1 at example.com',
>>>                      'name2 at example.com',
>>>                      'name3 at example.com');
>>>
>>> my $transactionType = $self->TransactionObj->Type;
>>> my $ticketRequestor = lc($self->TicketObj->RequestorAddresses);
>>> my $trans = $self->TransactionObj;
>>>
>>> if ($transactionType eq 'Create') {
>>>   return if grep { $ticketRequestor eq lc($_) } @exceptionList;
>>>   my $msgattr = $trans->Message->First;
>>>   return 0 unless $msgattr;
>>>   return 1 if $msgattr->GetHeader('Received');
>>> }
>>> return 0;
>>>
>>> In addition the above only sends an autoreply when someone sends an
>>> e-mail, in our case we don't like the autoreply mails when we manually
>>> create a ticket (e.g. via quick create).
>>>
>>> Hope this helps.
>>>
>>> -- Bart
>>>
>>>
>>> Op 25 januari 2012 21:02 schreef Ram Moskovitz  het
>>> volgende:
>>>
>>>>  Hey there,
>>>> I'm looking to not auto-reply on create to inbound emails from a
>>>> certain domain ( anything at example.com and even anything at sd.example.com).
>>>> I suppose the right way to go about this is via user defined condition in
>>>> the global scrip for autoreply on create. I have steps 1 and 3.. what's
>>>> step 2?
>>>>
>>>> 1 return 0 unless $self->TransactionObj->Type eq "Create";
>>>> 2 return 0 if #self->TicketObj->????
>>>> 3 return 1
>>>>
>>>> thanks
>>>> ram
>>>>
>>>>
>>>> --------
>>>> RT Training Sessions (http://bestpractical.com/services/training.html)
>>>> * Boston ? March 5 & 6, 2012
>>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From jblaine at kickflop.net  Fri Feb  3 13:34:52 2012
From: jblaine at kickflop.net (Jeff Blaine)
Date: Fri, 03 Feb 2012 13:34:52 -0500
Subject: [rt-users] [rt 4.0.4] Unable to change status from New -> Open
In-Reply-To: <20120203175209.GR5178@jibsheet.com>
References: <4F2BFEE7.9020802@potsdam.edu> <20120203172756.GM5178@jibsheet.com>
	<0ea399dacc69f6c3501501b5e0429368.squirrel@bearmail.potsdam.edu>
	<20120203175209.GR5178@jibsheet.com>
Message-ID: <4F2C28CC.301@kickflop.net>

> You really want all local configs in RT_SiteConfig.pm, not
> RT_Config.pm.  Next time you upgrade, any changes to RT_Config.pm will
> be blown away.

Why doesn't Best Practical just do away this idea?

1. make install
       put new RT_Config.pm in place
       make a new 'RT_SiteConfig' help document from it (yes, Site)
       if there is an RT_SiteConfig.pm in place
           leave it alone
       else
           cp RT_Config.pm RT_SiteConfig.pm

2. Never mention "RT_Config.pm" anywhere.  Mention
    the help document you made from it.

[ Yes, I use RT_SiteConfig.pm, the gigantic WARNING ]
[ block in RT_Config.pm was obvious to me           ]


From mfuller at bandtel.com  Fri Feb  3 13:39:15 2012
From: mfuller at bandtel.com (Mark Fuller)
Date: Fri, 3 Feb 2012 13:39:15 -0500
Subject: [rt-users] rt-crontool question
Message-ID: 

I have 3 things we did from cron we updated to 4.0.2 from 3.6 and they
don?t work now. Can someone advise what I have to change



## At 3 am everyday send a notification to the requestors of tickets in
custpndng untouched for 3 days

30 3 */1 * * root /opt/rt4/bin/rt-crontool --search
RT::Search::TicketsWithStatus --search-arg custpndng --condition
RT::Condition::UntouchedInHours --condition-arg 72 --action
RT::Action::NotifyFromRTSystem --action-arg Requestor --template-id 20
--verbose > /var/log/cpend7daynotifyrequestor.out

#

## At 3 am everyday resolve tickets in custpndng untouched for 17 days

0 3 */1 * * root /opt/rt4/bin/rt-crontool --search
RT::Search::TicketsWithStatus --search-arg custpndng --condition
RT::Condition::UntouchedInHours --condition-arg 168 --action
RT::Action::SetStatus --action-arg resolved --verbose >
/var/log/cpend14dayresolve.out

#

## At 3 am everyday send a notification to the owners of open tickets
untouched in 1 days

45 3 */1 * * root /opt/rt4/bin/rt-crontool --search
RT::Search::TicketsWithStatus --search-arg open --condition
RT::Condition::UntouchedInHours --condition-arg 24 --action
RT::Action::NotifyFromRTSystem --action-arg Owner --template-id 21
--verbose > /var/log/open3daynotifyowner.out





I get an error when they run



[crit]: Failed to load module RT::Search::TicketsWithStatus. () at
/opt/rt4/bin/rt-crontool line 307. (/opt/rt4/bin/../lib/RT.pm:340)

Failed to load module RT::Search::TicketsWithStatus. () at
/opt/rt4/bin/rt-crontool line 307.



Thanks





Mark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From hvgeekwtrvl at gmail.com  Fri Feb  3 13:55:57 2012
From: hvgeekwtrvl at gmail.com (james machado)
Date: Fri, 3 Feb 2012 10:55:57 -0800
Subject: [rt-users] External Auth using Active Directory 2008
In-Reply-To: 
References: <84E70F84D007E14BBD13A402719AF27C15832CC1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120201233243.GF5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C15833CF1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120202171716.GL5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C1583405E@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120203173218.GN5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C1583726E@SN2PRD0102MB153.prod.exchangelabs.com>
	
Message-ID: 

On Fri, Feb 3, 2012 at 10:55 AM, james machado  wrote:
> I would use ldapsearch on that machine to make sure you can bind to
> the AD server using the login credentials in your Site_Config. ?Make
> sure you are using the proper certificates to connect via the TLS you
> have configured. ?I've noticed that being one of the biggest problems
> with ldap and Windows 2008 and 2008 R2 AD servers.
>
> james


From falcone at bestpractical.com  Fri Feb  3 13:59:25 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Fri, 3 Feb 2012 13:59:25 -0500
Subject: [rt-users] [rt 4.0.4] Unable to change status from New -> Open
In-Reply-To: <4F2C28CC.301@kickflop.net>
References: <4F2BFEE7.9020802@potsdam.edu> <20120203172756.GM5178@jibsheet.com>
	<0ea399dacc69f6c3501501b5e0429368.squirrel@bearmail.potsdam.edu>
	<20120203175209.GR5178@jibsheet.com> <4F2C28CC.301@kickflop.net>
Message-ID: <20120203185925.GS5178@jibsheet.com>

On Fri, Feb 03, 2012 at 01:34:52PM -0500, Jeff Blaine wrote:
> >You really want all local configs in RT_SiteConfig.pm, not
> >RT_Config.pm.  Next time you upgrade, any changes to RT_Config.pm will
> >be blown away.
> 
> Why doesn't Best Practical just do away this idea?
> 
> 1. make install
>       put new RT_Config.pm in place
>       make a new 'RT_SiteConfig' help document from it (yes, Site)
>       if there is an RT_SiteConfig.pm in place
>           leave it alone
>       else
>           cp RT_Config.pm RT_SiteConfig.pm
> 
> 2. Never mention "RT_Config.pm" anywhere.  Mention
>    the help document you made from it.

Because having an RT_SiteConfig.pm that is the same as RT_Config.pm
means that RT can never tell you if you overrode the setting.
Go look at the System Configuration page, note that for each setting
it says core vs site.  That's a tremendously useful piece of
information.

Also keep in mind that RT can read from 3, 4 or even 5 local config
files so you can keep your setting distinct.

Having a sparse RT_SiteConfig.pm also makes it trivial as a sysadmin
to tell what you've changed locally, especially when looking back
through your source control.

The solution here is not more separation of the config files, but
moving more configuration into the database which is something that is
being worked on.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Fri Feb  3 14:01:15 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Fri, 3 Feb 2012 14:01:15 -0500
Subject: [rt-users] rt-crontool question
In-Reply-To: 
References: 
Message-ID: <20120203190115.GT5178@jibsheet.com>

On Fri, Feb 03, 2012 at 01:39:15PM -0500, Mark Fuller wrote:
>    I have 3 things we did from cron we updated to 4.0.2 from 3.6 and they don*t work now. Can
>    someone advise what I have to change
> 
>    ## At 3 am everyday send a notification to the requestors of tickets in custpndng untouched
>    for 3 days
> 
>    30 3 */1 * * root /opt/rt4/bin/rt-crontool --search RT::Search::TicketsWithStatus --search-arg

RT::Search::TicketsWithStatus isn't an RT built-in.  You'll either
need to port this customization from your 3.6 install or replace it with
RT::Search::FromSQL and an arg of something like  Status = 'custpndng'

-kevin

>    custpndng --condition RT::Condition::UntouchedInHours --condition-arg 72 --action
>    RT::Action::NotifyFromRTSystem --action-arg Requestor --template-id 20 --verbose >
>    /var/log/cpend7daynotifyrequestor.out
> 
>    #
> 
>    ## At 3 am everyday resolve tickets in custpndng untouched for 17 days
> 
>    0 3 */1 * * root /opt/rt4/bin/rt-crontool --search RT::Search::TicketsWithStatus --search-arg
>    custpndng --condition RT::Condition::UntouchedInHours --condition-arg 168 --action
>    RT::Action::SetStatus --action-arg resolved --verbose > /var/log/cpend14dayresolve.out
> 
>    #
> 
>    ## At 3 am everyday send a notification to the owners of open tickets untouched in 1 days
> 
>    45 3 */1 * * root /opt/rt4/bin/rt-crontool --search RT::Search::TicketsWithStatus --search-arg
>    open --condition RT::Condition::UntouchedInHours --condition-arg 24 --action
>    RT::Action::NotifyFromRTSystem --action-arg Owner --template-id 21 --verbose >
>    /var/log/open3daynotifyowner.out
> 
>    I get an error when they run
> 
>    [crit]: Failed to load module RT::Search::TicketsWithStatus. () at /opt/rt4/bin/rt-crontool
>    line 307. (/opt/rt4/bin/../lib/RT.pm:340)
> 
>    Failed to load module RT::Search::TicketsWithStatus. () at /opt/rt4/bin/rt-crontool line 307.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Fri Feb  3 14:05:35 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Fri, 3 Feb 2012 14:05:35 -0500
Subject: [rt-users] External Auth using Active Directory 2008
In-Reply-To: <84E70F84D007E14BBD13A402719AF27C158371A4@SN2PRD0102MB153.prod.exchangelabs.com>
References: <84E70F84D007E14BBD13A402719AF27C15832CC1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120201233243.GF5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C15833CF1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120202171716.GL5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C1583405E@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120203173218.GN5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C158371A4@SN2PRD0102MB153.prod.exchangelabs.com>
Message-ID: <20120203190535.GU5178@jibsheet.com>

On Fri, Feb 03, 2012 at 06:08:46PM +0000, Howell, Van wrote:
> Here is the Apache Log from my last login attempt....
> 
> [Fri Feb  3 18:02:40 2012] [debug]: Found LDAP DN: CN=Howell\, Van,OU=Staff,OU=LCU,DC=xxxxxx,DC=xxx,DC=edu (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:75)

There was a bug reported about commas in DNs causing problems, I
wonder if you're running afoul of that (note that your testuser has a
different CN).

You can try with 0.09_02 which my colleague released last week and is
available on CPAN.  It contains a bugfix for this.

-kevin

> [Fri Feb  3 18:02:40 2012] [debug]: LDAP Search ===  Base: DC=xxxxxx,DC=xxx,DC=edu == Filter: (member=CN=Howell, Van,OU=Staff,OU=LCU,DC=xxxxxx,DC=xxx,DC=edu) == Attrs: dn (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:100)
> [Fri Feb  3 18:02:40 2012] [info]: My_LDAP AUTH FAILED: van.howell (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:127)
> [Fri Feb  3 18:02:40 2012] [debug]: LDAP password validation result: 0 (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:334)
> [Fri Feb  3 18:02:40 2012] [debug]: Password Validation Check Result:  0 (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:159)
> [Fri Feb  3 18:02:40 2012] [debug]: Autohandler called ExternalAuth. Response: (0, Password Invalid) (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/html/Elements/DoAuth:11)
> [Fri Feb  3 18:02:40 2012] [error]: FAILED LOGIN for van.howell from 10.1.5.9 (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From jblaine at kickflop.net  Fri Feb  3 14:21:22 2012
From: jblaine at kickflop.net (Jeff Blaine)
Date: Fri, 03 Feb 2012 14:21:22 -0500
Subject: [rt-users] [rt 4.0.4] Unable to change status from New -> Open
In-Reply-To: <20120203185925.GS5178@jibsheet.com>
References: <4F2BFEE7.9020802@potsdam.edu> <20120203172756.GM5178@jibsheet.com>
	<0ea399dacc69f6c3501501b5e0429368.squirrel@bearmail.potsdam.edu>
	<20120203175209.GR5178@jibsheet.com> <4F2C28CC.301@kickflop.net>
	<20120203185925.GS5178@jibsheet.com>
Message-ID: <4F2C33B2.4000405@kickflop.net>

> Because having an RT_SiteConfig.pm that is the same as RT_Config.pm
> means that RT can never tell you if you overrode the setting.

Sure it can.  In those rare needs, the code can just compare
the value in RT_Config.pm to the one in RT_SiteConfig.pm.
If they're the same, it was not overridden.

> Also keep in mind that RT can read from 3, 4 or even 5 local config
> files so you can keep your setting distinct.
>
> Having a sparse RT_SiteConfig.pm also makes it trivial as a sysadmin
> to tell what you've changed locally, especially when looking back
> through your source control.

Isn't that what revision diffs are for?

But okay.  Just had to throw the idea out there.


From Michele.Hershey.ctr at mhpcc.hpc.mil  Fri Feb  3 15:00:19 2012
From: Michele.Hershey.ctr at mhpcc.hpc.mil (Michele Hershey, CTR)
Date: Fri, 3 Feb 2012 10:00:19 -1000
Subject: [rt-users] RT stripping FROM on internal emails
Message-ID: <9FAE6778383ED0468A5DAFD0CB5389663FE468C085@ex1.ds.mhpcc.hpc.mil>




Curiously, when an unprivileged RT users is sent a comment and they reply (internal users only...same domain as RT), the FROM is stripped and the comment in not entered into RT.  This used to work about 6 months ago.

What did we change?  That is an long list.

Here is the error message:
==============
(/var/log/messages)

Feb  2 15:01:38 rt3 RT: Permission Denied (/opt/rt3/bin/../lib/RT/Interface/Email.pm:244)
Feb  2 15:01:38 rt3 RT: Could not record email: Message not recorded: Permission Denied
(/opt/rt-3.8.8/share/html/REST/1.0/NoAuth/mail-gateway:75)
=================

Any place we could start looking would be helpful.  

Thanks,
Mich


 

From falcone at bestpractical.com  Fri Feb  3 16:58:38 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Fri, 3 Feb 2012 16:58:38 -0500
Subject: [rt-users] [rt 4.0.4] Unable to change status from New -> Open
In-Reply-To: <4F2C33B2.4000405@kickflop.net>
References: <4F2BFEE7.9020802@potsdam.edu> <20120203172756.GM5178@jibsheet.com>
	<0ea399dacc69f6c3501501b5e0429368.squirrel@bearmail.potsdam.edu>
	<20120203175209.GR5178@jibsheet.com> <4F2C28CC.301@kickflop.net>
	<20120203185925.GS5178@jibsheet.com>
	<4F2C33B2.4000405@kickflop.net>
Message-ID: <20120203215838.GV5178@jibsheet.com>

On Fri, Feb 03, 2012 at 02:21:22PM -0500, Jeff Blaine wrote:
> >Because having an RT_SiteConfig.pm that is the same as RT_Config.pm
> >means that RT can never tell you if you overrode the setting.
> 
> Sure it can.  In those rare needs, the code can just compare
> the value in RT_Config.pm to the one in RT_SiteConfig.pm.
> If they're the same, it was not overridden.

That's not how RT's Config system works.
If you'd be interested in providing a patch to support this,
lib/RT/Config.pm is the right place to start.

> >Also keep in mind that RT can read from 3, 4 or even 5 local config
> >files so you can keep your setting distinct.
> >
> >Having a sparse RT_SiteConfig.pm also makes it trivial as a sysadmin
> >to tell what you've changed locally, especially when looking back
> >through your source control.
> 
> Isn't that what revision diffs are for?
> 
> But okay.  Just had to throw the idea out there.

You have revision diffs, I do too, that's an unusual situation.
Also, when you're handed an 8 year old RT install, it's easier to tell
what the maintainer who left 5 years ago did.

Again, the solution is probably to push more things into the DB where
we can have better control.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From sbenson at a-1networks.com  Fri Feb  3 17:25:15 2012
From: sbenson at a-1networks.com (Scott Benson)
Date: Fri, 03 Feb 2012 14:25:15 -0800
Subject: [rt-users] 4.0.2 upgrade to 4.0.5
Message-ID: <4F2C5ECB.6020007@a-1networks.com>

I have an RT 4.0.2 box that I'd like to update to the newest 
version(4.0.5).  Are there any database changes, or anything that I 
should watch out for while upgrading?  Is there a walk through available 
for an upgrade like this?  Thanks in advance.

-- 
Scott Benson
System Administrator | A1 Networks
Voice: 707-703-1043

For support issues please email support at a-1networks.com or call 707-703-1050



From falcone at bestpractical.com  Fri Feb  3 17:30:03 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Fri, 3 Feb 2012 17:30:03 -0500
Subject: [rt-users] RT stripping FROM on internal emails
In-Reply-To: <9FAE6778383ED0468A5DAFD0CB5389663FE468C085@ex1.ds.mhpcc.hpc.mil>
References: <9FAE6778383ED0468A5DAFD0CB5389663FE468C085@ex1.ds.mhpcc.hpc.mil>
Message-ID: <20120203223003.GW5178@jibsheet.com>

On Fri, Feb 03, 2012 at 10:00:19AM -1000, Michele Hershey, CTR wrote:
> 
> Curiously, when an unprivileged RT users is sent a comment and they
> reply (internal users only...same domain as RT), the FROM is stripped
> and the comment in not entered into RT. This used to work about 6
> months ago.
> 
> What did we change?  That is an long list.
> 
> Here is the error message:
> ==============
> (/var/log/messages)
> 
> Feb  2 15:01:38 rt3 RT: Permission Denied (/opt/rt3/bin/../lib/RT/Interface/Email.pm:244)
> Feb  2 15:01:38 rt3 RT: Could not record email: Message not recorded: Permission Denied
> (/opt/rt-3.8.8/share/html/REST/1.0/NoAuth/mail-gateway:75)
> =================
> 
> Any place we could start looking would be helpful.  

You can turn your logs up to debug and have them try again.
You probably removed Comment rights from Unprivileged users and left
them Reply rights, although I am confused by what is being stripped.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From kenn.crocker at gmail.com  Fri Feb  3 17:49:38 2012
From: kenn.crocker at gmail.com (Kenneth Crocker)
Date: Fri, 3 Feb 2012 14:49:38 -0800
Subject: [rt-users] RT stripping FROM on internal emails
In-Reply-To: <20120203223003.GW5178@jibsheet.com>
References: <9FAE6778383ED0468A5DAFD0CB5389663FE468C085@ex1.ds.mhpcc.hpc.mil>
	<20120203223003.GW5178@jibsheet.com>
Message-ID: 

Yep. Kevin's answer is better. Can't think right now. Must be the Superbowl
effect.
On Feb 3, 2012 5:30 PM, "Kevin Falcone"  wrote:

> On Fri, Feb 03, 2012 at 10:00:19AM -1000, Michele Hershey, CTR wrote:
> >
> > Curiously, when an unprivileged RT users is sent a comment and they
> > reply (internal users only...same domain as RT), the FROM is stripped
> > and the comment in not entered into RT. This used to work about 6
> > months ago.
> >
> > What did we change?  That is an long list.
> >
> > Here is the error message:
> > ==============
> > (/var/log/messages)
> >
> > Feb  2 15:01:38 rt3 RT: Permission Denied
> (/opt/rt3/bin/../lib/RT/Interface/Email.pm:244)
> > Feb  2 15:01:38 rt3 RT: Could not record email: Message not recorded:
> Permission Denied
> > (/opt/rt-3.8.8/share/html/REST/1.0/NoAuth/mail-gateway:75)
> > =================
> >
> > Any place we could start looking would be helpful.
>
> You can turn your logs up to debug and have them try again.
> You probably removed Comment rights from Unprivileged users and left
> them Reply rights, although I am confused by what is being stripped.
>
> -kevin
>
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston ? March 5 & 6, 2012
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From mfuller at bandtel.com  Fri Feb  3 18:12:57 2012
From: mfuller at bandtel.com (Mark Fuller)
Date: Fri, 3 Feb 2012 18:12:57 -0500
Subject: [rt-users] rt-crontool question
In-Reply-To: <20120203190115.GT5178@jibsheet.com>
References: 
	<20120203190115.GT5178@jibsheet.com>
Message-ID: 

That worked for the most part but now it has an issue sending out the
email using  SendEmailFromRTSystem  it breaks on

my $creator = $self->TransactionObj->CreatorObj->EmailAddress();

I have tried several other actions and they all do the same thing

Any suggestions

Mark

-----Original Message-----
From: rt-users-bounces at lists.bestpractical.com
[mailto:rt-users-bounces at lists.bestpractical.com] On Behalf Of Kevin
Falcone
Sent: Friday, February 03, 2012 2:01 PM
To: rt-users at lists.bestpractical.com
Subject: Re: [rt-users] rt-crontool question

On Fri, Feb 03, 2012 at 01:39:15PM -0500, Mark Fuller wrote:
>    I have 3 things we did from cron we updated to 4.0.2 from 3.6 and
they don*t work now. Can
>    someone advise what I have to change
>
>    ## At 3 am everyday send a notification to the requestors of tickets
in custpndng untouched
>    for 3 days
>
>    30 3 */1 * * root /opt/rt4/bin/rt-crontool --search
RT::Search::TicketsWithStatus --search-arg

RT::Search::TicketsWithStatus isn't an RT built-in.  You'll either
need to port this customization from your 3.6 install or replace it with
RT::Search::FromSQL and an arg of something like  Status = 'custpndng'

-kevin

>    custpndng --condition RT::Condition::UntouchedInHours --condition-arg
72 --action
>    RT::Action::NotifyFromRTSystem --action-arg Requestor --template-id
20 --verbose >
>    /var/log/cpend7daynotifyrequestor.out
>
>    #
>
>    ## At 3 am everyday resolve tickets in custpndng untouched for 17
days
>
>    0 3 */1 * * root /opt/rt4/bin/rt-crontool --search
RT::Search::TicketsWithStatus --search-arg
>    custpndng --condition RT::Condition::UntouchedInHours --condition-arg
168 --action
>    RT::Action::SetStatus --action-arg resolved --verbose >
/var/log/cpend14dayresolve.out
>
>    #
>
>    ## At 3 am everyday send a notification to the owners of open tickets
untouched in 1 days
>
>    45 3 */1 * * root /opt/rt4/bin/rt-crontool --search
RT::Search::TicketsWithStatus --search-arg
>    open --condition RT::Condition::UntouchedInHours --condition-arg 24
--action
>    RT::Action::NotifyFromRTSystem --action-arg Owner --template-id 21
--verbose >
>    /var/log/open3daynotifyowner.out
>
>    I get an error when they run
>
>    [crit]: Failed to load module RT::Search::TicketsWithStatus. () at
/opt/rt4/bin/rt-crontool
>    line 307. (/opt/rt4/bin/../lib/RT.pm:340)
>
>    Failed to load module RT::Search::TicketsWithStatus. () at
/opt/rt4/bin/rt-crontool line 307.


From van.howell at lcu.edu  Fri Feb  3 18:17:18 2012
From: van.howell at lcu.edu (Howell, Van)
Date: Fri, 3 Feb 2012 23:17:18 +0000
Subject: [rt-users] External Auth using Active Directory 2008
In-Reply-To: <20120203190535.GU5178@jibsheet.com>
References: <84E70F84D007E14BBD13A402719AF27C15832CC1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120201233243.GF5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C15833CF1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120202171716.GL5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C1583405E@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120203173218.GN5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C158371A4@SN2PRD0102MB153.prod.exchangelabs.com>,
	<20120203190535.GU5178@jibsheet.com>
Message-ID: <84E70F84D007E14BBD13A402719AF27C158377D2@SN2PRD0102MB153.prod.exchangelabs.com>

I ran the install again, The version it put on is 0.09
FALCONE/RT-Authen-ExternalAuth-0.09.tar.gz

Not the new version. I still have the same problem

I shelled into CPAN 
perl -MCPAN -e shell

then I ran 
install RT::Authen::ExternalAuth

Is there a different way?

Sorry for the dumb questions, but I'm new to this.

Van
________________________________________
From: rt-users-bounces at lists.bestpractical.com [rt-users-bounces at lists.bestpractical.com] on behalf of Kevin Falcone [falcone at bestpractical.com]
Sent: Friday, February 03, 2012 1:05 PM
To: rt-users at lists.bestpractical.com
Subject: Re: [rt-users] External Auth using Active Directory 2008

On Fri, Feb 03, 2012 at 06:08:46PM +0000, Howell, Van wrote:
> Here is the Apache Log from my last login attempt....
>
> [Fri Feb  3 18:02:40 2012] [debug]: Found LDAP DN: CN=Howell\, Van,OU=Staff,OU=LCU,DC=xxxxxx,DC=xxx,DC=edu (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:75)

There was a bug reported about commas in DNs causing problems, I
wonder if you're running afoul of that (note that your testuser has a
different CN).

You can try with 0.09_02 which my colleague released last week and is
available on CPAN.  It contains a bugfix for this.

-kevin

> [Fri Feb  3 18:02:40 2012] [debug]: LDAP Search ===  Base: DC=xxxxxx,DC=xxx,DC=edu == Filter: (member=CN=Howell, Van,OU=Staff,OU=LCU,DC=xxxxxx,DC=xxx,DC=edu) == Attrs: dn (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:100)
> [Fri Feb  3 18:02:40 2012] [info]: My_LDAP AUTH FAILED: van.howell (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm:127)
> [Fri Feb  3 18:02:40 2012] [debug]: LDAP password validation result: 0 (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:334)
> [Fri Feb  3 18:02:40 2012] [debug]: Password Validation Check Result:  0 (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:159)
> [Fri Feb  3 18:02:40 2012] [debug]: Autohandler called ExternalAuth. Response: (0, Password Invalid) (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/html/Elements/DoAuth:11)
> [Fri Feb  3 18:02:40 2012] [error]: FAILED LOGIN for van.howell from 10.1.5.9 (/opt/rt4/sbin/../lib/RT/Interface/Web.pm:655)



From falcone at bestpractical.com  Fri Feb  3 18:51:40 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Fri, 3 Feb 2012 18:51:40 -0500
Subject: [rt-users] rt-crontool question
In-Reply-To: 
References: 
	<20120203190115.GT5178@jibsheet.com>
	
Message-ID: <20120203235140.GX5178@jibsheet.com>

On Fri, Feb 03, 2012 at 06:12:57PM -0500, Mark Fuller wrote:
> That worked for the most part but now it has an issue sending out the
> email using  SendEmailFromRTSystem  it breaks on
> 
> my $creator = $self->TransactionObj->CreatorObj->EmailAddress();
> 
> I have tried several other actions and they all do the same thing


I forgot to mention that SendEmailFromRTSysten is *also* a custom
action you'll need to forward port.  You might get away with the
Notify action, you'll definitely need to provide the --transaction
command line argument, which you can read more about in the initial
--help.

-kevin

> 
> -----Original Message-----
> From: rt-users-bounces at lists.bestpractical.com
> [mailto:rt-users-bounces at lists.bestpractical.com] On Behalf Of Kevin
> Falcone
> Sent: Friday, February 03, 2012 2:01 PM
> To: rt-users at lists.bestpractical.com
> Subject: Re: [rt-users] rt-crontool question
> 
> On Fri, Feb 03, 2012 at 01:39:15PM -0500, Mark Fuller wrote:
> >    I have 3 things we did from cron we updated to 4.0.2 from 3.6 and
> they don*t work now. Can
> >    someone advise what I have to change
> >
> >    ## At 3 am everyday send a notification to the requestors of tickets
> in custpndng untouched
> >    for 3 days
> >
> >    30 3 */1 * * root /opt/rt4/bin/rt-crontool --search
> RT::Search::TicketsWithStatus --search-arg
> 
> RT::Search::TicketsWithStatus isn't an RT built-in.  You'll either
> need to port this customization from your 3.6 install or replace it with
> RT::Search::FromSQL and an arg of something like  Status = 'custpndng'
> 
> -kevin
> 
> >    custpndng --condition RT::Condition::UntouchedInHours --condition-arg
> 72 --action
> >    RT::Action::NotifyFromRTSystem --action-arg Requestor --template-id
> 20 --verbose >
> >    /var/log/cpend7daynotifyrequestor.out
> >
> >    #
> >
> >    ## At 3 am everyday resolve tickets in custpndng untouched for 17
> days
> >
> >    0 3 */1 * * root /opt/rt4/bin/rt-crontool --search
> RT::Search::TicketsWithStatus --search-arg
> >    custpndng --condition RT::Condition::UntouchedInHours --condition-arg
> 168 --action
> >    RT::Action::SetStatus --action-arg resolved --verbose >
> /var/log/cpend14dayresolve.out
> >
> >    #
> >
> >    ## At 3 am everyday send a notification to the owners of open tickets
> untouched in 1 days
> >
> >    45 3 */1 * * root /opt/rt4/bin/rt-crontool --search
> RT::Search::TicketsWithStatus --search-arg
> >    open --condition RT::Condition::UntouchedInHours --condition-arg 24
> --action
> >    RT::Action::NotifyFromRTSystem --action-arg Owner --template-id 21
> --verbose >
> >    /var/log/open3daynotifyowner.out
> >
> >    I get an error when they run
> >
> >    [crit]: Failed to load module RT::Search::TicketsWithStatus. () at
> /opt/rt4/bin/rt-crontool
> >    line 307. (/opt/rt4/bin/../lib/RT.pm:340)
> >
> >    Failed to load module RT::Search::TicketsWithStatus. () at
> /opt/rt4/bin/rt-crontool line 307.
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston  March 5 & 6, 2012
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Fri Feb  3 18:52:45 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Fri, 3 Feb 2012 18:52:45 -0500
Subject: [rt-users] 4.0.2 upgrade to 4.0.5
In-Reply-To: <4F2C5ECB.6020007@a-1networks.com>
References: <4F2C5ECB.6020007@a-1networks.com>
Message-ID: <20120203235245.GY5178@jibsheet.com>

On Fri, Feb 03, 2012 at 02:25:15PM -0800, Scott Benson wrote:
> I have an RT 4.0.2 box that I'd like to update to the newest
> version(4.0.5).  Are there any database changes, or anything that I
> should watch out for while upgrading?  Is there a walk through
> available for an upgrade like this?  Thanks in advance.

There are database upgrades, as the README specifies, you can run make
upgrade-database and it'll prompt you for your version.

All of the documentation you need is in the README and the
docs/UPGRADING-4.0 file.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From sbenson at a-1networks.com  Fri Feb  3 19:06:29 2012
From: sbenson at a-1networks.com (Scott Benson)
Date: Fri, 03 Feb 2012 16:06:29 -0800
Subject: [rt-users] 4.0.2 upgrade to 4.0.5
In-Reply-To: <20120203235245.GY5178@jibsheet.com>
References: <4F2C5ECB.6020007@a-1networks.com>
	<20120203235245.GY5178@jibsheet.com>
Message-ID: <4F2C7685.2090801@a-1networks.com>

well, after attempting to update, we're getting this

    * Config file /opt/rt4/etc/RT_SiteConfig.pm is locked

The file isn't opened by anything, it's not listed in lsof, no .swp file 
or anything.  Thanks in advance.

-- 
Scott Benson
System Administrator | A1 Networks
Voice: 707-703-1043

For support issues please email support at a-1networks.com or call 707-703-1050


On 2/3/12 3:52 PM, Kevin Falcone wrote:
> There are database upgrades, as the README specifies, you can run make
> upgrade-database and it'll prompt you for your version.
>
> All of the documentation you need is in the README and the
> docs/UPGRADING-4.0 file.
>
> -kevin


From falcone at bestpractical.com  Fri Feb  3 19:17:11 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Fri, 3 Feb 2012 19:17:11 -0500
Subject: [rt-users] 4.0.2 upgrade to 4.0.5
In-Reply-To: <4F2C7685.2090801@a-1networks.com>
References: <4F2C5ECB.6020007@a-1networks.com>
	<20120203235245.GY5178@jibsheet.com>
	<4F2C7685.2090801@a-1networks.com>
Message-ID: <20120204001711.GZ5178@jibsheet.com>

On Fri, Feb 03, 2012 at 04:06:29PM -0800, Scott Benson wrote:
> 
> On 2/3/12 3:52 PM, Kevin Falcone wrote:
> >There are database upgrades, as the README specifies, you can run make
> >upgrade-database and it'll prompt you for your version.
> >
> >All of the documentation you need is in the README and the
> >docs/UPGRADING-4.0 file.

> well, after attempting to update, we're getting this
> 
>    * Config file /opt/rt4/etc/RT_SiteConfig.pm is locked
> 
> The file isn't opened by anything, it's not listed in lsof, no .swp
> file or anything.  Thanks in advance.

This implies that your RT has gone into Install mode.
Have you looked in the RT logs?  Most of the time, this is because
your database server is unreachable.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From bmartins at galileu.pt  Sat Feb  4 17:21:07 2012
From: bmartins at galileu.pt (Bruno Martins)
Date: Sat, 4 Feb 2012 22:21:07 +0000
Subject: [rt-users] [SOLVED] Problem configuring AD integration
Message-ID: <1510549EAAD18048862A0BB9D6458812348ED0@WISEXC02.wiseplatforms.local>

From: rt-users-bounces at lists.bestpractical.com [rt-users-bounces at lists.bestpractical.com] on behalf of Kevin Falcone [falcone at bestpractical.com]
Sent: Thursday, February 02, 2012 5:15 PM
To: rt-users at lists.bestpractical.com
Subject: Re: [rt-users] Problem configuring AD integration

On Thu, Feb 02, 2012 at 04:21:48PM +0000, Bruno Martins wrote:
> Can't call method "as_string" on an undefined value at /opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth/LDAP.pm line 304.
>
> I've followed instructions at http://requesttracker.wikia.com/wiki/ExternalAuth to set this up.

I suggest the docs in the config and with the module over anything on
the wiki.

> Set($ExternalAuthPriority,  [   'My_LDAP',
>                                 'My_MySQL',
>                                 'My_SSO_Cookie'
>                             ]
> );
>
> Set($ExternalInfoPriority,  [   'My_MySQL',
>                                 'My_LDAP'
>                             ]
> );

Why do you have all of these turned on? You've only configured
My_LDAP. Telling RT to look into a misconfigured My_MySQL will only
cause other errors.

The config as shipped is an example and you should remove the pieces
you aren't using.

>                                 'My_LDAP'       =>  {   ## GENERIC SECTION
>                                                         # The type of service (db/ldap/cookie)
>                                                         'type'                      =>  'ldap',
>                                                         # The server hosting the service
>                                                         'server'                    =>  'jupiter.galileu-f.galileu.pt',
>                                                         ## SERVICE-SPECIFIC SECTION
>                                                         # If you can bind to your LDAP server anonymously you should
>                                                         # remove the user and pass config lines, otherwise specify them here:
>                                                         #
>                                                         # The username RT should use to connect to the LDAP server
>                                                         'user'                      =>  'ldap_domainadmin',
>                                                         # The password RT should use to connect to the LDAP server
>                                                         'pass'                    =>  'ldap_password',
>                                                         #
>                                                         # The LDAP search base
>                                                         'base'                      =>  'dc=galileu-f,dc=galileu,dc=pt',
>                                                         #
>                                                         # ALL FILTERS MUST BE VALID LDAP FILTERS ENCASED IN PARENTHESES!

See this doc ^

>                                                         # YOU **MUST** SPECIFY A filter AND A d_filter!!
>                                                         #
>                                                         # The filter to use to match RT-Users
>                                                         'filter'                    =>  'objectClass=*',

You're missing parens on this filter which I believe is causing your
problem.

>                                                         # A catch-all example filter: '(objectClass=*)'
>                                                         #
>                                                         # The filter that will only match disabled users
>                                                         'd_filter'                  =>  'UserAccountControl:1.2.840.113556.1.4.803:=2',
>                                                         # A catch-none example d_filter: '(objectClass=FooBarBaz)'
>                                                         #
>                                                         # Should we try to use TLS to encrypt connections?
>                                                         'tls'                       =>  0,
>                                                         # SSL Version to provide to Net::SSLeay *if* using SSL
>                                                         'ssl_version'               =>  3,
>                                                         # What other args should I pass to Net::LDAP->new($host, at args)?
>                                                         'net_ldap_args'             => [    version =>  3 , port => 3268  ],
>                                                         # Does authentication depend on group membership? What group name?
>                                                         #'group'                     =>  'GROUP_NAME',
>                                                         # What is the attribute for the group object that determines membership?
>                                                         #'group_attr'                =>  'GROUP_ATTR',
>                                                         ## RT ATTRIBUTE MATCHING SECTION
>                                                         # The list of RT attributes that uniquely identify a user
>                                                       # This example shows what you *can* specify.. I recommend reducing this
>                                                         # to just the Name and EmailAddress to save encountering problems later.
>                                                         'attr_match_list'           => [    'Name',
>                                                                                             'EmailAddress',
>                                                                                             'RealName',
>                                                                                             'WorkPhone',
>                                                                                             'Address2'
>                                                                                         ],

You also want to read the doc above attr_match_list.  As configured, you
cannot have to Bob Smiths in your RT.

-kevin

>                                                         # The mapping of RT attributes on to LDAP attributes
>                                                         'attr_map'                  =>  {   'Name' => 'sAMAccountName',
>                                                                                             'EmailAddress' => 'mail',
>                                                                                             'Organization' => 'physicalDeliveryOfficeName',
>                                                                                             'RealName' => 'cn',
>                                                                                             'ExternalAuthId' => 'sAMAccountName',
>                                                                                             'Gecos' => 'sAMAccountName',
>                                                                                             'WorkPhone' => 'telephoneNumber',
>                                                                                             'Address1' => 'streetAddress',
>                                                                                             'City' => 'l',
>                                                                                             'State' => 'st',
>                                                                                             'Zip' => 'postalCode',
>                                                                                             'Country' => 'co'
>                                                                                         }
>                                                     },

Good night,

After some struggles, it's working now. Here's the configuration that worked:

joe at debian:~$ su -c 'cat /opt/rt4/etc/RT_SiteConfig.pm'
Password: 
# Any configuration directives you include  here will override 
# RT's default configuration file, RT_Config.pm
#
# To include a directive here, just copy the equivalent statement
# from RT_Config.pm and change the value. We've included a single
# sample value below.
#
# This file is actually a perl module, so you can include valid
# perl code, as well.
#
# The converse is also true, if this file isn't valid perl, you're
# going to run into trouble. To check your SiteConfig file, use
# this comamnd:
#
#   perl -c /path/to/your/etc/RT_SiteConfig.pm
#
# You must restart your webserver after making changes to this file.


# You must install Plugins on your own, this is only an example
# of the correct syntax to use when activating them.
# There should only be one @Plugins declaration in your config file.
#Set(@Plugins,(qw(RT::Extension::QuickDelete RT::Extension::CommandByMail)));

Set( $DatabaseUser, 'rt_user' );
Set( $CorrespondAddress, '' );
Set( $rtname, 'galileu.pt' );
Set( $DatabaseRequireSSL, '' );
Set( $WebPort, '8080' );
Set( $Organization, 'galileu.pt' );
Set( $DatabaseType, 'mysql' );
Set( $DatabasePort, '' );
Set( $DatabasePassword, 'Pa$$w0rd' );
Set( $DatabaseAdmin, 'root' );
Set( $SendmailPath, '/usr/sbin/sendmail' );
Set( $WebDomain, 'debian' );
Set( $DatabaseAdminPassword, 'Pa$$w0rd' );
Set( $CommentAddress, '' );
Set( $DatabaseHost, 'localhost' );
Set( $DatabaseName, 'rt4' );
Set( $OwnerEmail, 'root at localhost' );
Set( @Plugins, qw(RT::Authen::ExternalAuth) );

### Configuracao para Active Directory ###

# The order in which the services defined in ExternalSettings
# should be used to authenticate users. User is authenticated
# if successfully confirmed by any service - no more services
# are checked.
Set($ExternalAuthPriority,  [   'My_LDAP'   ]
);

# The order in which the services defined in ExternalSettings
# should be used to get information about users. This includes
# RealName, Tel numbers etc, but also whether or not the user
# should be considered disabled. 
#
# Once user info is found, no more services are checked.
#
# You CANNOT use a SSO cookie for authentication.
Set($ExternalInfoPriority,  [   'My_LDAP'   ]

);

# If this is set to true, then the relevant packages will
# be loaded to use SSL/TLS connections. At the moment,
# this just means "use Net::SSLeay;"
Set($ExternalServiceUsesSSLorTLS,    0);

# If this is set to 1, then users should be autocreated by RT
# as internal users if they fail to authenticate from an
# external service.
Set($AutoCreateNonExternalUsers,    0);

# These are the full settings for each external service as a HashOfHashes
# Note that you may have as many external services as you wish. They will
# be checked in the order specified in the Priority directives above.
# e.g. 
#   Set(ExternalAuthPriority,['My_LDAP','My_MySQL','My_Oracle','SecondaryLDAP','Other-DB']);
#
Set($ExternalSettings,      {  
                                'My_LDAP'       =>  {   ## GENERIC SECTION
                                                        # The type of service (db/ldap/cookie) 
                                                        'type'                      =>  'ldap',
                                                        # The server hosting the service
                                                        'server'                    =>  'jupiter.galileu-f.galileu.pt',
                                                        ## SERVICE-SPECIFIC SECTION
                                                        # If you can bind to your LDAP server anonymously you should 
                                                        # remove the user and pass config lines, otherwise specify them here:
                                                        # 
                                                        # The username RT should use to connect to the LDAP server 
                                                        'user'                      =>  'ghelpdesk',
                                                        # The password RT should use to connect to the LDAP server
                                                        'pass'                    =>  'N3s9uik34',
                                                        #
                                                        # The LDAP search base
                                                        'base'                      =>  'dc=galileu-f,dc=galileu,dc=pt',
                                                        #
                                                        # ALL FILTERS MUST BE VALID LDAP FILTERS ENCASED IN PARENTHESES!
                                                        # YOU **MUST** SPECIFY A filter AND A d_filter!!
                                                        #
                                                        # The filter to use to match RT-Users
                                                        'filter'                    =>  '(objectClass=*)',
                                                        # A catch-all example filter: '(objectClass=*)'
                                                        #
                                                        # The filter that will only match disabled users
                                                        'd_filter'                  =>  '(objectClass=FooBarBaz)',
                                                        # A catch-none example d_filter: '(objectClass=FooBarBaz)'
                                                        #
                                                        # Should we try to use TLS to encrypt connections?
                                                        'tls'                       =>  0,
                                                        # SSL Version to provide to Net::SSLeay *if* using SSL
                                                        'ssl_version'               =>  3,
                                                        # What other args should I pass to Net::LDAP->new($host, at args)?
                                                        'net_ldap_args'             => [    version =>  3 , port => 3268  ],
                                                        # Does authentication depend on group membership? What group name?
                                                        #'group'                     =>  'GROUP_NAME',
                                                        # What is the attribute for the group object that determines membership?
                                                        #'group_attr'                =>  'GROUP_ATTR',
                                                        ## RT ATTRIBUTE MATCHING SECTION
                                                        # The list of RT attributes that uniquely identify a user
							# This example shows what you *can* specify.. I recommend reducing this
                                                        # to just the Name and EmailAddress to save encountering problems later.
                                                        'attr_match_list'           => [    'Name',
                                                                                            'EmailAddress', 
                                                                                            'RealName',
                                                                                            'WorkPhone', 
                                                                                            'Address2'
                                                                                        ],
                                                        # The mapping of RT attributes on to LDAP attributes
                                                        'attr_map'                  =>  {   'Name' => 'sAMAccountName',
                                                                                            'EmailAddress' => 'mail',
                                                                                            'Organization' => 'physicalDeliveryOfficeName',
                                                                                            'RealName' => 'cn',
                                                                                            'ExternalAuthId' => 'sAMAccountName',
                                                                                            'Gecos' => 'sAMAccountName',
                                                                                            'WorkPhone' => 'telephoneNumber',
                                                                                            'Address1' => 'streetAddress',
                                                                                            'City' => 'l',
                                                                                            'State' => 'st',
                                                                                            'Zip' => 'postalCode',
                                                                                            'Country' => 'co'
                                                                                        }
                                                    },
                                }
);

1;

Hope this helps anyone in the world.

Thanks for your help. RT community support seems awesome.

Best regards,

Bruno Martins

From jim.lesinski at gmail.com  Sun Feb  5 22:18:36 2012
From: jim.lesinski at gmail.com (Jim Lesinski)
Date: Sun, 5 Feb 2012 22:18:36 -0500
Subject: [rt-users] rt-4.0.5 - How to populate a custom field using a web
	service?
Message-ID: 

Hello,

I am looking at rt-4.0.5 and it seems that you can tie a custom field into
a web service. I am curious about using this method to populate an
autocomplete list for my custom field. Specifically I'd like to make an
autocomplete field which is populated with the name column of the AT_ASSETS
table using a SQL query like 'SELECT name, description FROM AT_ASSETS ORDER
BY name ASC' so that I can easily look up an asset and link it to my
ticket, so that I can use assets like a cmdb.

I am currently looking at /opt/rt4/docs/extending/external_custom_field.pod
and it seems like that solution may work, but it does not include any
detail about using a web service.

Is there any documentation about using a webservice or does someone have an
example of its use? Or if someone has details about doing something like I
described above using another method I'd love to hear about that too.

Thanks for your advice!
Jim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From jacques.foucry at novasparks.com  Mon Feb  6 06:11:14 2012
From: jacques.foucry at novasparks.com (Jacques Foucry)
Date: Mon, 06 Feb 2012 12:11:14 +0100
Subject: [rt-users] Mail Attachment: how to add a link instead of sending
	the file?
Message-ID: <4F2FB552.8060801@novasparks.com>

Hello RT community,

I run RT 3.8.10 on a 6.0.1 Debian with Apache2.

I really new at RT and very bad with perl :-(

Our mail provider does not allow us to sent tar.gz files but some of
your customer sent .tar.gz files.

RT receive those attachments and try to send them to all AdminCCs. As
expected, the mail bounce.

So the solution could to not sent the attachment but put a link to this
attachment is the ticket mail.

But I cannot found any parameters to do that.

I've check the mailing archive with no success to (may be I did see the
right message).

Help will be really appreciate .

Thanks in advance,
Jacques Foucry


From drey111 at gmail.com  Mon Feb  6 07:19:40 2012
From: drey111 at gmail.com (Joe Harris)
Date: Mon, 6 Feb 2012 07:19:40 -0500
Subject: [rt-users] rt-4.0.5 - How to populate a custom field using a
	web service?
In-Reply-To: 
References: 
Message-ID: 

> I am looking at rt-4.0.5 and it seems that you can tie a custom field into a
> web service.

I created a PHP web form to try and drive requestors to put in the
proper information.  What I provided was a drop down box to show
custom fields pulled from the RT database and then build a email to be
sent to the queue the user chose.

> Is there any documentation about using a webservice or does someone have an
> example of its use? Or if someone has details about doing something like I
> described above using another method I'd love to hear about that too.

The following is the PHP code I used to pull the info (billing codes)
from the customfieldvalues table where the ID of the custom field I am
using is 1.  Since this is a field that has a parent/child
relationship, this creates an option group heading with the selectable
fields in the drop down box under each option group.  If you have just
one field and no relationships, it is much more simple.  This requires
a database connection string which is in a file outside of my web
directory.  I know this may not be exactly what you are looking for,
but the main part you are asking about I believe the part you are
looking for specifically is down at the end of building the message
where the custom fields are pushed into the email with commandbymail.
Note, I found out the custom fields could NOT have any spaces in them
for commandbymail to function.  I hope this helps and is not too
confusing.  I am quite sure some of this could be done more
efficiently.  I am not a developer.  I have a good understanding of
php, but not always the most efficient way.

---connection_file---
 
---connection_file---
---ticket_form---
Task Code";
}
//end action showForm
?>
---form_code---

Then I gather the form data to be pushed into RT as an email.  I use
the commandbymail plugin to allow fields to be populated via email.
Then I build the email with PHP code to send to RT:

---form_submit---
 $b)
{
$bodymessage .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]);
}
//Build message headers
$headers = "From: $from\n";
$headers .= "Reply-To: $from\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/related;
type=\"multipart/alternative\";
boundary=\"----=MIME_BOUNDRY_main_message\"\n";
$headers .= "X-Sender: $from\n";
$headers .= "X-Mailer: PHP4\n";
$headers .= "X-Priority: 3\n"; //1 = Urgent, 3 = Nmrmal
$headers .= "Return-Path: <" . $_POST['Email'] . ">\n";
$headers .= "This is a multi-part message in MIME format.\n";
$headers .= "------=MIME_BOUNDRY_main_message \n";
$headers .= "Content-Type: multipart/alternative;
boundary=\"----=MIME_BOUNDRY_message_parts\"\n";
//Build message contents
$message  = "------=MIME_BOUNDRY_message_parts\n";
$message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n";
$message .= "\n";
/* Add custom message, in this case it's plain text.  You could also
add HTML by changing the Content-Type to text/html */
$message .= "Due: ".$duedate." ".$time."\n";
$message .= "Priority: ".$priority."\n";
if($admincc != 'none'){
$message .= "AdminCc: ".$admincc."\n";
}
$message .= "CustomField.{Client_Project}: ".$cltprj."\n";
$message .= "CustomField.{Task_Code}: ".$taskcode."\n";
$message .= "CustomField.{Category}: ".$category."\n";
$message .= "\n";
$message .= "$bodymessage\n";
$message .= "\n";
$message .= "------=MIME_BOUNDRY_message_parts--\n";
$message .= "\n";
//Send message
$ok = mail($to, $subject, $message, $headers);
if($ok == 1)
{
echo "Your ticket has been sent.";
}
else
{
print "We encountered an error sending your mail, please notify the RT
administrator";
}
}
?.
//Determine what state the form is in when the user gets to it



From jim.lesinski at gmail.com  Mon Feb  6 07:34:40 2012
From: jim.lesinski at gmail.com (Jim Lesinski)
Date: Mon, 6 Feb 2012 07:34:40 -0500
Subject: [rt-users] rt-4.0.5 - How to populate a custom field using a
	web service?
In-Reply-To: 
References: 
	
Message-ID: 

Hi Joe, that's good information but I am looking to be able to use the web service to populate the autocomplete values for one specific RT CustomField within RT. When you are setting up a custom field the screen even says that you can use a web service to populate the field's values, but I am not sure how to do that and I cannot find documentation.

Thanks,
Jim Lesinski


On Feb 6, 2012, at 7:19 AM, Joe Harris  wrote:

>> I am looking at rt-4.0.5 and it seems that you can tie a custom field into a
>> web service.
> 
> I created a PHP web form to try and drive requestors to put in the
> proper information.  What I provided was a drop down box to show
> custom fields pulled from the RT database and then build a email to be
> sent to the queue the user chose.
> 
>> Is there any documentation about using a webservice or does someone have an
>> example of its use? Or if someone has details about doing something like I
>> described above using another method I'd love to hear about that too.
> 
> The following is the PHP code I used to pull the info (billing codes)
> from the customfieldvalues table where the ID of the custom field I am
> using is 1.  Since this is a field that has a parent/child
> relationship, this creates an option group heading with the selectable
> fields in the drop down box under each option group.  If you have just
> one field and no relationships, it is much more simple.  This requires
> a database connection string which is in a file outside of my web
> directory.  I know this may not be exactly what you are looking for,
> but the main part you are asking about I believe the part you are
> looking for specifically is down at the end of building the message
> where the custom fields are pushed into the email with commandbymail.
> Note, I found out the custom fields could NOT have any spaces in them
> for commandbymail to function.  I hope this helps and is not too
> confusing.  I am quite sure some of this could be done more
> efficiently.  I am not a developer.  I have a good understanding of
> php, but not always the most efficient way.
> 
> ---connection_file---
>  $host = "database_server";
> $user = "postgres";
> $pass = "dbpassword";
> $db = "rtdb";
> $conn_rtdb = pg_connect("host=$host dbname=$db user=$user
> password=$pass") or die("Couldn't Connect to $db".pg_last_error());
> ?>
> ---connection_file---
> ---ticket_form---
>  //set page action based on how the user gets to the page (sendMail or showForm)
> $action = $_REQUEST['action'];
> global $action;
> ---form_code---
> function showForm() {
> include('/path/to/connection_file');
> $getclientproject = pg_query($conn_rtdb, "select name from
> customfieldvalues where customfield=1 order by name")or die("Get
> ClientProject " . pg_last_error());
>        $fields=pg_num_fields($getclientproject);
>        echo "Task Code";
> }
> //end action showForm
> ?>
> ---form_code---
> 
> Then I gather the form data to be pushed into RT as an email.  I use
> the commandbymail plugin to allow fields to be populated via email.
> Then I build the email with PHP code to send to RT:
> 
> ---form_submit---
>  function sendMail()
> {
> include("/path/to/connection_file");
> // Gather form data... each item that is pulled had its own field in
> the web form
> $to = $_REQUEST['sendto'] ; //whatever queue they chose in a dropdown
> box on the web form
> $from = "$_REQUEST['from_email']" ;
> $project = $_REQUEST['Project'] ;
> $priority = $_REQUEST['Priority'] ;
> $duedate = $_REQUEST['duedate'] ;
> $time = $_REQUEST['time'] ;
> $taskcode = $_REQUEST['taskcode'] ;
> $admincc = $_REQUEST['AdminCC'] ;
> //Get client project from RT database
> $getcp = pg_query($conn_rtdb, "select a.content from attributes a,
> customfieldvalues b where b.name='$taskcode' and b.id=a.objectid")or
> die("Get CP ".pg_last_error());
> $rescp = pg_fetch_row($getcp);
> $cltprj = $rescp[0];
> //create due date timestamp, concatenate fields and clean up strange characters
> $due = $duedate." ".$time ;
> $subjectdetails = pg_escape_string(stripslashes($_REQUEST['SubjectDetails'])) ;
> $body = pg_escape_string(stripslashes($_REQUEST['Body'])) ;
> $subject = $project.":  " . $subjectdetails ;
> //Build data to be pushed into ticket for commandbymail
> $fields = array();
> $fields{"Project"} = "Project";
> $fields{"SubjectDetails"} = "Subject";
> $fields{"Body"} = "Message";
> foreach($fields as $a => $b)
> {
> $bodymessage .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]);
> }
> //Build message headers
> $headers = "From: $from\n";
> $headers .= "Reply-To: $from\n";
> $headers .= "MIME-Version: 1.0\n";
> $headers .= "Content-Type: multipart/related;
> type=\"multipart/alternative\";
> boundary=\"----=MIME_BOUNDRY_main_message\"\n";
> $headers .= "X-Sender: $from\n";
> $headers .= "X-Mailer: PHP4\n";
> $headers .= "X-Priority: 3\n"; //1 = Urgent, 3 = Nmrmal
> $headers .= "Return-Path: <" . $_POST['Email'] . ">\n";
> $headers .= "This is a multi-part message in MIME format.\n";
> $headers .= "------=MIME_BOUNDRY_main_message \n";
> $headers .= "Content-Type: multipart/alternative;
> boundary=\"----=MIME_BOUNDRY_message_parts\"\n";
> //Build message contents
> $message  = "------=MIME_BOUNDRY_message_parts\n";
> $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
> $message .= "Content-Transfer-Encoding: quoted-printable\n";
> $message .= "\n";
> /* Add custom message, in this case it's plain text.  You could also
> add HTML by changing the Content-Type to text/html */
> $message .= "Due: ".$duedate." ".$time."\n";
> $message .= "Priority: ".$priority."\n";
> if($admincc != 'none'){
> $message .= "AdminCc: ".$admincc."\n";
> }
> $message .= "CustomField.{Client_Project}: ".$cltprj."\n";
> $message .= "CustomField.{Task_Code}: ".$taskcode."\n";
> $message .= "CustomField.{Category}: ".$category."\n";
> $message .= "\n";
> $message .= "$bodymessage\n";
> $message .= "\n";
> $message .= "------=MIME_BOUNDRY_message_parts--\n";
> $message .= "\n";
> //Send message
> $ok = mail($to, $subject, $message, $headers);
> if($ok == 1)
> {
> echo "Your ticket has been sent.";
> }
> else
> {
> print "We encountered an error sending your mail, please notify the RT
> administrator";
> }
> }
> ?.
> //Determine what state the form is in when the user gets to it
>  switch ($action) {
>  case "send":
>    sendMail();
>    showForm();
>    break;
>  default:
>    showForm();
> }
> ?>


From drey111 at gmail.com  Mon Feb  6 07:52:11 2012
From: drey111 at gmail.com (Joe Harris)
Date: Mon, 6 Feb 2012 07:52:11 -0500
Subject: [rt-users] rt-4.0.5 - How to populate a custom field using a
	web service?
In-Reply-To: 
References: 
	
	
Message-ID: <3CBE8260-980C-4161-A224-EC072135D281@gmail.com>

Ahh. I see what you're asking now. Wish I could offer more. 

Sent from my mobile device. 

On Feb 6, 2012, at 7:34 AM, Jim Lesinski  wrote:

> Hi Joe, that's good information but I am looking to be able to use the web service to populate the autocomplete values for one specific RT CustomField within RT. When you are setting up a custom field the screen even says that you can use a web service to populate the field's values, but I am not sure how to do that and I cannot find documentation.
> 
> Thanks,
> Jim Lesinski
> 
> 
> On Feb 6, 2012, at 7:19 AM, Joe Harris  wrote:
> 
>>> I am looking at rt-4.0.5 and it seems that you can tie a custom field into a
>>> web service.
>> 
>> I created a PHP web form to try and drive requestors to put in the
>> proper information.  What I provided was a drop down box to show
>> custom fields pulled from the RT database and then build a email to be
>> sent to the queue the user chose.
>> 
>>> Is there any documentation about using a webservice or does someone have an
>>> example of its use? Or if someone has details about doing something like I
>>> described above using another method I'd love to hear about that too.
>> 
>> The following is the PHP code I used to pull the info (billing codes)
>> from the customfieldvalues table where the ID of the custom field I am
>> using is 1.  Since this is a field that has a parent/child
>> relationship, this creates an option group heading with the selectable
>> fields in the drop down box under each option group.  If you have just
>> one field and no relationships, it is much more simple.  This requires
>> a database connection string which is in a file outside of my web
>> directory.  I know this may not be exactly what you are looking for,
>> but the main part you are asking about I believe the part you are
>> looking for specifically is down at the end of building the message
>> where the custom fields are pushed into the email with commandbymail.
>> Note, I found out the custom fields could NOT have any spaces in them
>> for commandbymail to function.  I hope this helps and is not too
>> confusing.  I am quite sure some of this could be done more
>> efficiently.  I am not a developer.  I have a good understanding of
>> php, but not always the most efficient way.
>> 
>> ---connection_file---
>> > $host = "database_server";
>> $user = "postgres";
>> $pass = "dbpassword";
>> $db = "rtdb";
>> $conn_rtdb = pg_connect("host=$host dbname=$db user=$user
>> password=$pass") or die("Couldn't Connect to $db".pg_last_error());
>> ?>
>> ---connection_file---
>> ---ticket_form---
>> > //set page action based on how the user gets to the page (sendMail or showForm)
>> $action = $_REQUEST['action'];
>> global $action;
>> ---form_code---
>> function showForm() {
>> include('/path/to/connection_file');
>> $getclientproject = pg_query($conn_rtdb, "select name from
>> customfieldvalues where customfield=1 order by name")or die("Get
>> ClientProject " . pg_last_error());
>>       $fields=pg_num_fields($getclientproject);
>>       echo "Task Code";
>> }
>> //end action showForm
>> ?>
>> ---form_code---
>> 
>> Then I gather the form data to be pushed into RT as an email.  I use
>> the commandbymail plugin to allow fields to be populated via email.
>> Then I build the email with PHP code to send to RT:
>> 
>> ---form_submit---
>> > function sendMail()
>> {
>> include("/path/to/connection_file");
>> // Gather form data... each item that is pulled had its own field in
>> the web form
>> $to = $_REQUEST['sendto'] ; //whatever queue they chose in a dropdown
>> box on the web form
>> $from = "$_REQUEST['from_email']" ;
>> $project = $_REQUEST['Project'] ;
>> $priority = $_REQUEST['Priority'] ;
>> $duedate = $_REQUEST['duedate'] ;
>> $time = $_REQUEST['time'] ;
>> $taskcode = $_REQUEST['taskcode'] ;
>> $admincc = $_REQUEST['AdminCC'] ;
>> //Get client project from RT database
>> $getcp = pg_query($conn_rtdb, "select a.content from attributes a,
>> customfieldvalues b where b.name='$taskcode' and b.id=a.objectid")or
>> die("Get CP ".pg_last_error());
>> $rescp = pg_fetch_row($getcp);
>> $cltprj = $rescp[0];
>> //create due date timestamp, concatenate fields and clean up strange characters
>> $due = $duedate." ".$time ;
>> $subjectdetails = pg_escape_string(stripslashes($_REQUEST['SubjectDetails'])) ;
>> $body = pg_escape_string(stripslashes($_REQUEST['Body'])) ;
>> $subject = $project.":  " . $subjectdetails ;
>> //Build data to be pushed into ticket for commandbymail
>> $fields = array();
>> $fields{"Project"} = "Project";
>> $fields{"SubjectDetails"} = "Subject";
>> $fields{"Body"} = "Message";
>> foreach($fields as $a => $b)
>> {
>> $bodymessage .= sprintf("%20s: %s\n",$b,$_REQUEST[$a]);
>> }
>> //Build message headers
>> $headers = "From: $from\n";
>> $headers .= "Reply-To: $from\n";
>> $headers .= "MIME-Version: 1.0\n";
>> $headers .= "Content-Type: multipart/related;
>> type=\"multipart/alternative\";
>> boundary=\"----=MIME_BOUNDRY_main_message\"\n";
>> $headers .= "X-Sender: $from\n";
>> $headers .= "X-Mailer: PHP4\n";
>> $headers .= "X-Priority: 3\n"; //1 = Urgent, 3 = Nmrmal
>> $headers .= "Return-Path: <" . $_POST['Email'] . ">\n";
>> $headers .= "This is a multi-part message in MIME format.\n";
>> $headers .= "------=MIME_BOUNDRY_main_message \n";
>> $headers .= "Content-Type: multipart/alternative;
>> boundary=\"----=MIME_BOUNDRY_message_parts\"\n";
>> //Build message contents
>> $message  = "------=MIME_BOUNDRY_message_parts\n";
>> $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
>> $message .= "Content-Transfer-Encoding: quoted-printable\n";
>> $message .= "\n";
>> /* Add custom message, in this case it's plain text.  You could also
>> add HTML by changing the Content-Type to text/html */
>> $message .= "Due: ".$duedate." ".$time."\n";
>> $message .= "Priority: ".$priority."\n";
>> if($admincc != 'none'){
>> $message .= "AdminCc: ".$admincc."\n";
>> }
>> $message .= "CustomField.{Client_Project}: ".$cltprj."\n";
>> $message .= "CustomField.{Task_Code}: ".$taskcode."\n";
>> $message .= "CustomField.{Category}: ".$category."\n";
>> $message .= "\n";
>> $message .= "$bodymessage\n";
>> $message .= "\n";
>> $message .= "------=MIME_BOUNDRY_message_parts--\n";
>> $message .= "\n";
>> //Send message
>> $ok = mail($to, $subject, $message, $headers);
>> if($ok == 1)
>> {
>> echo "Your ticket has been sent.";
>> }
>> else
>> {
>> print "We encountered an error sending your mail, please notify the RT
>> administrator";
>> }
>> }
>> ?.
>> //Determine what state the form is in when the user gets to it
>> > switch ($action) {
>> case "send":
>>   sendMail();
>>   showForm();
>>   break;
>> default:
>>   showForm();
>> }
>> ?>


From jblaine at kickflop.net  Mon Feb  6 09:10:12 2012
From: jblaine at kickflop.net (Jeff Blaine)
Date: Mon, 06 Feb 2012 09:10:12 -0500
Subject: [rt-users] rt-4.0.5 - How to populate a custom field using a
 web service?
In-Reply-To: <3CBE8260-980C-4161-A224-EC072135D281@gmail.com>
References: 
	
	
	<3CBE8260-980C-4161-A224-EC072135D281@gmail.com>
Message-ID: <4F2FDF44.7070301@kickflop.net>

> On Feb 6, 2012, at 7:34 AM, Jim Lesinski
> wrote:
>
>> Hi Joe, that's good information but I am looking to be able to use
>> the web service to populate the autocomplete values for one
>> specific RT CustomField within RT. When you are setting up a custom
>> field the screen even says that you can use a web service to
>> populate the field's values, but I am not sure how to do that and I
>> cannot find documentation.
>>
>> Thanks, Jim Lesinski

Jim,

I believe you've misread the RT CustomField definition screen.
I've never used this feature before, but I read and interpret
it as follows:

It says (emphasis mine):

     RT can make this *custom field's values into hyperlinks to
     another service*. Fill in this field with a URL. RT will
     replace __id__ and __CustomField__ with the record's id
     and the custom field's value, respectively.

Let's say your CF is "Employee Number".

So, if you set "Link values to" as:

     http://service.example.com/lookup?empnum=__CustomField__

If I typed '430' into this CF as a value (as an end user),
it would show as a clickable link:

     http://service.example.com/lookup?empnum=430

Jeff Blaine


From gsollazz at sgul.ac.uk  Mon Feb  6 09:53:32 2012
From: gsollazz at sgul.ac.uk (Giuseppe Sollazzo)
Date: Mon, 06 Feb 2012 14:53:32 +0000
Subject: [rt-users] highlighting tickets with a reply
Message-ID: <4F2FE96C.3060803@sgul.ac.uk>


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi there,
a colleague here has asked me a question I'm not totally sure about.

He asked: is there any way to highlight a ticket that has received a
reply, in any way other than adding the "New" field?

What he'd like is roughly a highlighting background to the ticket in
the list.

Has anyone done anything similar?

Thanks,
Giuseppe

- -- 
____________________________________

Giuseppe Sollazzo
Senior Systems Analyst
Computing Services
Information Services
St. George's, University Of London
Cranmer Terrace
London SW17 0RE

Email: gsollazz at sgul.ac.uk
Direct Dial: +44 20 8725 5160
Fax: +44 20 8725 3583

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBAgAGBQJPL+lsAAoJEAqigArPBfJXHtMIAI3LunoibB4atiEqnUkcBl+D
WylK4Lh6SwEIYnXzILjyehO8oWju1TcODR25DNPlJQy4vq6OGNEuIBo48+lteJcr
ZlKWHoKHY09vLYCgzRHvOKCLNpVHJT2CiGBNCOB/y4VzLVY7IPNp/P3XvLbb3N3C
SRUrRt3fEbzpkWMw2HyffJEDnBR8FF+8/EgI+yTJqns2PllUGGJ8k9lVCClcDjIz
lpfTcGBYSuNA7mt5tMT2iH3UPWZ9vhdsVqZCYPD0n0/dUu/iqbPlayR1bXw0j34/
nnlqBLAjybM81it1uorRKG0pN9lzkcT2xv7KuZziLWYoSdMVpB+Av5oc1WcQFxU=
=v/EV
-----END PGP SIGNATURE-----



From jim.lesinski at gmail.com  Mon Feb  6 11:32:47 2012
From: jim.lesinski at gmail.com (Jim Lesinski)
Date: Mon, 6 Feb 2012 11:32:47 -0500
Subject: [rt-users] rt-4.0.5 - How to populate a custom field using a
	web service?
In-Reply-To: <4F2FDF44.7070301@kickflop.net>
References: 
	
	
	<3CBE8260-980C-4161-A224-EC072135D281@gmail.com>
	<4F2FDF44.7070301@kickflop.net>
Message-ID: 

There seems to be a lot of confusion about what I am asking. I am sorry if
I am not making myself clear. Please check out the attached image which
shows exactly what I am looking at. Maybe I am interpreting it wrong, but
the field Jeff describes is not the one I am asking about. I am referring
to the field below it called "Include Page" which states:

"RT can include content from another web service when showing this custom
field. Fill in this field with a URL. RT will replace __id__ and
__CustomField__ with the record's id and the custom field's value,
respectively. Some browsers may only load content from the same domain as
your RT server."

This seems to imply to me that the custom field can in fact include values
from a web service. Or does this mean that it can render content in an
iFrame or something? If someone can clarify what that field does I think
that would be all I need.

On Mon, Feb 6, 2012 at 9:10 AM, Jeff Blaine  wrote:

> On Feb 6, 2012, at 7:34 AM, Jim Lesinski
>> >
>> wrote:
>>
>>  Hi Joe, that's good information but I am looking to be able to use
>>> the web service to populate the autocomplete values for one
>>> specific RT CustomField within RT. When you are setting up a custom
>>> field the screen even says that you can use a web service to
>>> populate the field's values, but I am not sure how to do that and I
>>> cannot find documentation.
>>>
>>> Thanks, Jim Lesinski
>>>
>>
> Jim,
>
> I believe you've misread the RT CustomField definition screen.
> I've never used this feature before, but I read and interpret
> it as follows:
>
> It says (emphasis mine):
>
>    RT can make this *custom field's values into hyperlinks to
>    another service*. Fill in this field with a URL. RT will
>    replace __id__ and __CustomField__ with the record's id
>    and the custom field's value, respectively.
>
> Let's say your CF is "Employee Number".
>
> So, if you set "Link values to" as:
>
>    http://service.example.com/**lookup?empnum=__CustomField__
>
> If I typed '430' into this CF as a value (as an end user),
> it would show as a clickable link:
>
>    http://service.example.com/**lookup?empnum=430
>
> Jeff Blaine
> --------
> RT Training Sessions (http://bestpractical.com/**services/training.html
> )
> * Boston  March 5 & 6, 2012
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 300_WebService.jpg
Type: image/jpeg
Size: 42503 bytes
Desc: not available
URL: 

From vance_walsh at concordacademy.org  Mon Feb  6 11:48:10 2012
From: vance_walsh at concordacademy.org (Vance Walsh)
Date: Mon, 06 Feb 2012 11:48:10 -0500
Subject: [rt-users] Offline Edits - 4.0.2
Message-ID: 

My manager just mentioned he used the tool referenced here

http://requesttracker.wikia.com/wiki/OfflineEdits

before our upgrade to 4.0 and now can not find it. Has this tool been moved /
changed or is there a different permission set needed to use it?

---

Vance Walsh
Network and Systems Administrator
Concord Academy - Concord, Mass.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From borngunners at aol.com  Mon Feb  6 12:03:12 2012
From: borngunners at aol.com (Borngunners)
Date: Mon, 6 Feb 2012 12:03:12 -0500 (EST)
Subject: [rt-users] Help installing RT4 on Ubuntu
In-Reply-To: 
References: <8CEAA636B3B3E9B-2444-63944@webmail-d182.sysops.aol.com><20120126214009.GL95897@jibsheet.com><8CEAD9C927D0CBE-1B14-16399@webmail-m076.sysops.aol.com><20120130202502.GU95897@jibsheet.com><8CEADB34E8A73CF-1B14-17819@webmail-m076.sysops.aol.com><20120130233238.GV95897@jibsheet.com><8CEAE66CC35259E-1B14-1DEE4@webmail-m076.sysops.aol.com><8CEAFCA97A6097A-1C60-8B16@webmail-m076.sysops.aol.com><3B9178D874F56F47B616AB50C01F7B7701D5FACC@GRUPRD8002MB111.lamprd80.prod.outlook.com>
	
Message-ID: <8CEB30857E4A512-17E0-1FA17@webmail-m068.sysops.aol.com>


I have successfully installed RT4.0.5 and seems to be able to bring it up via the web... I did receive a warning error message after reloading apache:

root at helpdesks:/etc/apache2/sites-available# /etc/init.d/apache2 reload
 * Reloading web server config apache2                                                                                                                        [Mon Feb  6 16:54:32 2012] [warning]: The ActiveStatus configuration has been replaced by the new Lifecycles
functionality. You should set the 'active' property of the 'default'
lifecycle and add transition rules; see RT_Config.pm for documentation. (/opt/rt4/sbin/../lib/RT/Config.pm:766)
                                                                                                                                                       [ OK ]
Please advice on what to do to correct this message.

Thanks,
Haji




-----Original Message-----
From: Bart 
To: rt-users 
Sent: Thu, Feb 2, 2012 10:00 am
Subject: Re: [rt-users] Help installing RT4 on Ubuntu


Hi,


As mentioned, after the installation you have to manually add the RT config to apache.


The installation won't configure apache automatically for you, you can probably use the include line Diaulas mentioned.


Other then that, it looks like you've done the installation the Ubuntu way (which is ok), all you need to do now is configure Apache.


Let us know if it worked.

-- Bart



Op 2 februari 2012 15:12 schreef Diaulas Castro  het volgende:


 
Did you put /rt in the end of url? Ex: http://192.168.1.1/rt
 
Have Ubuntu 11.10 installed 3 weeks ago, don?t remember to change apache conf except of including this line:
 
    Include "/etc/request-tracker4/apache2-modperl2.conf?
 
 
Last 2 lines of my conf:
 
tail -n2 /etc/apache2/sites-available/default
Include "/etc/request-tracker4/apache2-modperl2.conf"

 
 
 
De: rt-users-bounces at lists.bestpractical.com [mailto:rt-users-bounces at lists.bestpractical.com] Em nome de Borngunners
Enviada em: quinta-feira, 2 de fevereiro de 2012 12:04
Para: bart at pleh.info; rt-users at lists.bestpractical.com
Assunto: Re: [rt-users] Help installing RT4 on Ubuntu

 
I have reinstalled everything again, starting from the OS. I installed ubuntu 11 and I installed RT using the following command apt-get install request-tracker4. Everything has being installed, but I am still getting the It Works! message. It seems like this version of RT is a bit complicated to install, right? Don't know what else to do regarding the installing RT. I seriously need help with detail how-to, please....

Thanks,

 

 

 

-----Original Message-----
From: Bart 
To: rt-users 
Sent: Wed, Feb 1, 2012 10:06 am
Subject: Re: [rt-users] Help installing RT4 on Ubuntu

Hi, 

 

Are you trying to do the source installation on Ubuntu? (btw, which version of Ubuntu?)

 

At least, it looks that way. If the above is what you've done then I really don't understand the external auth errors your getting, a clean installation doesn't contain external auth...

 

My advise would be to make sure you have a clean installation up and running first before playing with plugins (theres really no point).

 

Also, if you have the latest Ubuntu server then you can also install RT using Aptitude ( aptitude search request-tracker4 ).

 

I assume you've documented all your steps up to this point, could you show us exactly what you've done? (you've installed plugins, so undo that to begin with or at least turn off the plugins in the RT_SiteConfig).

 


-- Bart



Op 31 januari 2012 20:36 schreef Borngunners  het volgende:

Okay. Now I have try to reinstall RT again and so far these are the configurations I have:

root at helpdesks:/var/tmp/rt-4.0.4# make initialize-database
/usr/bin/perl -I/opt/rt4/local/lib -I/opt/rt4/lib sbin/rt-setup-database --action init --prompt-for-dba-password
In order to create or update your RT database, this script needs to connect to your  mysql instance on localhost as root
Please specify that user's database password below. If the user has no database
password, just press return.

Password:
Working with:
Type:   mysql
Host:   localhost
Name:   rt4
User:   rtuser
DBA:    root
Now creating a mysql database rt4 for RT.
Done.
Now populating database schema.
Done.
Now inserting database ACLs.
Granting access to rtuser@'localhost' on rt4.
Done.
Now inserting RT core system objects.
Done.
[Tue Jan 31 19:32:37 2012] [warning]: The ActiveStatus configuration has been replaced by the new Lifecycles
functionality. You should set the 'active' property of the 'default'
lifecycle and add transition rules; see RT_Config.pm for documentation. (/var/tmp/rt-4.0.4/sbin/../lib/RT/Config.pm:766)
Now inserting data.
[Tue Jan 31 19:32:37 2012] [info]: RT::Authen::ExternalAuth::CanonicalizeUserInfo returning Comments: SuperUser, Disabled: 0, EmailAddress: root at localhost, Gecos: root, Name: root, Password: password, Privileged: 1, RealName: Enoch Root (/opt/rt4/local/plugins/RT-Authen-ExternalAuth/lib/RT/Authen/ExternalAuth.pm:536)
[Tue Jan 31 19:32:37 2012] [error]: Could not set user info (/var/tmp/rt-4.0.4/sbin/../lib/RT/Handle.pm:826)
[Tue Jan 31 19:32:38 2012] [error]: Unable to load user: root : Couldn't find row (/var/tmp/rt-4.0.4/sbin/../lib/RT/Handle.pm:956)
Done inserting data.
Done.


Apache configuration:

  ErrorLog /opt/rt4/var/log/apache2.error
  TransferLog /opt/rt4/var/log/apache2.access
  # LogLevel debug

  AddDefaultCharset UTF-8

  DocumentRoot "/opt/rt4/share/html"
   
       Order allow,deny
       Allow from all

       SetHandler perl-script 


       PerlResponseHandler Plack::Handler::Apache2
       PerlSetVar psgi_app /opt/rt4/sbin/rt-server

   
     


        use Plack::Handler::Apache2;
        Plack::Handler::Apache2->preload("/opt/rt4/sbin/rt-server");

    



thanks,

 

 


-----Original Message-----
From: Kevin Falcone 
To: rt-users 

Sent: Mon, Jan 30, 2012 6:32 pm
Subject: Re: [rt-users] Help installing RT4 on Ubuntu


On Mon, Jan 30, 2012 at 05:11:54PM -0500, Borngunners wrote:
>    Hello Falcone,
>    I have tried the config as stated. This is the message I receive after 
starting apche:
>    root at helpdesks:/etc/apache2# /etc/init.d/apache2 start
>     * Starting web server
>    apache2
>    [Mon Jan 30 22:08:01 2012] [warning]: DBD::mysql::st execute failed: Table 
'rt4.Users' doesn't
>    exist at /usr/local/share/perl/5.10.1/DBIx/SearchBuilder/Handle.pm line 
587.
>    (/usr/local/share/perl/5.10.1/DBIx/SearchBuilder/Handle.pm:587)
 
You don't appear to have created the RT database.
 
When you said
 
>  >      On Thu, Jan 26, 2012 at 12:02:28PM -0500, Borngunners wrote:
>  >      >    I have installed RT 4 on ubuntu and have tested the web after
 
What did you do to install RT?  It'd be great if you looked through
the README and compared the steps to the notes about what you did.
 
-kevin



--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Boston ? March 5 & 6, 2012



--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Boston ? March 5 & 6, 2012

 


--------
RT Training Sessions (http://bestpractical.com/services/training.html)
* Boston ? March 5 & 6, 2012







--------
T Training Sessions (http://bestpractical.com/services/training.html)
 Boston ? March 5 & 6, 2012

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From falcone at bestpractical.com  Mon Feb  6 14:00:14 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Mon, 6 Feb 2012 14:00:14 -0500
Subject: [rt-users] External Auth using Active Directory 2008
In-Reply-To: <84E70F84D007E14BBD13A402719AF27C158377D2@SN2PRD0102MB153.prod.exchangelabs.com>
References: <84E70F84D007E14BBD13A402719AF27C15832CC1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120201233243.GF5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C15833CF1@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120202171716.GL5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C1583405E@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120203173218.GN5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C158371A4@SN2PRD0102MB153.prod.exchangelabs.com>
	<20120203190535.GU5178@jibsheet.com>
	<84E70F84D007E14BBD13A402719AF27C158377D2@SN2PRD0102MB153.prod.exchangelabs.com>
Message-ID: <20120206190014.GA994@jibsheet.com>

On Fri, Feb 03, 2012 at 11:17:18PM +0000, Howell, Van wrote:
> I ran the install again, The version it put on is 0.09
> FALCONE/RT-Authen-ExternalAuth-0.09.tar.gz
> 
> Not the new version. I still have the same problem
> 
> I shelled into CPAN 
> perl -MCPAN -e shell
> 
> then I ran 
> install RT::Authen::ExternalAuth
> 
> Is there a different way?
> 
> Sorry for the dumb questions, but I'm new to this.

Do install a development release, you either need to fully specify the
path in the CPAN shell (something like
T/TS/TSIBLEY/RT-Authen-ExternalAuth-0.09_02.tar.gz ) or go to
http://search.cpan.org or http://metacpan.org and find and download
the development tarball and install it manually.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Mon Feb  6 14:02:01 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Mon, 6 Feb 2012 14:02:01 -0500
Subject: [rt-users] highlighting tickets with a reply
In-Reply-To: <4F2FE96C.3060803@sgul.ac.uk>
References: <4F2FE96C.3060803@sgul.ac.uk>
Message-ID: <20120206190201.GB994@jibsheet.com>

On Mon, Feb 06, 2012 at 02:53:32PM +0000, Giuseppe Sollazzo wrote:
> 
> a colleague here has asked me a question I'm not totally sure about.
> 
> He asked: is there any way to highlight a ticket that has received a
> reply, in any way other than adding the "New" field?
> 
> What he'd like is roughly a highlighting background to the ticket in
> the list.
> 
> Has anyone done anything similar?

You can use the UpdateStatus column.  Changing the background would
require you to use a Callback with RT__Ticket's ColumnMap.

I believe there are several examples of the ColumnMap Callback on the
wiki for highlighting a ticket with high priority that you could work
from.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From yacketrj at potsdam.edu  Mon Feb  6 16:20:06 2012
From: yacketrj at potsdam.edu (Ronald J Yacketta)
Date: 6 Feb 2012 16:20:06 -0500
Subject: [rt-users] a tad OT,
	need assistance with aliasing /me to /SelfService
In-Reply-To: <20120206190201.GB994@jibsheet.com>
References: <4F2FE96C.3060803@sgul.ac.uk> <20120206190201.GB994@jibsheet.com>
Message-ID: <89366d12c81cc41e45c1514a3b6d1a9a.squirrel@bearmail.potsdam.edu>

Hello all!

Prior to our 3.8.8 upgrade we were able to use /me | /selfservice as an
Alias to /SelfService in our rt.conf file. After upgrading I have been
unable to get rt.conf to honor /me as an Alias.



here is the meat of our rt.conf


... SSL stuff ...
Alias /me /SelfService
Alias /selfservice /SelfService

        AllowOverride All
        Options ExecCGI FollowSymLinks

        SetHandler modperl
        PerlResponseHandler Plack::Handler::Apache2
        PerlSetVar psgi_app /opt/rt4/sbin/rt-server

        AuthLDAPURL ldap://xyz.potsdam.edu/o=some_o?uid
        AuthLDAPGroupAttribute memberUid
        AuthLDAPGroupAttributeIsDN off
        AuthName "Tracking System"
        AuthType Basic
        AuthBasicProvider ldap



        use Plack::Handler::Apache2;
        Plack::Handler::Apache2->preload("/opt/rt4/sbin/rt-server");




/SelfService works but /me results in 'The page you requested could not be
found'

Granted this is not a RT issue, just wondering if anyone sees something
wrong or can help / point me in a direction to get this working.

-Ron



From falcone at bestpractical.com  Mon Feb  6 16:42:48 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Mon, 6 Feb 2012 16:42:48 -0500
Subject: [rt-users] rt-4.0.5 - How to populate a custom field using a
 web service?
In-Reply-To: 
References: 
	
	
	<3CBE8260-980C-4161-A224-EC072135D281@gmail.com>
	<4F2FDF44.7070301@kickflop.net>
	
Message-ID: <20120206214248.GC994@jibsheet.com>

On Mon, Feb 06, 2012 at 11:32:47AM -0500, Jim Lesinski wrote:
>    There seems to be a lot of confusion about what I am asking. I am sorry if I am not making
>    myself clear. Please check out the attached image which shows exactly what I am looking at.
>    Maybe I am interpreting it wrong, but the field Jeff describes is not the one I am asking
>    about. I am referring to the field below it called "Include Page" which states:
> 
>    "RT can include content from another web service when showing this custom field. Fill in this
>    field with a URL. RT will replace __id__ and __CustomField__ with the record's id and the
>    custom field's value, respectively. Some browsers may only load content from the same domain
>    as your RT server."
>    This seems to imply to me that the custom field can in fact include values from a web service.
>    Or does this mean that it can render content in an iFrame or something? If someone can clarify
>    what that field does I think that would be all I need.

This means that you can render content into an iframe using the value
of the custom field.

If your user selected "Foo" from a custom field, RT can make a call to
an external webservice with Foo and some other information and then
iframe the data into Ticket/Display.html (assuming you don't violate
any of the security restrictions on iframes).

If you want to control the values of a custom field, you will need to
read the docs/extending/external_custom_fields.pod document you
referenced earlier.

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Mon Feb  6 16:46:26 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Mon, 6 Feb 2012 16:46:26 -0500
Subject: [rt-users] Offline Edits - 4.0.2
In-Reply-To: 
References: 
Message-ID: <20120206214626.GD994@jibsheet.com>

On Mon, Feb 06, 2012 at 11:48:10AM -0500, Vance Walsh wrote:
>    My manager just mentioned he used the tool referenced here
>    http://requesttracker.wikia.com/wiki/OfflineEdits
>    before our upgrade to 4.0 and now can not find it. Has this tool been moved / changed or is
>    there a different permission set needed to use it?

It's available below the Tools menu.  If he doesn't see that menu, he
likely needs ShowConfigTab (although that right should have been
required on 3.8 also).

-kevin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From falcone at bestpractical.com  Mon Feb  6 16:48:03 2012
From: falcone at bestpractical.com (Kevin Falcone)
Date: Mon, 6 Feb 2012 16:48:03 -0500
Subject: [rt-users] a tad OT,
 need assistance with aliasing /me to /SelfService
In-Reply-To: <89366d12c81cc41e45c1514a3b6d1a9a.squirrel@bearmail.potsdam.edu>
References: <89366d12c81cc41e45c1514a3b6d1a9a.squirrel@bearmail.potsdam.edu>
Message-ID: <20120206214803.GE994@jibsheet.com>

On Mon, Feb 06, 2012 at 04:20:06PM -0500, Ronald J Yacketta wrote:
> Prior to our 3.8.8 upgrade we were able to use /me | /selfservice as an
> Alias to /SelfService in our rt.conf file. After upgrading I have been
> unable to get rt.conf to honor /me as an Alias.

I know this isn't exactly the answer to your question, but when users
log in to RT, they'll be directed to SelfService if they are
Unprivileged users.  Are you trying to push Privileged users off to
SelfService, and if so, why not just make them Unprivileged?

Also - your Apache error log is often more useful to debug these
things than the error presented in your browser.

-kevin

> here is the meat of our rt.conf
> 
> 
> ... SSL stuff ...
> Alias /me /SelfService
> Alias /selfservice /SelfService
> 
>         AllowOverride All
>         Options ExecCGI FollowSymLinks
> 
>         SetHandler modperl
>         PerlResponseHandler Plack::Handler::Apache2
>         PerlSetVar psgi_app /opt/rt4/sbin/rt-server
> 
>         AuthLDAPURL ldap://xyz.potsdam.edu/o=some_o?uid
>         AuthLDAPGroupAttribute memberUid
>         AuthLDAPGroupAttributeIsDN off
>         AuthName "Tracking System"
>         AuthType Basic
>         AuthBasicProvider ldap
> 
> 
> 
>         use Plack::Handler::Apache2;
>         Plack::Handler::Apache2->preload("/opt/rt4/sbin/rt-server");
> 
> 
> 
> 
> /SelfService works but /me results in 'The page you requested could not be
> found'
> 
> Granted this is not a RT issue, just wondering if anyone sees something
> wrong or can help / point me in a direction to get this working.
> 
> -Ron
> 
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston  March 5 & 6, 2012
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
URL: 

From yacketrj at potsdam.edu  Mon Feb  6 17:38:23 2012
From: yacketrj at potsdam.edu (Ronald J Yacketta)
Date: 6 Feb 2012 17:38:23 -0500
Subject: [rt-users] a tad OT,
 need assistance with aliasing /me to /SelfService
In-Reply-To: <20120206214803.GE994@jibsheet.com>
References: <89366d12c81cc41e45c1514a3b6d1a9a.squirrel@bearmail.potsdam.edu>
	<20120206214803.GE994@jibsheet.com>
Message-ID: <31ccc628acb8d4db6cc903e925b96e68.squirrel@bearmail.potsdam.edu>

>
> I know this isn't exactly the answer to your question, but when users
> log in to RT, they'll be directed to SelfService if they are
> Unprivileged users.  Are you trying to push Privileged users off to
> SelfService, and if so, why not just make them Unprivileged?
>

/SelfService works flawlessly, we just have a requirement to redirect /me
and /selfservice to /SelfService.

> Also - your Apache error log is often more useful to debug these
> things than the error presented in your browser.
>

I checked the logs first before posting, which tossed this cryptic entry

[Mon Feb 06 15:55:22 2012] [error] Your request path is '/me/' and it
doesn't match your Location(Match) '/opt/rt4/share/html/SelfService/'.
This should be due to the configuration error. See perldoc
Plack::Handler::Apache2 for details.

Looking at the perldoc does nothing but leave one even more bewildered.


> -kevin
>
>> here is the meat of our rt.conf
>>
>> 
>> ... SSL stuff ...
>> Alias /me /SelfService
>> Alias /selfservice /SelfService
>> 
>>         AllowOverride All
>>         Options ExecCGI FollowSymLinks
>>
>>         SetHandler modperl
>>         PerlResponseHandler Plack::Handler::Apache2
>>         PerlSetVar psgi_app /opt/rt4/sbin/rt-server
>>
>>         AuthLDAPURL ldap://xyz.potsdam.edu/o=some_o?uid
>>         AuthLDAPGroupAttribute memberUid
>>         AuthLDAPGroupAttributeIsDN off
>>         AuthName "Tracking System"
>>         AuthType Basic
>>         AuthBasicProvider ldap
>> 
>>
>> 
>>         use Plack::Handler::Apache2;
>>         Plack::Handler::Apache2->preload("/opt/rt4/sbin/rt-server");
>> 
>> 
>>
>>
>> /SelfService works but /me results in 'The page you requested could not
>> be
>> found'
>>
>> Granted this is not a RT issue, just wondering if anyone sees something
>> wrong or can help / point me in a direction to get this working.
>>
>> -Ron
>>
>> --------
>> RT Training Sessions (http://bestpractical.com/services/training.html)
>> * Boston  March 5 & 6, 2012
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston ? March 5 & 6, 2012




From jim.lesinski at gmail.com  Mon Feb  6 17:47:19 2012
From: jim.lesinski at gmail.com (Jim Lesinski)
Date: Mon, 6 Feb 2012 17:47:19 -0500
Subject: [rt-users] rt-4.0.5 - How to populate a custom field using a
	web service?
In-Reply-To: <20120206214248.GC994@jibsheet.com>
References: 
	
	
	<3CBE8260-980C-4161-A224-EC072135D281@gmail.com>
	<4F2FDF44.7070301@kickflop.net>
	
	<20120206214248.GC994@jibsheet.com>
Message-ID: 

Thanks Kevin. I did in fact misinterpret the meaning of the field then as I
thought it meant to fill the drop down values from a web service. I didn't
realize it was referring to an iFrame.


On Mon, Feb 6, 2012 at 4:42 PM, Kevin Falcone wrote:

> On Mon, Feb 06, 2012 at 11:32:47AM -0500, Jim Lesinski wrote:
> >    There seems to be a lot of confusion about what I am asking. I am
> sorry if I am not making
> >    myself clear. Please check out the attached image which shows exactly
> what I am looking at.
> >    Maybe I am interpreting it wrong, but the field Jeff describes is not
> the one I am asking
> >    about. I am referring to the field below it called "Include Page"
> which states:
> >
> >    "RT can include content from another web service when showing this
> custom field. Fill in this
> >    field with a URL. RT will replace __id__ and __CustomField__ with the
> record's id and the
> >    custom field's value, respectively. Some browsers may only load
> content from the same domain
> >    as your RT server."
> >    This seems to imply to me that the custom field can in fact include
> values from a web service.
> >    Or does this mean that it can render content in an iFrame or
> something? If someone can clarify
> >    what that field does I think that would be all I need.
>
> This means that you can render content into an iframe using the value
> of the custom field.
>
> If your user selected "Foo" from a custom field, RT can make a call to
> an external webservice with Foo and some other information and then
> iframe the data into Ticket/Display.html (assuming you don't violate
> any of the security restrictions on iframes).
>
> If you want to control the values of a custom field, you will need to
> read the docs/extending/external_custom_fields.pod document you
> referenced earlier.
>
> -kevin
>
> --------
> RT Training Sessions (http://bestpractical.com/services/training.html)
> * Boston ? March 5 & 6, 2012
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 

From bwiese at ElementPS.com  Mon Feb  6 17:46:13 2012
From: bwiese at ElementPS.com (Brent Wiese)
Date: Mon, 6 Feb 2012 15:46:13 -0700
Subject: [rt-users] CustomField input must match formatting in edit
Message-ID: <7ECD0C8955ADE149B95716B364B4D58F26CF8BD3E8@EXCCR01.eps.local>

I've noticed this in both IE and FireFox. I'm running 4.0.4.

When editing a ticket that has custom fields with validation (mandatory), some of them display the "Input must match..." under the CF name, not the entry.

For example (hopefully this will format right on the listserv), if I have a select 1 value dropdown, it will look like this:

CF Name                                              <>
 Select one value
                                                                Input must match [Mandatory]

In other types of fields, like a text area, it looks like this:

CF Name                                                              <