Questa è una procedura che ho testato personalmente su Centos 5.7 e che segno qui come promemoria sperando che sia di utilità a qualcuno. (ultima revisione 18/10/2011)
Questo articolo continua, per quanto riguarda MailScanner, Spamassassin e Clamav in quest'altro post:
http://alessandromazzanti.blogspot.com/2011/03/settaggio-di-mailscanner-su-centos-con.html
Va prima di tutto settato il nome del Server con il comando seguente:
Questo articolo continua, per quanto riguarda MailScanner, Spamassassin e Clamav in quest'altro post:
http://alessandromazzanti.blogspot.com/2011/03/settaggio-di-mailscanner-su-centos-con.html
Va prima di tutto settato il nome del Server con il comando seguente:
system-config-network-tui
Si suppone che il nome è SERVER01
Va installato postfix:
yum install postfix system-switch-mail
modifichiamo il mail delivery agenti tramite il seguente comando su postfix:
system-switch-mail
Per settare il firewall si lancia il comando per configurarlo in modalità grafica.
system-config-securitylevel-tui
Il seguente comando permette di vedere se la porta smtp è aperta sul firewall
iptables -L | grep smtp
Deve apparire come di seguito
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:smtp
Per far avviare in automatico del servizio postfix nel runlevel attuale:
chkconfig postfix on
chkconfig postfix --list
visualizza lo stato di avvio del servizio postfix
Va modificato il file in /etc/postfix/main.cf
postfix reload - per ricaricare i parametri
postconf -n - Visualizza i parametri che sono stati modificati da quelli standard
postconf -e "relayhost = mailhub.example.com"
postconf -e "relayhost = mailhub.example.com"
Il precedente comando serve per settare il parametro precedente in automatico in main.cf aggiungento tale riga in fondo.
Ecco l'esempio di file main.cf, si ipotizza che la mail locale che vogliamo attivare è "Instyle.locale" mentre il nome del server è "SERVER01"
Ecco l'esempio di file main.cf, si ipotizza che la mail locale che vogliamo attivare è "Instyle.locale" mentre il nome del server è "SERVER01"
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
myhostname = server01.instyle.locale
mydomain = instyle.locale
myorigin = $mydomain
inet_interfaces = all
unknown_local_recipient_reject_code = 550
unknown_local_recipient_reject_code
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-3.2.2/samples
mail_spool_directory = /var/mail
#myhostname = relay.instyle.it
#inet_interfaces = all
mydestination = instyle.locale, server01.instyle.locale
relayhost =
mailbox_command =
mailbox_transport =
smtpd_helo_required = no
smtpd_helo_restrictions =
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
myhostname = server01.instyle.locale
mydomain = instyle.locale
myorigin = $mydomain
inet_interfaces = all
unknown_local_recipient_reject_code = 550
unknown_local_recipient_reject_code
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-3.2.2/samples
mail_spool_directory = /var/mail
#myhostname = relay.instyle.it
#inet_interfaces = all
mydestination = instyle.locale, server01.instyle.locale
relayhost =
mailbox_command =
mailbox_transport =
smtpd_helo_required = no
smtpd_helo_restrictions =
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination
smtp_sasl_auth_enable = no
smtpd_sasl_auth_enable = no
smtpd_use_tls = no
smtp_use_tls = no
alias_maps = hash:/etc/aliases
mailbox_size_limit = 0
message_size_limit = 10240000
smtp_sasl_auth_enable = no
smtpd_sasl_auth_enable = no
smtpd_use_tls = no
smtp_use_tls = no
alias_maps = hash:/etc/aliases
mailbox_size_limit = 0
message_size_limit = 10240000
#Queste righe vengono aggiunte per supportare dovecot
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
#Le righe commentate di seguito si possono eventualmente attivare
#smtpd_tls_auth_only = yes
#smtpd_tls_auth_only = yes
#virtual_maps = hash:/etc/postfix/virtual
#relocated_maps = hash:/etc/postfix/relocated
#transport_maps = hash:/etc/postfix/transport
#sender_canonical_maps = hash:/etc/postfix/sender_canonical
#masquerade_exceptions = root
#relocated_maps = hash:/etc/postfix/relocated
#transport_maps = hash:/etc/postfix/transport
#sender_canonical_maps = hash:/etc/postfix/sender_canonical
#masquerade_exceptions = root
#masquerade_classes = envelope_sender, header_sender, header_recipient
#program_directory = /usr/libexec/postfix
#masquerade_domains = instyle.locale
#smtpd_sender_restrictions = hash:/etc/postfix/access
#smtpd_client_restrictions =
#strict_rfc821_envelopes = no
#defer_transports =#smtpd_client_restrictions =
#strict_rfc821_envelopes = no
#disable_dns_lookups = no
Per la parte POP3 è necessario installare Dovecot: ( si può anche installare Cyrus IMAP server per la parte IMAP(http://cyrusimap.web.cmu.edu/)
yum install dovecot
chkconfig dovecot on
chkconfig dovecot --list
visualizza lo stato di avvio del servizio postfix
vim /etc/dovecot.conf
like this:
togliere #
pop3_uidl_format = %08Xu%08Xv
/
auth default {
mechanisms = plain login
passdb pam {
}
userdb passwd {
}
user = root
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}
mechanisms = plain login
passdb pam {
}
userdb passwd {
}
user = root
socket listen {
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}
Riavviare il servizio dovecot
Bisogna modificare anche il file main.cf di postfix come segue:
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
Riavviare il servizio postfix
<-------------------------->
<-------------------------->
useradd info
passwd info
cd /var/mail
chmod 600 info
chown info.dovecot Info
se collegandosi da un client della rete via telnet si ottiene l'errore seguente:
Plaintext authentication disallowed on non-secure connection
potrebbe essere necessario:
chmod 1777 ./mail
postsuper -r ALL
<-------------------------->
vim /etc/dovecot.conf
disable_plaintext_auth = no
Per testare che funzioni correttamente il pop3
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.
user ralph
+OK
pass itsasecret
+OK Logged in.
stat
+OK 26 14419 (25 messaggi presenti)
list 5
+OK 5 554
retr 5
+OK 554 octets
Return-Path:
X-Original-To: ralph@localhost
Delivered-To: ralph@localhost.instyle.locale
Received: by server01.instyle.locale (Postfix, from userid 501)
id C7AD818242; Tue, 24 Mar 2009 01:30:40 +0100 (CETcd )
Date: Tue, 24 Mar 2009 01:30:40 +0100
From: test@instyle.locale
To: ralph@localhost.instyle.locale
Subject: mail Nr. 5
Message-ID: <20090324003040.GA24807@centos.instyle.locale>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.4.2.2i
Lines: 1
Hello
.
quit
+OK Logging out.
Per testare se invece funziona correttamente l'IMAP
[ralph@instyle.locale ~]$ telnet localhost 143
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
* OK Dovecot ready.
1 login ralph isasecret
1 OK Logged in.
2 select Inbox
* FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
* 26 EXISTS
* 0 RECENT
* OK [UNSEEN 1] First unseen.
* OK [UIDVALIDITY 1237853960] UIDs valid
* OK [UIDNEXT 27] Predicted next UID
2 OK [READ-WRITE] Select completed.
3 FETCH 6 BODY[TEXT]
* 6 FETCH (FLAGS (\Seen) BODY[TEXT] {7}
Hello
)
3 OK Fetch completed.
4 LOGOUT
* BYE Logging out
4 OK Logout completed.
testare la connessione SMTP standard
[ralph@centos ~]$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 server01.instyle.locale ESMTP Postfix
EHLO mail.instyle.locale
250-server01.instyle.locale
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
Questo vuol dire che funziona tutto.
[ralph@centos ~]$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 server01.instyle.locale ESMTP Postfix
EHLO mail.instyle.locale
250-server01.instyle.locale
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
AUTH PLAIN AHRlc3QAMTIzNDU=
235 2.0.0 Authentication successful
quit
221 2.0.0 Bye
Connection closed by foreign host.
la sigla AHRlc3QAMTIzNDU= line? sono la username e password codificate in Base64 encoded—not encrypted; si può usare perl per codificare. Supponiamo di avere l'utente test e la password 12345:
[ralph@centos ~]$ perl -MMIME::Base64 -e 'print ➥
encode_base64("\000test\00012345");'
AHRlc3QAMTIzNDU=
[ralph@centos ~]$
Il \000 è il byte nullo che deve precedere l'username e la password.
testare che l'SMTP criptato funzioni
Se vogliamo attivare la connessione criptata è necessario aggiungere al file main.cf di postfix:
smtpd_tls_auth_only = yes - E' quello che attiva la connessione criptata
If you connect to your mail server now, you will see the following:
[ralph@centos ~]$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 server01.instyle.locale ESMTP Postfix
EHLO mail.example.com
250-server01.instyle.locale
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
Non vi è piu' menzione della opzione AUTH. Proviamo dunque a:
[ralph@centos ~]$ openssl s_client -starttls smtp -connect localhost:25
CONNECTED(00000003)
[...]
250 DSN
EHLO mail.instyle.locale
250-server01.instyle.locale
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
Se tutto funziona disattivare l'opzione seguente.
[ralph@centos ~]$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 server01.instyle.locale ESMTP Postfix
EHLO mail.example.com
250-server01.instyle.locale
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
Non vi è piu' menzione della opzione AUTH. Proviamo dunque a:
[ralph@centos ~]$ openssl s_client -starttls smtp -connect localhost:25
CONNECTED(00000003)
[...]
250 DSN
EHLO mail.instyle.locale
250-server01.instyle.locale
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
Se tutto funziona disattivare l'opzione seguente.
Il Server adesso è in produzione, per la posta locale, nel prossimo articolo vedremo come installare l'antispam, antivirus, webmail e pubblicarlo su internet.
soft_bounce = no
unknown_local_recipient_reject_code = 550
soft_bounce = no
unknown_local_recipient_reject_code = 550
Il file degli alias si trova in /etc/aliases. Una volta fatte le modifiche è sufficiente dare il comando newaliases
La seconda parte del tutorial continua qui