Я пытаюсь получить входящую электронную почту, чтобы она автоматически попадала прямо в ту очередь / билет, к которой они относятся, или создаю новую, если таковой не существует и используется правильная настройка электронной почты очереди в веб-интерфейсе.
У меня будет слишком много очередей, чтобы в каждой очереди было две позиции в 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