Servidor · 5 min read · Oct 29, 2025
El Servidor Perfecto - Servidor CentOS 4.8 x86_64 [ISPConfig 2] - Página 5
10 Postfix Con SMTP-AUTH Y TLS
Ahora instalamos Postfix y dovecot (dovecot será nuestro servidor POP3/IMAP):
yum install cyrus-sasl cyrus-sasl-devel cyrus-sasl-gssapi cyrus-sasl-md5 cyrus-sasl-plain postfix dovecotA continuación configuramos SMTP-AUTH y TLS:
postconf -e 'smtpd_sasl_local_domain ='
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'smtpd_sasl_security_options = noanonymous'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_authenticated_header = yes'
postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
postconf -e 'inet_interfaces = all'
postconf -e 'mynetworks = 127.0.0.0/8'Debemos editar /usr/lib64/sasl2/smtpd.conf para que Postfix permita inicios de sesión PLAIN y LOGIN. En un Centos 4.8 de 32 bits, debes editar el archivo /usr/lib/sasl2/smtpd.conf en su lugar. Debería verse así:
vi /usr/lib64/sasl2/smtpd.conf| pwcheck_method: saslauthd mech_list: plain login |
Después creamos los certificados para TLS:
mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csropenssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crtopenssl rsa -in smtpd.key -out smtpd.key.unencryptedmv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650A continuación configuramos Postfix para TLS:
postconf -e 'smtpd_tls_auth_only = no'
postconf -e 'smtp_use_tls = yes'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtp_tls_note_starttls_offer = yes'
postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
postconf -e 'smtpd_tls_loglevel = 1'
postconf -e 'smtpd_tls_received_header = yes'
postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
postconf -e 'tls_random_source = dev:/dev/urandom'Luego establecemos el nombre del host en nuestra instalación de Postfix (asegúrate de reemplazar server1.example.com con tu propio nombre de host):
postconf -e 'myhostname = server1.example.com'Después de estos pasos de configuración, ahora deberías tener un /etc/postfix/main.cf que se vea así (he eliminado todos los comentarios de él):
cat /etc/postfix/main.cf| queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix mail_owner = postfix inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost unknown_local_recipient_reject_code = 550 alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases debug_peer_level = 2 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix setgid_group = postdrop html_directory = no manpage_directory = /usr/share/man sample_directory = /usr/share/doc/postfix-2.2.10/samples readme_directory = /usr/share/doc/postfix-2.2.10/README_FILES smtpd_sasl_local_domain = smtpd_sasl_auth_enable = yes smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_authenticated_header = yes smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination mynetworks = 127.0.0.0/8 smtpd_tls_auth_only = no smtp_use_tls = yes smtpd_use_tls = yes smtp_tls_note_starttls_offer = yes smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_session_cache_timeout = 3600s tls_random_source = dev:/dev/urandom myhostname = server1.example.com |
Por defecto, el daemon dovecot de CentOS proporciona solo servicios IMAP e IMAPs. Debido a que también queremos POP3 y POP3s, debemos configurar dovecot para hacerlo. Editamos /etc/dovecot.conf y ponemos la línea protocols = imap imaps pop3 pop3s en él:
vi /etc/dovecot.conf| [...] # Directorio base donde almacenar datos en tiempo de ejecución. #base_dir = /var/run/dovecot/ # Protocolos que queremos servir: # imap imaps pop3 pop3s protocols = imap imaps pop3 pop3s [...] |
Ahora inicia Postfix, saslauthd y dovecot:
chkconfig --levels 235 sendmail off
chkconfig --levels 235 postfix on
chkconfig --levels 235 saslauthd on
chkconfig --levels 235 dovecot on
/etc/init.d/sendmail stop
/etc/init.d/postfix start
/etc/init.d/saslauthd start
/etc/init.d/dovecot startPara ver si SMTP-AUTH y TLS funcionan correctamente, ahora ejecuta el siguiente comando:
telnet localhost 25Después de haber establecido la conexión con tu servidor de correo Postfix, escribe
ehlo localhostSi ves las líneas
250-STARTTLSy
250-AUTH PLAIN LOGINtodo está bien.
[root@server1 ssl]# telnet localhost 25
Intentando 127.0.0.1...
Conectado a localhost.localdomain (127.0.0.1).
El carácter de escape es '^]'.
220 server1.example.com ESMTP Postfix
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250 8BITMIME
quit
221 Adiós
Conexión cerrada por el host remoto.
[root@server1 ssl]#Escribe
quitpara volver a la shell del sistema.
10.1 Maildir
dovecot utiliza el formato Maildir (no mbox), así que si instalas ISPConfig en el servidor, asegúrate de habilitar Maildir en Gestión -> Servidor -> Configuración -> Correo. ISPConfig hará la configuración necesaria.
Si no deseas instalar ISPConfig, entonces debes configurar Postfix para entregar correos electrónicos al Maildir de un usuario:
postconf -e 'home_mailbox = Maildir/'
postconf -e 'mailbox_command ='
/etc/init.d/postfix restart11 Apache2 Con PHP, Ruby, Python
Ahora instalamos Apache con PHP (este es PHP 4.3.9; CentOS no proporciona paquetes de PHP5):
yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-develLuego edita /etc/httpd/conf/httpd.conf:
vi /etc/httpd/conf/httpd.confy cambia DirectoryIndex a
| [...] DirectoryIndex index.html index.htm index.shtml index.cgi index.php index.php3 index.pl [...] |
Ahora configura tu sistema para iniciar Apache al arrancar:
chkconfig --levels 235 httpd onInicia Apache:
/etc/init.d/httpd start11.1 Desactivar PHP Globalmente
(Si no planeas instalar ISPConfig en este servidor, ¡por favor salta esta sección!)
En ISPConfig configurarás PHP en una base por sitio web, es decir, puedes especificar qué sitio web puede ejecutar scripts PHP y cuál no. Esto solo puede funcionar si PHP está desactivado globalmente porque de lo contrario todos los sitios web podrían ejecutar scripts PHP, sin importar lo que especifiques en ISPConfig.
Para desactivar PHP globalmente, editamos /etc/httpd/conf.d/php.conf y comentamos la línea AddType:
vi /etc/httpd/conf.d/php.conf| # # PHP es un lenguaje de scripting incrustado en HTML que intenta facilitar a los desarrolladores escribir páginas web generadas dinámicamente. # LoadModule php4_module modules/libphp4.so # # Causa que el intérprete PHP maneje archivos con una extensión .php. # #AddType application/x-httpd-php .php # AddType application/x-httpd-php-source .phps # # Agregar index.php a la lista de archivos que se servirán como índices de directorio. # DirectoryIndex index.php |
Después reiniciamos Apache:
/etc/init.d/httpd restart11.2 Instalando mod_ruby
Para CentOS 4.8, no hay un paquete mod_ruby disponible, así que debemos compilarlo nosotros mismos. Primero instalamos algunos requisitos previos:
yum install httpd-devel ruby ruby-develA continuación, descargamos e instalamos mod_ruby de la siguiente manera:
cd /tmp
wget http://modruby.net/archive/mod_ruby-1.3.0.tar.gz
tar zxvf mod_ruby-1.3.0.tar.gz
cd mod_ruby-1.3.0/
./configure.rb --with-apr-includes=/usr/include/apr-0
make
make installFinalmente, debemos agregar el módulo mod_ruby a la configuración de Apache, así que creamos el archivo /etc/httpd/conf.d/ruby.conf…
vi /etc/httpd/conf.d/ruby.conf| LoadModule ruby_module modules/mod_ruby.so |
… y reiniciamos Apache:
/etc/init.d/httpd restart11.3 Instalando mod_python
Para instalar mod_python, simplemente ejecutamos…
yum install mod_python… y reiniciamos Apache después:
/etc/init.d/httpd restartRecibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.