jueves, 7 de julio de 2011

Trunk- LACP entre SSR 8600 y switch A2

IMPORTANTE

!!!Antes de empezar a configurar los puertos asegurate que no tengan nada conectado. No deben tener link porque afecta a la configuración de Link Aggregation!!!!

En este ejemplo veremos como realizar un trunk de 4 ports entre el switch router SSR 8600 y el switch A2

===================

EN EL SSR 8600

===================

xp#config

xp(config)# smarttrunk create st.1 protocol no-protocol no-llap-ack
xp(config)#smarttrunk add ports et.2.(9-12) to st.1
xp(config)#vlan create TESORERIA port-based id 11
xp(config)#vlan add ports st.1 to TESORERIA
xp(config)#save active
xp(config)#save startup

===================

EN EL SWITCH A2

===================

A2(su)->set lacp static lag.0.1 fe.1.45-48

miércoles, 6 de julio de 2011

Creación de IVR en Asterisk

En este documento detallaremos los pasos necesarios para configurar un IVR para una central asterisk. El escenario se describe a continuación,  simularemos la entrada de una llamada exterior  marcando la extensión 2000, a continuación nos atenderá el IVR donde se escuchará la operadora de bienvenida diciendo el siguiente  mensaje

“Gracias por comunicarse con   Mi Empresa SRL….……para comunicarse con  Ventas marque 1… para  comunicarse con Soporte  marque 2 …. Para comunicarse con Administración  marque 3… para enviar un fax presione 4  sino aguarde y será atendido por una operadora.”

Para realizar esta tarea seguiremos los siguientes pasos:

crear un IVR en formato wav llamado menudia.wav y  convertirlo a extension gsm con el software WavePadSound editor.

con el winscp copiar el archivo creado (menudia2.gsm) en el siguiente PATH /var/lib/asterisk/sounds/es/

agregar  el contexto  menu-dia en el archivo extensions.conf. Si queremos listar el directorio, lo hacemos con la opción 9. Para ello copiar el archivo  cp /var/lib/asterisk/sounds/es/dir-intro.gsm /var/lib/asterisk/sounds/es/dir-welcome.gsm






[phones]include => internal

[internal]

exten => _2XXX,1,Dial(SIP/${EXTEN},10) ; llamados de ext 2xxx

exten => _2XXX,n,VoiceMail(${EXTEN}@default,u) ; opcion de dejar un mensaje en la casilla de la ext

exten => _2XXX,n,Playback(vm_goodbye) ; se despide con un mensaje

exten => _2XXX,n,Hangup() ; cuelga la comunicacion

;;;;;con *98 entro a mi casilla de mensajes

exten => *98,1,Answer

exten => *98,2,Wait(1)

exten => *98,3,VoiceMailMain(${CALLERID}@default)

exten => *98,4,Hangup

;llamando al interno 2000 entra al IVRsegun el horario ejecuta el mensaje

exten => 2000,1,GotoIfTime(9:00-18:00|mon-fri|*|*?menu-dia,s,1)

exten => 2000,2,GotoIfTime(18:01-8:59|mon-fri|*|*?menu-noche,s,1) 

[menu-noche]

exten=>s,1,Answer

exten=>s,2,Wait(1)

exten=>s,3,Playback(menunoct)

exten=>s,4,Hangup

;;;;; llamando al 3333 grabo un IVR

exten => 3333,1,Answer

exten => 3333,n,Wait(0.5)

exten => 3333,n,Record(menudia2.gsm)

exten => 3333,n,Wait(1)

exten => 3333,n,Playback(menudia2)

exten => 3333,n,Hangup()

 [menu-dia]

exten => s,1,Answer

exten => s,n,Wait(0.5)

exten => s,n,Background(menudia2) ; reproduce el mensaje grabado

exten => s,n,WaitExtend(5)

exten => 1,1,Goto(internal,2001,1) ; si selecciona la opcion 1 redirecciona a la ext 2001

exten => 2,1,Goto(internal,2002,1); si selecciona la opcion 2 redirecciona a la ext 2002

exten => 2,1,Goto(internal,2003,1); si selecciona la opcion 3 redirecciona a la ext 2003

exten => 9,1,Directory(default,user,e) ; si selecciona la opcion 9 redirige al directorio

exten => *,1,Goto(s,1) ; vuelve a reproducer el menu principal con la tecla asterisco

exten => t,1,Playback(goodbye) ; si esta mucho tiempo sin hacer nada despide y cuelga

exten => t,n,Hangup()

exten => i,1,Playback(pbx-invalid) ; si el numero digitado no es valido comunica el error

exten => i,n,goto(s,1) ;vuleve al menu principal del IVR

TIPS= La diferencia entre Playback() y Background () es que con Playback cuando reproduce un mensaje tengo que esperar a que termine para elegir la opción que deseo, en cambio con Background puedo oprimir la opción antes de que termine el mensaje.

Se agrega la siguiente línea al contexto features.






 [features]


exten => 2000,1,Goto(menu-dia,s,1) ; llamando a la ext 2000 ingresa al menu del IVR


se realiza la prueba llamando al interno 2000 donde tendría que escucharse el IVR

Diagrama de flujo de comportamiento del IVR

 



Cómo funciona el IVR según horarios.
Vamos hacer que el IVR según el horario la operadora de 2 tipos de mensajes

1-      Si el llamado es de lunes a viernes de 9:00 a 18:00 nos atiende la operadora dando la bienvenida y derivando a la extensión que queremos ejecutando el contexto menu-dia.

2-      Si el llamado es fuera de horario y día hábil, nos dará un mensaje informando el horario de atención, ejecutando el contexto menú-noche.

exten => 2000,1,GotoIfTime(9:00-18:00|mon-fri|*|*?menu-dia,s,1)

exten => 2000,2,GotoIfTime(18:01-8:59|mon-fri|*|*?menu-noche,s,1)

La sintaxis es la siguiente para entender cómo funciona el GotoifTime

(9:00-18:00|mon-fri|*|*?menu-dia,s,1)

(rango horario|dias de la semana|dias del mes| meses?contexto)

martes, 17 de mayo de 2011

Filtrar subject y mensajes con Postfix

Este tutorial nos muestra como poder bloquear subjects y  contenidos de mensajes que contengan algun texto que provenga como correo SPAM.
para esto realizamos lo siguiente:

Editamos el archivo main.cf

#vim /etc/postfix/main.cf

Agregamos estas lineas






body_checks = regexp:/etc/postfix/body_checks
header_checks = regexp:/etc/postfix/header_checks.regexp

Creamos el archivo para filtrar asuntos.

#vim /postfix/header_checks.regexp

Y colocamos la/s palabra/s que queremos filtrar






/^Subject:.*palabra_a_filtrar.*$/ REJECT "Asunto no valido"
/^Subject:.*Viagra.*$/ REJECT "Asunto no valido"

En la segunda linea estamos filtrando la palabra Viagra,lo que colocamos dentro de las comillas (Asunto no valido) es lo que va aparecer en el mail rejectado del remitente.

Creamos el archivo para filtrar contenido de mensaje.

#vim /etc/postfix/body_checks






/palabra_a_filtrar/ REJECT
/Viagra/ REJECT
/casino en linea/ REJECT

En la segunda linea estamos filtrando la palabra Viagra si apareciera en el cuerpo del mensaje.

Luego hacemos:

#postmap /etc/postfix/body_checks
#postmap /etc/postfix/header_checks.regexp

Se crearan los archivos con el mismo nombre con extension .db
Por ultimo reiniciamos postfix para que tome los cambios que realizamos

#/etc/init.d/postfix restart

miércoles, 11 de mayo de 2011

Como realizar un trunk IAX2 entre 2 Asterisk

Es Tutorial muestra como hacer un trunk IAX2 entre 2 Asterisk. La Sede A tiene los internos 2xxx y la Sede B los internos 10xx.

Para que la sede A pueda llamar a internos de la sebe B debemos realizar un trunk IAX2 y configurar los archivos iax.conf y extensions.conf en cada asterisk.



====================================
Sede A -170.x.x.x
====================================

En el archivo /etc/asterisk/iax.conf agregamos las siguientes lineas:

[general]
autokill=yes
register => SedeA:welcome@200.x.x.x

[2001]
type=friend
host=dynamic
context=phones

[SedeB]
type=friend
username=SedeA
host=dynamic
trunk=yes
secret=welcome
context=incoming_SedeA
permit=200.x.x.x/255.255.255.255

en el archivo que esta en /etc/asterisk/extensions.conf y colocamos lo siguiente:

[general]
autofallthrough=yes

[phones]
include => internal
include => remote

[internal]
exten => _2XXX,1,NoOp()
exten => _2XXX,n,Dial(IAX2/${EXTEN},30)
exten => _2XXX,n,Hangup()

[remote]
exten => _1XXX,1,NoOp()
exten => _1XXX,n,Dial(IAX2/SedeB/${EXTEN})
exten => _1XXX,n,Hangup()

[incoming_SedeA]
include => internal

========================
Sede B -200.x.x.x
========================

En el archivo /etc/asterisk/iax.conf agregamos las siguientes lineas:

[general]
autokill=yes
register => SedeB:welcome@170.x.x.x

[1001]
type=friend
host=dynamic
context=phones

[SedeA]
username=SedeB
type=friend
host=dynamic
trunk=yes
secret=welcome
context=incoming_SedeB
permit=170.x.x.x/255.255.255.255

en el archivo que esta en /etc/asterisk/extensions.conf y colocamos lo siguiente:

[general]
autofallthrough=yes

[phones]
include => internal
include => remote

[internal]
exten => _1XXX,1,NoOp()
exten => _1XXX,n,Dial(IAX2/${EXTEN},30)
exten => _1XXX,n,Hangup()

[remote]
exten => _2XXX,1,NoOp()
exten => _2XXX,n,Dial(IAX2/SedeA/${EXTEN})
exten => _2XXX,n,Hangup()

[incoming_SedeB]
include => internal

miércoles, 20 de abril de 2011

Trunk SIP entre 2 Asterisk

Es Tutorial muestra como hacer un trunk SIP entre 2 Asterisk. La Sede A tiene los internos 80xx y la Sede B los internos 10xx.

Para que la Sede A pueda llamar a internos de la sebe B debemos realizar un trunk SIP y configurar los archivos sip.conf y extensions.conf en cada asterisk

====================================
    ASTERISK SEDE A
====================================
editamos el archivo /etc/asterisk/sip.conf y agregamos las siguientes lineas

[general]
nat=yes
externip=ip_externa_ASTERISK_SEDE_A
localnet=10.10.0.0.0/255.255.0.0
externrefesh=180

register =>AsteriskSedeA:1234@ip_externa_ASTERISK_SEDE_B/AsteriskSedeB

[8001]
username=8001
type=friend
secret=2011
callerid="Juan" <8001>
host=dynamic
nat=yes
disallow=all
allow=ulaw
context=internal
mailbox=8001@voicemail
pickupgroup=1
callgroup=1

[AsteriskSedeB]
username=AsteriskSedeB
type=friend
secret=1234
context=internal
qualify=yes
host=dynamic
language=es
insecure=invite
disallow=all
allow=ulaw
allow=alaw

editamos el archivo /etc/asterisk/extensions.conf y agregamos las siguientes lineas

[internal]
exten => _80xx,1,Dial(SIP/${EXTEN},15,tT)
exten => _80xx,n,Hangup

exten => _10xx,1,Dial(SIP/${EXTEN}@AsteriskSedeB,10)
exten => _10xx,n,Hangup()

Luego en el asterisk de la sede A reiniciamos nuestro dialplan y el sip, y verificamos que se hayan registrado los asterisk

sedeA:#rasterisk
sedeA*CLI> sip reload

sedeA*CLI>dialplan reload

sedeA*CLI> sip show peers

Name/username                Host            Dyn Nat ACL Port     Status
AsteriskSedeB/AsteriskSedeB  10.10.200.26     D   N      5060     OK (1 ms)
8001/8001                    10.10.10.20      D   N      2857     Unmonitored
2 sip peers [Monitored: 1 online, 0 offline Unmonitored: 1 online, 0 offline]

sedeA*CLI>sip show registry

Host                            Username       Refresh State                Reg.Time
10.10.200.26:5060               AsteriskSedeA       105 Registered           Wed, 20 Apr 2011 14:40:08

===================================
                ASTERISK SEDE B
===================================
editamos el archivo /etc/asterisk/sip.conf y agregamos las siguientes lineas

[general]

nat=yes
externip=ip_externa_ASTERISK_SEDE_B
localnet=192.168.1.0/255.255.255.0

register =>AsteriskSedeB:1234@ip_externa_ASTERISK_SEDE_A/AsteriskSedeA

[1001]
username=1001
type=friend
secret=SedeB2011
callerid="carlos" <1001>
host=dynamic
nat=yes
disallow=all
allow=ulaw
context=internal
mailbox=1001@voicemail
pickupgroup=1
callgroup=1

[AsteriskSedeA]

username:AsteriskSedeA
type=friend
secret=1234
context=internal
qualify=yes
host=dynamic
language=es
insecure=invite
disallow=all
allow=ulaw
allow=alow

editamos el archivo /etc/asterisk/extensions.conf y agregamos las siguientes lineas

[internal]
exten => _10xx,1,Dial(SIP/${EXTEN},15,tT)
exten => _10xx,n,Hangup

exten => _80xx,1,Dial(SIP/${EXTEN}@AsteriskSedeA,10)
exten => _80xx,n,Hangup()

Luego en el asterisk de la sede B reiniciamos nuestro dialplan y el sip, y verificamos que se hayan registrado los asterisk
sedeB:#rasterisk
sedeB*CLI> sip reload

sedeB*CLI>dialplan reload

sedeB*CLI> sip show peers

Name/username                Host            Dyn Nat ACL Port     Status
AsteriskSedeA/AsteriskSedeA  10.10.200.31     D   N      5060     OK (1 ms)
1001/1001                    10.10.10.20      D   N      2857     Unmonitored
2 sip peers [Monitored: 1 online, 0 offline Unmonitored: 1 online, 0 offline]

sedeA*CLI>sip show registry

Host                            Username       Refresh State                Reg.Time
10.10.200.31:5060               AsteriskSedeB       105 Registered           Wed, 20 Apr 2011 14:41:53

Luego podemos realizar una llamada del interno 8001 al interno 1001 de la otra central y viceversa

miércoles, 13 de abril de 2011

Limitar cantidad de remitentes en Zimbra 6.0

Este ejemplo es para limitar la cantidad total de remitentes que uno puede añadir en un mail (Para, CC), en este ejemplo limitamos a 50 usuarios.

1.-Primero nos debemos loguear  comousuario zimbra en el servidor.

zimbra:#su - zimbra

Luego declaramos variales locales

zimbra:~$ zmlocalconfig -e default_extra_recipient_limit=50
zimbra:~$ zmlocalconfig -e default_recipient_limit=50
zimbra:~$ zmlocalconfig -e default_destination_recipient_limit=50
zimbra:~$ zmlocalconfig -e smtpd_recipient_limit=50
zimbra:~$ zmlocalconfig -e smtpd_recipient_overshoot_limit=50

2.- Segundo hacemos un backup y  añadimos las siguientes lineas en el archivo /opt/zimbra/conf/zmmta.cf  entre las lineas virtual_transport y RESTART mta

zimbra:~$cp /opt/zimbra/conf/zmmta.cf /opt/zimbra/conf/zmmta.cf.ori

zimbra:~$vim /opt/zimbra/conf/zmmta.cf






POSTCONF default_recipient_limit             LOCAL default_recipient_limitPOSTCONF default_destination_recipient_limit  LOCAL default_destination_recipient_limit

POSTCONF default_extra_recipient_limit       LOCAL default_extra_recipient_limit

POSTCONF smtpd_recipient_limit              LOCAL smtpd_recipient_limit

POSTCONF smtpd_recipient_overshoot_limit     LOCAL smtpd_recipient_overshoot_limit

3.- Reiniciamos el servicio

zimbra:~$zmmtactl stop

zimbra:~$zmmtactl start

jueves, 20 de enero de 2011

Parar maquina virtual desde linea de comando en Linux en VMWARE Server 2.0

Parar maquina virtual por comando

#vmrun -T server -h 'https://ip_del_Server:8333/sdk' -u root -p 'passwroot' stop "[standard] nombre_pc_virtual/archivo.vmx"

Arrancar maquina virtual por comando

#vmrun -T server -h 'https://ip_del_Server:8333/sdk' -u root -p 'passwroot' start "[standard] nombre_pc_virtual/archivo.vmx"

Reiniciar maquina virtual por comando

#vmrun -T server -h 'https://ip_del_Server:8333/sdk' -u root -p 'passwroot' reset "[standard] nombre_pc_virtual/archivo.vmx"