Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
email:install-servers [2025/03/03 08:36] – created willy | email:install-servers [2025/03/13 13:29] (current) – [Installation: servers] willy | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Installation: | + | ===== C) Installation: |
- | Install | + | Postfix |
- | USE flags: | + | Dovecot instead, is the IMAP server, which will let you access your email, store it. |
- | <code bash> | + | |
- | echo "*/* maildir dovecot sasl" >> / | + | |
- | echo " | + | |
- | echo " | + | |
- | echo " | + | |
- | </ | + | |
- | Emerge the servers: | ||
- | <code bash> | ||
- | emerge -vp postfix dovecot | ||
- | </ | ||
+ | ===== USE flags ===== | ||
- | ===== Installation: | + | You need to setup some specific |
- | + | ||
- | Since different pieces of the email infrastructure will need to interoperate, | + | |
+ | USE flags: | ||
<code bash> | <code bash> | ||
- | groupadd -g 5000 vmail | + | echo "*/* maildir dovecot" |
- | useradd | + | echo "net-mail/dovecot managesieve sqlite lz4" >> |
- | chmod 2770 /home/vmail/ | + | echo "mail-mta/postfix dovecot-sasl sqlite" |
</ | </ | ||
- | The resulting permissions should look like: | + | This is needed to ensure that the storage format is //mailbox//, that we will need SQLite support and we want SASL authentication. |
- | <code bash> | + | |
- | ls -ld /home/vmail | + | |
- | drwxrws--- 3 vmail vmail 4096 Aug 2 07:24 /home/vmail | + | |
- | </ | + | |
- | FIX QUI I PERMESSI DEL DB | ||
- | Now create the database: | + | ===== Installation ===== |
- | <code bash> | + | |
- | su - vmail | + | |
- | mkdir db | + | |
- | sqlite3 db/ | + | |
- | sqlite> .databases | + | |
- | main: / | + | |
- | sqlite> .tables | + | |
- | sqlite> .exit | + | |
- | </ | + | |
- | + | Emerge | |
- | ===== Installation: | + | |
- | + | ||
- | postfixadmin and roundcube will be installed manually and not via Gentoo portage, to avoid upgrade issues. | + | |
- | + | ||
- | Download latest release of **postfixadmin** from [[https:// | + | |
<code bash> | <code bash> | ||
- | su # do this as root! You don't need to make postfixadmin writable by the web user | + | emerge |
- | cd /home/web | + | |
- | mkdir postfixadmin | + | |
- | cd postfixadmin | + | |
- | wget https:// | + | |
- | tar xvf postfixadmin-3.3.15.tar.gz | + | |
- | mv postfixadmin-postfixadmin-3.3.15 postfixadmin | + | |
- | #The following folder must be writeable by web user: | + | |
- | mkdir -p postfixadmin/ | + | |
- | chown -R web postfixadmin/ | + | |
</ | </ | ||
- | Now, configure it by creating a file called **postfixadmin/ | ||
- | <file - config.local.php> | ||
- | <?php | ||
- | $CONF[' | ||
- | $CONF[' | ||
- | $CONF[' | ||
- | $CONF[' | ||
- | $CONF[' | ||
- | $CONF[' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ); | ||
- | $CONF[' | ||
- | $CONF[' | ||
- | /* vim: set expandtab softtabstop=4 tabstop=4 shiftwidth=4: | ||
- | </ | ||
- | Now setup NGINX to point to it. You need of course to setup a certbot certificate, | ||
- | <file postfixadmin.conf> | ||
- | server { | ||
- | server_name mail.mydomain.com; | ||
- | listen 443 ssl; | ||
- | |||
- | access_log / | ||
- | error_log / | ||
- | | ||
- | index index.php; | ||
- | | ||
- | root / | ||
- | |||
- | # Uncomment the following lines only AFTER setup is complete! | ||
- | # location ~ / | ||
- | # deny all; | ||
- | # alias / | ||
- | # } | ||
- | | ||
- | location ~ /.*\.php$ { | ||
- | try_files $uri =404; | ||
- | fastcgi_split_path_info ^(.+\.php)(/ | ||
- | include fastcgi_params; | ||
- | fastcgi_param SCRIPT_FILENAME $request_filename; | ||
- | fastcgi_pass 127.0.0.1: | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | restart NGINX and go to the URL **https:// | ||
- | |||
- | Also don't forget to create a superadmin-account. I suggest you call it **user@mydomain.com** and set a password you will not forget. | ||
- | |||
- | Go back, uncomment the lines in the NGINX config file to disable the setup.php, and restart NGINX. | ||
- | |||
- | __note:__ when adding new domains, choose " | ||
- | |||
- | At this point, you can already create all the mail domains and user accounts you want. | ||
- | |||
- | |||
- | ===== Configuration: | ||
- | |||
- | Link to SQL. | ||
- | |||
- | File: **/ | ||
- | <file - virtual_mailbox_domains.cf> | ||
- | dbpath = / | ||
- | query = SELECT domain FROM domain WHERE domain = ' | ||
- | </ | ||
- | |||
- | File: **/ | ||
- | <file - virtual_mailbox_maps.cf> | ||
- | dbpath = / | ||
- | query = SELECT maildir FROM mailbox WHERE local_part=' | ||
- | </ | ||
- | |||
- | File: **/ | ||
- | <file - virtual_alias_maps.cf> | ||
- | dbpath = / | ||
- | query = SELECT goto FROM alias WHERE address=' | ||
- | </ | ||
- | |||
- | Now, link it all in **/ | ||
- | < | ||
- | # A list of all virtual domains serviced by this instance of postfix. | ||
- | virtual_mailbox_domains = sqlite:/ | ||
- | # Look up the mailbox location based on the email address received. | ||
- | virtual_mailbox_maps = sqlite:/ | ||
- | # Any aliases that are supported by this system | ||
- | virtual_alias_maps = sqlite:/ | ||
- | </ | ||
- | |||
- | |||
- | |||
- | < | ||
- | compatibility_level = 3.6 | ||
- | |||
- | # Prevent hard-bounces | ||
- | soft_bounce = yes | ||
- | |||
- | queue_directory = / | ||
- | command_directory = /usr/sbin | ||
- | daemon_directory = / | ||
- | data_directory = / | ||
- | |||
- | mail_owner = postfix | ||
- | |||
- | # Usa gethostname() per default | ||
- | #myhostname = gardiol.org | ||
- | |||
- | mydomain = gardiol.org | ||
- | |||
- | #myorigin = $mydomain | ||
- | # | ||
- | |||
- | mydestination = localhost.localdomain | ||
- | unknown_local_recipient_reject_code = 550 | ||
- | |||
- | mynetworks_style = host | ||
- | |||
- | in_flow_delay = 1s | ||
- | |||
- | home_mailbox = .maildir/ | ||
- | |||
- | header_checks = regexp:/ | ||
- | |||
- | smtpd_banner = $myhostname ESMTP NO UCE | ||
- | |||
- | debug_peer_level = 2 | ||
- | # | ||
- | |||
- | sendmail_path = / | ||
- | newaliases_path = / | ||
- | mailq_path = / | ||
- | |||
- | setgid_group = postdrop | ||
- | html_directory = no | ||
- | manpage_directory = / | ||
- | sample_directory = / | ||
- | readme_directory = no | ||
- | inet_protocols = ipv4 | ||
- | meta_directory = / | ||
- | shlib_directory = / | ||
- | |||
- | |||
- | ############################################ | ||
- | ########################################### | ||
- | ########################################### | ||
- | disable_vrfy_command = yes | ||
- | message_size_limit = 0 | ||
- | #20971520 | ||
- | biff = no | ||
- | |||
- | local_transport = virtual | ||
- | local_recipient_maps = $alias_maps $virtual_mailbox_maps | ||
- | |||
- | virtual_transport = lmtp: | ||
- | |||
- | virtual_uid_maps = static:999 | ||
- | virtual_gid_maps = static:999 | ||
- | |||
- | virtual_mailbox_domains = proxy: | ||
- | virtual_alias_maps = proxy: | ||
- | | ||
- | | ||
- | virtual_mailbox_maps = proxy: | ||
- | | ||
- | |||
- | # if you let postfix store your mails directly (without using maildrop, dovecot deliver etc.) | ||
- | virtual_mailbox_base = /home/vmail | ||
- | |||
- | # SASL | ||
- | smtpd_sasl_type = dovecot | ||
- | smtpd_sasl_path = private/ | ||
- | smtpd_sasl_auth_enable = yes | ||
- | smtpd_sasl_security_options = noanonymous | ||
- | smtpd_sasl_local_domain = | ||
- | broken_sasl_auth_clients = no | ||
- | smtpd_sasl_authenticated_header = yes | ||
- | # Setup TLS | ||
- | smtpd_tls_cert_file = / | ||
- | smtpd_tls_key_file = / | ||
- | # abilita il debug... | ||
- | smtpd_tls_loglevel = 0 | ||
- | # metti a " | ||
- | smtpd_tls_security_level = may | ||
- | # Metti a yes per impedire AUTH non cifrata | ||
- | smtpd_tls_auth_only = no | ||
- | # Fai la cache delle sessioni | ||
- | smtpd_tls_session_cache_database = btree:/ | ||
- | |||
- | # Some ANTISPAM | ||
- | smtpd_delay_reject = yes | ||
- | smtpd_helo_required = yes | ||
- | smtpd_helo_restrictions = permit_mynetworks, | ||
- | smtpd_sender_restrictions = permit_sasl_authenticated, | ||
- | smtpd_recipient_restrictions = reject_unauth_pipelining, | ||
- | smtpd_client_restrictions = permit_mynetworks, | ||
- | #, reject_rbl_client zen.spamhaus.org, | ||
- | |||
- | policy-spf_time_limit = 3600s | ||
- | |||
- | smtpd_timeout = 60s | ||
- | default_process_limit = 200 | ||
- | |||
- | smtputf8_enable = no | ||
- | smtp_data_done_timeout = 1800 | ||
- | |||
- | smtpd_milters = unix:/ | ||
- | non_smtpd_milters = unix:/ | ||
- | |||
- | syslog_facility = mail | ||
- | syslog_name = postfix | ||
- | |||
- | body_checks = regexp:/ | ||
- | |||
- | maximal_queue_lifetime = 60m | ||
- | bounce_queue_lifetime = 60m | ||
- | smtp_connect_timeout | ||
- | smtp_helo_timeout = 60s | ||
- | |||
- | smtpd_relay_before_recipient_restrictions = no | ||
- | </ | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ===== Installation: | ||
- | |||
- | This step is **mandatory** and critical for proper email delivery. | ||
- | |||
- | |||
- | ===== Installation: | ||
- | |||
- | Install spamassassin & amavisd-new | ||
- | |||
- | |||
- | FILE / | ||
- | < | ||
- | # Link the mailbox uid and gid to postfix. | ||
- | virtual_uid_maps = static:5000 | ||
- | virtual_gid_maps = static:5000 | ||
- | |||
- | # Set the base address for all virtual mailboxes | ||
- | virtual_mailbox_base = /var/vmail | ||
- | </ | ||