The modules.conf file controls which
modules are loaded or not loaded at Asterisk startup. This is done through
the use of the load => or noload => constructs.
This file is a key component to building a secure Asterisk installation: best practice suggests that only required modules be loaded.
The modules.conf file always starts with the
[modules] header. The autoload statement tells Asterisk whether to
automatically load all modules contained within the modules directory or
to load only those modules specifically defined by load => statements. We recommend you manually
load only those modules you need, but many people find it easier to let
Asterisk attempt to autoload whatever
it finds in /usr/lib/asterisk/modules. You can then
exclude[164] certain modules with noload
=> statements.
Here’s a sample modules.conf file:
[modules]
autoload=no ; set this to yes and Asterisk will load any
; modules it finds in /usr/lib/asterisk/modules
load => res_adsi.so
load => pbx_config.so ; Requires: N/A
load => chan_iax2.so ; Requires: res_crypto.so, res_features.so
load => chan_sip.so ; Requires: res_features.so
load => codec_alaw.so ; Requires: N/A
load => codec_gsm.so ; Requires: N/A
load => codec_ulaw.so ; Requires: N/A
load => format_gsm.so ; Requires: N/A
load => app_dial.so ; Requires: res_features.so, res_musiconhold.soSince we assume Asterisk is built on Linux, all the module names we use end in a .so extension. However, this may not be the case if you have built Asterisk on a different operating system.
As of this writing, there are eight module types: resources, applications, Call Detail Record database connectors, channels, codecs, formats, PBX modules, and standalone functions. Let’s take a look at each of them.
[164] With the advent of the new menuselect system, this best practice may no longer be necessary if you are building only the modules you need in the first place