Run Jasmin in both directions: message_payload, data_sm and a multipart deadlock confirmed against a production gateway

This commit is contained in:
2026-09-06 02:24:32 +02:00
parent db02f0058d
commit 66b49ebfb3
7 changed files with 1858 additions and 1 deletions
@@ -0,0 +1,654 @@
#
# This is the main Jasmin SMS gateway configuration file.
# For any modifications to this file, refer to Jasmin Documentation.
# If that does not help, post your question on Jasmin's web forum
# hosted at Google Groups: https://groups.google.com/group/jasmin-sms-gateway
#
# Do NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsure
# consult the online docs.
[smpp-server]
# SMPP Server identifier
#id = "smpps_01"
# If you want you can bind a single interface, you can specify its IP here
#bind = 0.0.0.0
# Accept connections on the specified port, default is 2775
#port = 2775
# Activate billing feature
# May be disabled if not needed/used
#billing_feature = True
# Timeout for response to bind request
#sessionInitTimerSecs = 30
# Enquire link interval
#enquireLinkTimerSecs = 30
# Maximum time lapse allowed between transactions, after which,
# the connection is considered as inactive
#inactivityTimerSecs = 300
# Timeout for responses to any request PDU
#responseTimerSecs = 60
# Timeout for reading a single PDU, this is the maximum lapse of time between
# receiving PDU's header and its complete read, if the PDU reading timed out,
# the connection is considered as 'corrupt' and will reconnect
#pduReadTimerSecs = 10
# When message is routed to a SMPP Client connecter: How much time it is kept in
# redis waiting for receipt
#dlr_expiry = 86400
# Specify the server verbosity level.
# This can be one of:
# NOTSET (disable logging)
# DEBUG (a lot of information, useful for development/testing)
# INFO (moderately verbose, what you want in production probably)
# WARNING (only very important / critical messages and errors are logged)
# ERROR (only errors / critical messages are logged)
# CRITICAL (only critical messages are logged)
#log_level = INFO
# Specify the log file path
#log_file = /var/log/jasmin/default-smpps_01.log
# When to rotate the log file, possible values:
# S: Seconds
# M: Minutes
# H: Hours
# D: Days
# W0-W6: Weekday (0=Monday)
# midnight: Roll over at midnight
#log_rotate = midnight
# The following directives define logging patterns including:
# - log_format: using python logging's attributes
# refer to https://docs.python.org/2/library/logging.html#logrecord-attributes
# -log_date_format: using python strftime formating directives
# refer to https://docs.python.org/2/library/time.html#time.strftime
#log_format = %(asctime)s %(levelname)-8s %(process)d %(message)s
#log_date_format = %Y-%m-%d %H:%M:%S
#log_privacy = False
[smpp-server-pb]
# If you want you can bind a single interface, you can specify its IP here
#bind = 0.0.0.0
# Accept connections on the specified port, default is 14000
#port = 14000
# If authentication is True, access will require entering a username and password
# as defined in admin_username and admin_password, you can disable this security
# layer by setting authentication to False, in this case admin_* values are ignored.
#authentication = True
#admin_username = smppsadmin
# This is a MD5 password digest hex encoded
#admin_password = e97ab122faa16beea8682d84f3d2eea4
# Specify the server verbosity level.
# This can be one of:
# NOTSET (disable logging)
# DEBUG (a lot of information, useful for development/testing)
# INFO (moderately verbose, what you want in production probably)
# WARNING (only very important / critical messages and errors are logged)
# ERROR (only errors / critical messages are logged)
# CRITICAL (only critical messages are logged)
#log_level = INFO
# Specify the log file path
#log_file = /var/log/jasmin/smpp-server-pb.log
# When to rotate the log file, possible values:
# S: Seconds
# M: Minutes
# H: Hours
# D: Days
# W0-W6: Weekday (0=Monday)
# midnight: Roll over at midnight
#log_rotate = W6
# The following directives define logging patterns including:
# - log_format: using python logging's attributes
# refer to https://docs.python.org/2/library/logging.html#logrecord-attributes
# -log_date_format: using python strftime formating directives
# refer to https://docs.python.org/2/library/time.html#time.strftime
#log_format = %(asctime)s %(levelname)-8s %(process)d %(message)s
#log_date_format = %Y-%m-%d %H:%M:%S
[client-management]
# Jasmin persists its configuration profiles in /etc/jasmin/store by
# default. You can specify a custom location here
#store_path = /etc/jasmin/store
# If you want you can bind a single interface, you can specify its IP here
#bind = 0.0.0.0
# Accept connections on the specified port, default is 8989
#port = 8989
# If authentication is True, access will require entering a username and password
# as defined in admin_username and admin_password, you can disable this security
# layer by setting authentication to False, in this case admin_* values are ignored.
#authentication = True
#admin_username = cmadmin
# This is a MD5 password digest hex encoded
#admin_password = e1c5136acafb7016bc965597c992eb82
# Specify the server verbosity level.
# This can be one of:
# NOTSET (disable logging)
# DEBUG (a lot of information, useful for development/testing)
# INFO (moderately verbose, what you want in production probably)
# WARNING (only very important / critical messages and errors are logged)
# ERROR (only errors / critical messages are logged)
# CRITICAL (only critical messages are logged)
#log_level = INFO
# Specify the log file path
#log_file = /var/log/jasmin/smppclient-manager.log
# When to rotate the log file, possible values:
# S: Seconds
# M: Minutes
# H: Hours
# D: Days
# W0-W6: Weekday (0=Monday)
# midnight: Roll over at midnight
#log_rotate = W6
# The following directives define logging patterns including:
# - log_format: using python logging's attributes
# refer to https://docs.python.org/2/library/logging.html#logrecord-attributes
# -log_date_format: using python strftime formating directives
# refer to https://docs.python.org/2/library/time.html#time.strftime
#log_format = %(asctime)s %(levelname)-8s %(process)d %(message)s
#log_date_format = %Y-%m-%d %H:%M:%S
# The protocol version used to pickle objects before transfering
# them to client side, this is used in the client manager only,
# the pickle protocol defined in SMPPClientManagerPBProxy is set
# to 2 and is not configurable
#pickle_protocol = 2
[service-smppclient]
# For each smppclient connector a service is associated
# refer to "Message flows" documentation for more details
# Specify the server verbosity level.
# This can be one of:
# NOTSET (disable logging)
# DEBUG (a lot of information, useful for development/testing)
# INFO (moderately verbose, what you want in production probably)
# WARNING (only very important / critical messages and errors are logged)
# ERROR (only errors / critical messages are logged)
# CRITICAL (only critical messages are logged)
#log_level = INFO
# Specify the log file path
#log_file = /var/log/jasmin/service-smppclients.log
# When to rotate the log file, possible values:
# S: Seconds
# M: Minutes
# H: Hours
# D: Days
# W0-W6: Weekday (0=Monday)
# midnight: Roll over at midnight
#log_rotate = W6
# The following directives define logging patterns including:
# - log_format: using python logging's attributes
# refer to https://docs.python.org/2/library/logging.html#logrecord-attributes
# -log_date_format: using python strftime formating directives
# refer to https://docs.python.org/2/library/time.html#time.strftime
#log_format = %(asctime)s %(levelname)-8s %(process)d %(message)s
#log_date_format = %Y-%m-%d %H:%M:%S
[sm-listener]
# SM listener consumes submit_sm and deliver_sm messages from amqp broker
# refer to "Message flows" documentation for more details
# If publish_submit_sm_resp is True, any received SubmitSm PDU will be published
# to the 'messaging' exchange on 'submit.sm.resp.CID' route, useful when you have
# a third party application waiting for these messages.
#publish_submit_sm_resp = False
# If the error is defined in submit_error_retrial, Jasmin will retry sending submit_sm if it
# gets one of these errors.
# submit_sm retrial will be executed 'count' times and delayed for 'delay' seconds each time.
#submit_error_retrial = {
# 'ESME_RSYSERR': {'count': 2, 'delay': 30},
# 'ESME_RTHROTTLED': {'count': 20, 'delay': 30},
# 'ESME_RMSGQFUL': {'count': 2, 'delay': 180},
# 'ESME_RINVSCHED': {'count': 2, 'delay': 300},
# }
# The maximum number of seconds a message can stay in queue waiting for SMPPC to get ready for
# delivey (connected and bound).
#submit_max_age_smppc_not_ready = 1200
# Delay (seconds) when retrying a submit with a not-yet ready SMPPc
# Hint: for large scale messaging deployment, it is advised to set this value to few seconds
# in order to keep Jasmin free.
#submit_retrial_delay_smppc_not_ready = 30
# Specify the server verbosity level.
# This can be one of:
# NOTSET (disable logging)
# DEBUG (a lot of information, useful for development/testing)
# INFO (moderately verbose, what you want in production probably)
# WARNING (only very important / critical messages and errors are logged)
# ERROR (only errors / critical messages are logged)
# CRITICAL (only critical messages are logged)
#log_level = INFO
# Specify the log file path
#log_file = /var/log/jasmin/messages.log
# When to rotate the log file, possible values:
# S: Seconds
# M: Minutes
# H: Hours
# D: Days
# W0-W6: Weekday (0=Monday)
# midnight: Roll over at midnight
#log_rotate = midnight
# The following directives define logging patterns including:
# - log_format: using python logging's attributes
# refer to https://docs.python.org/2/library/logging.html#logrecord-attributes
# -log_date_format: using python strftime formating directives
# refer to https://docs.python.org/2/library/time.html#time.strftime
#log_format = %(asctime)s %(levelname)-8s %(process)d %(message)s
#log_date_format = %Y-%m-%d %H:%M:%S
#log_privacy = False
[dlr]
# DLRLookup process id
#pid = main
# DLRLookup mechanism configuration
#dlr_lookup_retry_delay = 10
#dlr_lookup_max_retries = 2
# If smpp_receipt_on_success_submit_sm_resp is True, every connected user to smpp server will
# receive a receipt (data_sm or deliver_sm) whenever a submit_sm_resp is received
# for a message he sent and requested receipt for it.
#smpp_receipt_on_success_submit_sm_resp = False
# Specify the server verbosity level.
# This can be one of:
# NOTSET (disable logging)
# DEBUG (a lot of information, useful for development/testing)
# INFO (moderately verbose, what you want in production probably)
# WARNING (only very important / critical messages and errors are logged)
# ERROR (only errors / critical messages are logged)
# CRITICAL (only critical messages are logged)
#log_level = INFO
# Specify the log file path
#log_file = /var/log/jasmin/messages.log
# When to rotate the log file, possible values:
# S: Seconds
# M: Minutes
# H: Hours
# D: Days
# W0-W6: Weekday (0=Monday)
# midnight: Roll over at midnight
#log_rotate = midnight
# The following directives define logging patterns including:
# - log_format: using python logging's attributes
# refer to https://docs.python.org/2/library/logging.html#logrecord-attributes
# -log_date_format: using python strftime formating directives
# refer to https://docs.python.org/2/library/time.html#time.strftime
#log_format = %(asctime)s %(levelname)-8s %(process)d %(message)s
#log_date_format = %Y-%m-%d %H:%M:%S
#log_privacy = False
[amqp-broker]
host=rabbitmq
port=5672
# The following directives define the way how Jasmin is connecting to the AMQP Broker,
# default values must work with a freshly installed RabbitMQ server.
#host = 127.0.0.1
#vhost = /
#spec = /etc/jasmin/resource/amqp0-9-1.xml
#port = 5672
#username = guest
#password = guest
#heartbeat = 0
# Specify the server verbosity level.
# This can be one of:
# NOTSET (disable logging)
# DEBUG (a lot of information, useful for development/testing)
# INFO (moderately verbose, what you want in production probably)
# WARNING (only very important / critical messages and errors are logged)
# ERROR (only errors / critical messages are logged)
# CRITICAL (only critical messages are logged)
#log_level = INFO
# Specify the log file path
#log_file = /var/log/jasmin/amqp-client.log
# When to rotate the log file, possible values:
# S: Seconds
# M: Minutes
# H: Hours
# D: Days
# W0-W6: Weekday (0=Monday)
# midnight: Roll over at midnight
#log_rotate = W6
# The following directives define logging patterns including:
# - log_format: using python logging's attributes
# refer to https://docs.python.org/2/library/logging.html#logrecord-attributes
# -log_date_format: using python strftime formating directives
# refer to https://docs.python.org/2/library/time.html#time.strftime
#log_format = %(asctime)s %(levelname)-8s %(process)d %(message)s
#log_date_format = %Y-%m-%d %H:%M:%S
#connection_loss_retry = True
#connection_failure_retry = True
#connection_loss_retry_delay = 10
#connection_loss_failure_delay = 10
[http-api]
# If you want you can bind a single interface, you can specify its IP here
#bind = 0.0.0.0
# Accept connections on the specified port, default is 1401
#port = 1401
# Activate billing feature
# May be disabled if not needed/used
#billing_feature = True
# How many message parts you can get for a long message, default is 5 so you
# can't exceed 800 characters (160x5) when sending a long latin message.
#long_content_max_parts = 5
# Splitting long content can be made through SAR options or UDH
# Possible values are: sar and udh
#long_content_split = udh
# Specify the access log file path
#access_log = /var/log/jasmin/http-access.log
# Specify the server verbosity level.
# This can be one of:
# NOTSET (disable logging)
# DEBUG (a lot of information, useful for development/testing)
# INFO (moderately verbose, what you want in production probably)
# WARNING (only very important / critical messages and errors are logged)
# ERROR (only errors / critical messages are logged)
# CRITICAL (only critical messages are logged)
#log_level = INFO
# Specify the log file path
#log_file = /var/log/jasmin/http-api.log
# When to rotate the log file, possible values:
# S: Seconds
# M: Minutes
# H: Hours
# D: Days
# W0-W6: Weekday (0=Monday)
# midnight: Roll over at midnight
#log_rotate = W6
# The following directives define logging patterns including:
# - log_format: using python logging's attributes
# refer to https://docs.python.org/2/library/logging.html#logrecord-attributes
# -log_date_format: using python strftime formating directives
# refer to https://docs.python.org/2/library/time.html#time.strftime
#log_format = %(asctime)s %(levelname)-8s %(process)d %(message)s
#log_date_format = %Y-%m-%d %H:%M:%S
#log_privacy = False
[router]
# Jasmin router persists its routing configuration profiles in /etc/jasmin/store by
# default. You can specify a custom location here
#store_path = /etc/jasmin/store
# Router will automatically persist users and groups to disk whenever a critical information
# is updated (ex: user balance), persistence is executed every persistence_timer_secs
#persistence_timer_secs = 60
# If you want you can bind a single interface, you can specify its IP here
#bind = 0.0.0.0
# Accept connections on the specified port, default is 8988
#port = 8988
# If authentication is True, access will require entering a username and password
# as defined in admin_username and admin_password, you can disable this security
# layer by setting authentication to False, in this case admin_* values are ignored.
#authentication = True
#admin_username = radmin
# This is a MD5 password digest hex encoded
#admin_password = 82a606ca5a0deea2b5777756788af5c8
# Specify the server verbosity level.
# This can be one of:
# NOTSET (disable logging)
# DEBUG (a lot of information, useful for development/testing)
# INFO (moderately verbose, what you want in production probably)
# WARNING (only very important / critical messages and errors are logged)
# ERROR (only errors / critical messages are logged)
# CRITICAL (only critical messages are logged)
#log_level = INFO
# Specify the log file path
#log_file = /var/log/jasmin/router.log
# When to rotate the log file, possible values:
# S: Seconds
# M: Minutes
# H: Hours
# D: Days
# W0-W6: Weekday (0=Monday)
# midnight: Roll over at midnight
#log_rotate = W6
# The following directives define logging patterns including:
# - log_format: using python logging's attributes
# refer to https://docs.python.org/2/library/logging.html#logrecord-attributes
# -log_date_format: using python strftime formating directives
# refer to https://docs.python.org/2/library/time.html#time.strftime
#log_format = %(asctime)s %(levelname)-8s %(process)d %(message)s
#log_date_format = %Y-%m-%d %H:%M:%S
# The protocol version used to pickle objects before transfering
# them to client side, this is used in the client manager only,
# the pickle protocol defined in SMPPClientManagerPBProxy is set
# to 2 and is not configurable
#pickle_protocol = 2
[deliversm-thrower]
# The following directives define the process of delivery SMS-MO through http to third party
# application, it is explained in "HTTP API" documentation
# Sets socket timeout in seconds for outgoing client http connections.
#http_timeout = 30
# Define how many seconds should pass within the queuing system for retrying a failed throw.
#retry_delay = 30
# Define how many retries should be performed for failing throws of SMS-MO.
#max_retries = 3
# Specify the server verbosity level.
# This can be one of:
# NOTSET (disable logging)
# DEBUG (a lot of information, useful for development/testing)
# INFO (moderately verbose, what you want in production probably)
# WARNING (only very important / critical messages and errors are logged)
# ERROR (only errors / critical messages are logged)
# CRITICAL (only critical messages are logged)
#log_level = INFO
# Specify the log file path
#log_file = /var/log/jasmin/deliversm-thrower.log
# When to rotate the log file, possible values:
# S: Seconds
# M: Minutes
# H: Hours
# D: Days
# W0-W6: Weekday (0=Monday)
# midnight: Roll over at midnight
#log_rotate = W6
# The following directives define logging patterns including:
# - log_format: using python logging's attributes
# refer to https://docs.python.org/2/library/logging.html#logrecord-attributes
# -log_date_format: using python strftime formating directives
# refer to https://docs.python.org/2/library/time.html#time.strftime
#log_format = %(asctime)s %(levelname)-8s %(process)d %(message)s
#log_date_format = %Y-%m-%d %H:%M:%S
[dlr-thrower]
# The following directives define the process of delivering delivery-receipts through http to third party
# application, it is explained in "HTTP API" documentation
# Sets socket timeout in seconds for outgoing client http connections.
#http_timeout = 30
# Define how many seconds should pass within the queuing system for retrying a failed throw.
#retry_delay = 30
# Define how many retries should be performed for failing throws of DLR.
#max_retries = 3
# Specify the pdu type to consider when throwing a receipt through SMPPs, possible values:
# - data_sm
# - deliver_sm (default pdu)
dlr_pdu = data_sm
# Specify the server verbosity level.
# This can be one of:
# NOTSET (disable logging)
# DEBUG (a lot of information, useful for development/testing)
# INFO (moderately verbose, what you want in production probably)
# WARNING (only very important / critical messages and errors are logged)
# ERROR (only errors / critical messages are logged)
# CRITICAL (only critical messages are logged)
#log_level = INFO
# Specify the log file path
#log_file = /var/log/jasmin/dlr-thrower.log
# When to rotate the log file, possible values:
# S: Seconds
# M: Minutes
# H: Hours
# D: Days
# W0-W6: Weekday (0=Monday)
# midnight: Roll over at midnight
#log_rotate = W6
# The following directives define logging patterns including:
# - log_format: using python logging's attributes
# refer to https://docs.python.org/2/library/logging.html#logrecord-attributes
# -log_date_format: using python strftime formating directives
# refer to https://docs.python.org/2/library/time.html#time.strftime
#log_format = %(asctime)s %(levelname)-8s %(process)d %(message)s
#log_date_format = %Y-%m-%d %H:%M:%S
[redis-client]
host=redis
port=6379
# The following directives define the way how Jasmin is connecting to the redis server,
# default values must work with a freshly installed redis server.
#host = 127.0.0.1
#port = 6379
#dbid = 0
#password = None
#poolsize = 10
# Specify the server verbosity level.
# This can be one of:
# NOTSET (disable logging)
# DEBUG (a lot of information, useful for development/testing)
# INFO (moderately verbose, what you want in production probably)
# WARNING (only very important / critical messages and errors are logged)
# ERROR (only errors / critical messages are logged)
# CRITICAL (only critical messages are logged)
#log_level = INFO
# Specify the log file path
#log_file = /var/log/jasmin/redis-client.log
# When to rotate the log file, possible values:
# S: Seconds
# M: Minutes
# H: Hours
# D: Days
# W0-W6: Weekday (0=Monday)
# midnight: Roll over at midnight
#log_rotate = W6
# The following directives define logging patterns including:
# - log_format: using python logging's attributes
# refer to https://docs.python.org/2/library/logging.html#logrecord-attributes
# -log_date_format: using python strftime formating directives
# refer to https://docs.python.org/2/library/time.html#time.strftime
#log_format = %(asctime)s %(levelname)-8s %(process)d %(message)s
#log_date_format = %Y-%m-%d %H:%M:%S
[jcli]
bind=0.0.0.0
# If you want you can bind a single interface, you can specify its IP here
#bind = 127.0.0.1
# Accept connections on the specified port, default is 8990
#port = 8990
# If authentication is True, access will require entering a username and password
# as defined in admin_username and admin_password, you can disable this security
# layer by setting authentication to False, in this case admin_* values are ignored.
#authentication = True
#admin_username = jcliadmin
# This is a MD5 password digest hex encoded
#admin_password = 79e9b0aa3f3e7c53e916f7ac47439bcb
# Specify the server verbosity level.
# This can be one of:
# NOTSET (disable logging)
# DEBUG (a lot of information, useful for development/testing)
# INFO (moderately verbose, what you want in production probably)
# WARNING (only very important / critical messages and errors are logged)
# ERROR (only errors / critical messages are logged)
# CRITICAL (only critical messages are logged)
#log_level = INFO
# Specify the log file path
#log_file = /var/log/jasmin/jcli.log
# When to rotate the log file, possible values:
# S: Seconds
# M: Minutes
# H: Hours
# D: Days
# W0-W6: Weekday (0=Monday)
# midnight: Roll over at midnight
#log_rotate = W6
# The following directives define logging patterns including:
# - log_format: using python logging's attributes
# refer to https://docs.python.org/2/library/logging.html#logrecord-attributes
# -log_date_format: using python strftime formating directives
# refer to https://docs.python.org/2/library/time.html#time.strftime
#log_format = %(asctime)s %(levelname)-8s %(process)d %(message)s
#log_date_format = %Y-%m-%d %H:%M:%S
[interceptor-client]
# The following directives define client connector to InterceptorPB, it's used when jasmind
# is started with --enable-interceptor-client
#host = 127.0.0.1
#port = 8987
#username = iadmin
#password = ipwd