Назад | Перейти на главную страницу

Best Practical RT, автоматическая сортировка писем в очереди с помощью procmail

Я пытаюсь получить входящую электронную почту, чтобы она автоматически попадала прямо в ту очередь / билет, к которой они относятся, или создаю новую, если таковой не существует и используется правильная настройка электронной почты очереди в веб-интерфейсе.

У меня будет слишком много очередей, чтобы в каждой очереди было две позиции в mailgate.

Подобный вопрос обсуждался здесь (Procmail: конвейер для программы, в противном случае вернуть ошибку отправителю), но я подумал, что лучше открыть новое дело вместо того, чтобы отмечать то, что казалось ответом на вопрос этого человека.

Я могу отправлять и получать электронную почту (через PostFix) пользователю rt по умолчанию, и этот пользователь успешно принимает всю электронную почту для соответствующего домена.

Я понятия не имею, куда отправляется электронное письмо - оно успешно доставлено, но не обновляет существующие билеты (с совпадением строки темы) и не создает новых.

Вот и пример моего ./procmail.log:

procmail: [23048] Mon Aug 23 14:26:01 2010
procmail: Assigning "MAILDOMAIN=rt.mydomain.com
"
procmail: Assigning "RT_MAILGATE=/opt/rt3/bin/rt-mailgate
"
procmail: Assigning "RT_URL=http://rt.mydomain.com/
"
procmail: Assigning "LOGABSTRACT=all
"
procmail: Skipped "
"
procmail: Skipped "
"
procmail: Assigning "LASTFOLDER={
"
procmail: Opening "{
"
procmail: Acquiring kernel-lock
procmail: Notified comsat: "rt@18337:./{
"
From me@mydomain.com  Mon Aug 23 14:26:01 2010
 Subject: RE: [RT.mydomain.com #1] Test Ticket 
  Folder: {            1616

Означает ли уведомленная часть comsat, что она уведомила RT?

Содержимое моего ./procmailrc:

#Preliminaries
 SHELL=/bin/sh               #Use the Bourne shell (check your path!)
 #MAILDIR=${HOME}        #First check what your mail directory is!
 MAILDIR="/var/mail/rt/"
 LOGFILE="home/rt//procmail.log"
 LOG="--- Logging ${LOGFILE} for ${LOGNAME}, "
 VERBOSE=yes
 MAILDOMAIN="rt.mydomain.com"
 RT_MAILGATE="/opt/rt3/bin/rt-mailgate"
 #RT_MAILGATE="/usr/local/bin/rt-mailgate"
 RT_URL="http://rt.mydomain.com/"

 LOGABSTRACT=all


 :0
 {
 # the following line extracts the recipient from Received-headers.
 # Simply using the To: does not work, as tickets are often created
 # by sending a CC/BCC to RT
 TO=`formail -c -xReceived: |grep $MAILDOMAIN |sed -e 's/.*for *<*\(.*\)>* *;.*$/\1/'`
 QUEUE=`echo $TO| $HOME/get_queue.pl`
 ACTION=`echo $TO| $HOME/get_action.pl`
 :0 h b w 
 |/usr/bin/perl $RT_MAILGATE --queue $QUEUE --action $ACTION --url $RT_URL
 }

Я знаю, что мои сценарии get_queue.pl и get_action.pl работают, поскольку они были ранее протестированы.

Будем очень признательны за любую помощь и / или руководство, которое вы можете дать.

Возможно, вы захотите перенести функцию маршрутизации на RT вместо того, чтобы пытаться реализовать ее в procmail. Пусть письмо будет отправлено в RT, а затем используйте что-то вроде примеров сценария EmailRouting или SetOwnerAndQueueBySubject, чтобы сократить письмо в соответствующую очередь.

Из RT Wiki ( https://rt-wiki.bestpractical.com/wiki/Main_Page ):

EmailRouting -> https://rt-wiki.bestpractical.com/wiki/EmailRouting

SetOwnerAndQueueBySubject -> https://rt-wiki.bestpractical.com/wiki/SetOwnerAndQueueBySubject