Watch your inbox with Fetchmail

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

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

Note

If you installed Zammad through a package manager (rather than from source), replace rails r with zammad run rails r below. To learn more, see Administration via Console.

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

Presorting based on email headers currently works for the following Ticket- and Article-Attributes.

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]