Blob Blame History Raw
# Port number to use for LMTP. The host is assumed to be the same as for IMAP.
lmtp_port = 24
# Maximum number of concurrent LMTP connections.
lmtp_max_parallel_count = 10

# Total number of users used for the test. This is divided between user {}
# according to their count=n% settings.
total_user_count = 1000
# Spread the initial connections at startup equally to this time period.
# This way there's not a huge connection spike at startup that overloads
# the server.
rampup_time = 30s

##
## Users
##

# User profiles describe how the users are expected to behave. There can be
# one or more user profiles.

user aggressive {
  # Username template format. %n expands to the user index number.
  username_format = test%n
  # The first index number to use for users in this profile. Usually different
  # user profiles should either not overlap or overlap only partially (to
  # describe users who have different behaviors with different clients).
  #username_start_index = 1
  # It's possible to give the list of usernames from a file. Each line in the
  # file contains either "username" or "username:password". If password isn't
  # specified, the global password is used. This setting overrides
  # username_format and username_start_index settings.
  #userfile = 
  # Percentage of total_user_count to assign for this user profile.
  count = 100%

  # How long the IMAP connection is kept open before disconnecting.
  mail_session_length = 3 min

  # How often emails are delivered to INBOX
  mail_inbox_delivery_interval = 10s
  # How often emails are delivered to Spam
  mail_spam_delivery_interval = 5s

  # How quickly user acts on an incoming email. This is calculated from the
  # time the user's IMAP connection has seen the new message and FETCHed its
  # metadata. This may be a long time after the actual mail delivery in case
  # all users don't have active IMAP connections all the time.
  mail_action_delay = 2s
  # After the initial action, how quickly is the next action performed.
  mail_action_repeat_delay = 1s
  # Likelyhood of incoming mail being moved to Spam mailbox immediately when
  # noticed by the IMAP client. mail_action_delay won't affect this.
  mail_inbox_move_filter_percentage = 10

  # How often are outgoing mails sent. The mail is initially written to the
  # Drafts mailbox, and after mail_write_duration it's written to the Sent
  # mailbox and deleted from Drafts.
  mail_send_interval = 10s
  mail_write_duration = 5s

  # Below percentages describe the likelyhood of mail actions being performed
  # for incoming mails. The actions are performed in the given order and
  # multiple actions can be performed on the same mail.

  # Mail is marked as \Deleted and UID EXPUNGEd
  mail_inbox_delete_percentage = 5
  # Mail is moved to Spam
  mail_inbox_move_percentage = 5
  # Mail is replied to: APPEND via Drafts and Sent mailboxes and add
  # \Answered flag
  mail_inbox_reply_percentage = 50
}

user normal {
  username_format = test%n
  #username_start_index = 500
  #userfile = 
  count = 0%

  mail_inbox_delivery_interval = 5 min
  mail_spam_delivery_interval = 3 min
  mail_action_delay = 3 min
  mail_action_repeat_delay = 10s
  mail_session_length = 20 min

  mail_send_interval = 10 min
  mail_write_duration = 2 min

  mail_inbox_reply_percentage = 50
  mail_inbox_delete_percentage = 5
  mail_inbox_move_percentage = 5
  mail_inbox_move_filter_percentage = 10
}

##
## Clients
##

# Client profiles describe how the emulated clients are expected to behave.

client Thunderbird {
  count = 80%
  connection_max_count = 5
  imap_idle = yes
  imap_fetch_immediate = UID RFC822.SIZE FLAGS BODY.PEEK[HEADER.FIELDS (From To Cc Bcc Subject Date Message-ID Priority X-Priority References Newsgroups In-Reply-To Content-Type)]
  imap_fetch_manual = RFC822.SIZE BODY[]
  imap_status_interval = 5 min
}

client AppleMail {
  count = 20%
  connection_max_count = 5
  imap_idle = yes
  imap_fetch_immediate = INTERNALDATE UID RFC822.SIZE FLAGS BODY.PEEK[HEADER.FIELDS (date subject from to cc message-id in-reply-to references x-priority x-uniform-type-identifier x-universally-unique-identifier)] MODSEQ
  imap_fetch_manual = BODYSTRUCTURE BODY.PEEK[]
  imap_status_interval = 5 min
}