Pipe (Fetchmail)

Maybe you want to add emails via Fetchmail and Procmail to Zammad.

To get this to work you need to pipe your emails to rails.

Command line

su - zammad
cd /opt/zammad
cat test/fixtures/mail1.box | rails r 'Channel::Driver::MailStdin.new(trusted: true)'

Fetchmail

Create .fetchmailrc

su - zammad
cd ~
touch .fetchmailrc
chmod 0600 .fetchmailrc

vi .fetchmailrc

#
# zammad fetchmail config
#

poll your.mail.server protocol POP3 user USERNAME pass PASSWORD mda “rails r ‘Channel::Driver::MailStdin.new(trusted: true)’”

That’s it. Emails now will be directly piped into Zammad.

Using Procmail for advanced features like presorting

If you want to do some more with your emails, like presorting to a Zammad group or filtering spam, you can use Procmail.

Fetchmail config looks slightly different.

vi .fetchmailrc

#
# zammad fetchmail config
#
poll your.mail.server protocol POP3 user USERNAME pass PASSWORD mda /usr/bin/procmail is zammad here

Create .procmailrc

su - zammad
cd ~
touch .procmailrc

vi .procmailrc

# --
# Pipe all emails into Zammad
# --
PATH=/opt/zammad/bin:/opt/zammad/vendor/bundle/bin:/sbin:/bin:/usr/sbin:/usr/bin:
SYS_HOME="/home/zammad"
RAILS_ENV=production
GEM_PATH=/opt/zammad/vendor/bundle/ruby/2.4.1/
LOGFILE="$SYS_HOME/procmail.log"
#VERBOSE="on"

:0 :
| rails r 'Channel::Driver::MailStdin.new(trusted: true)'

Supported email headers for presorting

Ticket attributes

For ticket creation use “X-Zammad-Ticket-Attribute: some value”. If you want to change ticket attributes on follow-up, use “X-Zammad-Ticket-FollowUp-Attribute: some value”.

X-Zammad-Ticket-Priority

  • Sets priority of ticket (for available priorities check Zammad’s database).
  • Example: X-Zammad-Ticket-Priority: (1 low|2 normal|3 high)

X-Zammad-Ticket-Group

  • Presorts by group (highest sort priority).
  • Example: X-Zammad-Ticket-Group: [one system group]

X-Zammad-Ticket-Owner

  • Assigns ticket to agent.
  • Example: X-Zammad-Ticket-Owner: [login of agent]

X-Zammad-Ticket-State

  • Sets state of ticket (for available states check Zammad’s database)! Be careful!
  • Example: X-Zammad-Ticket-State: (new|open|…)

X-Zammad-Customer-Email

  • Sets customer via explicit email address.
  • Example: X-Zammad-Customer-Email: [email address]

X-Zammad-Customer-Login

  • Sets customer via explicit login.
  • Example: X-Zammad-Customer-Login: [login]

Article attributes

Everytime an article is being created (new ticket or/and follow up) you can use “X-Zammad-Article-Attribute: some value”.

X-Zammad-Article-Sender

  • Info about the sender.
  • Example: X-Zammad-Article-Sender: (Agent|System|Customer)

X-Zammad-Article-Type

  • Article type (for available types check Zammad’s database).
  • Example: X-Zammad-Article-Type: (email|phone|fax|sms|webrequest|note|twitter status|direct-message|facebook|…)

X-Zammad-Article-Visibility

  • Article visibility.
  • Example: X-Zammad-Article-Visibility: (internal|external)

Ignore Header

  • If you want to ignore an email, just set the “X-Zammad-Ignore” header.
  • Example: X-Zammad-Ignore: [yes|true]