Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Building Telephony Systems With Asterisk (2005).pdf
Скачиваний:
45
Добавлен:
17.08.2013
Размер:
1.82 Mб
Скачать

Chapter 4

As you can see, the definitions can be as short as one line (assuming we defined our default context in the general section) or as long as we need them to be. Now we need to edit our SIP configuration file for our needs. Take a look at the terminal devices that we listed in Chapter 2 on which we selected SIP as our protocol. We now have enough knowledge to be able to create a user for each one of them.

IAX Interfaces

Asterisk provides another VoIP protocol, much like SIP, called Inter-Asterisk eXchange, or IAX. This protocol is easier to work with for many reasons, as we discussed in Chapter 2. For this section, we will need all of the terminal device details for which we selected IAX as the protocol.

Just as the name suggests, IAX is well-suited to connecting multiple Asterisk servers together. At this point in our work with Asterisk, this is not what we need, as we are limiting ourselves to one server. When we link multiple servers together, this feature will become useful.

Following the pattern established, the IAX protocol is configured in /etc/asterisk/ iax.conf. Just as the SIP file, it has a number of general settings, followed by settings for each individual users.

First we will discuss options for the [general] section. They include:

port: set the port to listen on. The default is 5036, which we should not

change without a very good reason.

bindaddr: set the IP address to bind to. By default, it will bind to 0.0.0.0,

meaning all available IP addresses.

amaflags: just as for SIP and Zaptel interfaces, we can set amaflags

for IAX.

accountcode: as for SIP and Zaptel interfaces, we can set an account code to

be used for billing purposes.

language: we can specify a language. If omitted, Asterisk will default

to English.

bandwidth: we can specify a level of bandwidth. This will automatically set

which codecs can and cannot be used. The valid choices are "low", "medium", and "high".

Codec selection: just as in sip.conf. We can disallow all codecs, and only allow the codecs that we want to permit. If we use allow=all, it is the same as using bandwidth=high.

jitterbuffer: this allows us to configure our jitter buffer. We should leave it at jitterbuffer=no unless our network is unusually jittery because of the added latency that using buffers will typically create.

59

Configuring Asterisk

trunkfreq: we can set the number of milliseconds between trunk messages.

The default of 20 ms should be good enough for most installations.

register: just as in sip.conf, we can register with a remote server. If our

username is "johndoe", and our password is "foo", and we want to register with reallycoolhost.com, then the statement would look like

register=>johndoe:foo@reallycoolhost.com.

tos: here we set our TOS bits. Valid choices are "lowdelay", "throughput",

"reliability", "mincost", and "none". Usually "lowdelay" is desirable.

Now that we have set our options in the general section, we need to define users. We can see that it is very similar to the way we configured SIP. One difference between the SIP and IAX protocols is that IAX will support RSA public/private key encryption, along with the MD5 and plaintext authentication methods. If we choose to use RSA authentication, then we must put the keys in /var/lib/asterisk/keys/. All public keys must end with .pub, while private keys will end with .key.

There are a few options that can be set per user entry, in addition to the settings mentioned above. They include:

type: just as in SIP, we can have "user", "peer", or "friend".

auth: can be "md5", "plaintext", or "rsa".

inkeys: name of the key file or files to use, with a colon between each

acceptable public key for RSA encrypted authentication.

outkey: name of the private key file to use for RSA-encrypted authentication.

secret: the password to use.

notransfer: if set to "yes", this will disable IAX's ability to use

native transfers.

Security: much like the allow/disallow pair for codec selection, we can use permit/deny directives for IAX connections.

o deny: list of all IP addresses and blocks to not allow access from. If we enter "0.0.0.0/0.0.0.0", then all access will be blocked.

o permit: list of all IP addresses (as individual addresses or blocks) to permit access from. If we enter "192.168.1.100/ 255.255.255.255", then the user at 192.168.1.100 will be permitted access.

qualify: we set this to "yes" when we want to make sure a user's device is

connected before attempting to send calls to it.

trunk: we set this to "yes" to use IAX trunking. Trunking refers to putting

multiple phone calls in the same stream to save the overhead of packaging each conversation individually. If we will often have multiple conversations in progress with the same host (i.e. another Asterisk server uses this account), then it is a good idea to set trunk=yes.

60

Chapter 4

Now we have enough information to create all of our IAX users, we will go through an example. Suppose we have a user who will be on extension 2000, with a password of 2000iscool. This is a hardware IAX phone, and as such, will be dynamic and be of the friend type. The user will be permitted to make long-distance telephone calls, and their telephone will send the correct caller ID name and number, and we will trust it. This user is only permitted to connect from our local subnet, which is the class C address of 192.168.1.0.

[2000]

type=friend

secret=2000iscool

host=dynamic

defaultip=192.168.1.200

callerid=asreceived

context=longdistance

deny=0.0.0.0/0.0.0.0

permit=192.168.1.1/255.255.255.0

We can now go through our listed devices and make similar entries for any of our terminal devices of the type of IAX.

Voicemail

Asterisk provides a voicemail program called Comedian Mail. Through /etc/asterisk/voicemail.conf, we can configure global options for our voicemail system as well as define different voicemail boxes.

In the configuration file, we first have our general options:

[general]

The first setting we get to decide on is how to write the voice files as they are recorded. The default is usually OK:

format=wav49|gsm|wav

Next, we get to set up email notification. Comedian mail will allow us to notify users of new messages via email, and optionally, we can attach the voice files directly to the message. This is the reason we select wav49 as a format above, as most computers will be able to play the files. We choose the email return address and whether we will attach the voicemail to the email with serveremail and attach respectively. We can also choose the display name that the email comes from, by setting fromstring. If we need to, we can also override the email sending program, in the mailcmd variable.

serveremail=asterisk@mydomain.tld fromstring=Asterisk PBX attach=yes mailcmd=/usr/bin/sendmail -t

61

Configuring Asterisk

Now we need to set some limits on messages. We will define maxmessage, which is the maximum length, in seconds, of a voicemail message. The variable minmessage is similar, in that it is the minimum length, in seconds, of a voicemail message. We also set maxgreet, which is the maximum length our users can record for a greeting, again measured in seconds. Through maxsilence, we set how many seconds of silence we accept before ending the recording. Thus, we could set:

maxmessage=180

minmessage=3

maxgreet=45

maxsilence=5

These are not the only variables for controlling the general behavior of Comedian Mail. We also have skipms, which defines the number of milliseconds to move ahead or back when fast forwarding and rewinding the message, maxlogins, which sets how many failed attempts users can have in one session before being disconnected, and silencethreshold, which allows us to configure what the system will consider to be silence. For the silence threshold, the smaller the number, the lower ambient noise will have to be before it is recognized as silence. To continue our example, we could have:

skipms=2000

maxlogins=3

silencethreshold=128

There are more options available for us to change the body of the email, notify external programs of new voicemail messages, change our character set, and a whole host of other options; however, the default settings should work in most installations. If they do not meet our needs, we can configure them at any time.

Now that we have configured the general options, we have the option of creating timezone messages. This is how we let Comedian Mail know what it should say when telling users about when messages arrived. For instance, if we lived in the Central timezone, we would have:

[zonemessages]

central=America/Chicago|'vm-received' Q 'digits/at' IMp

Each timezone is defined in /usr/share/zoneinfo/. Just find a city in the desired timezone to define the zone message.

Finally, we have to define actual mailboxes. We have to place each mailbox in a context. This context should be the same as the context that the users' extension will appear in, and if possible, the voicemail box should be the same as the extension of the user. The format for the configuration line is:

voicemailbox => password,username,emailaddress,pageraddress,options.

62