Postfix: relay individual per usuari/domini

Per evitar que Gmail i Outlook marquin els correus-e procedents del nostre com a servidor com a correu brossa ens pot interessar fer relay en un altre SMTP, i més concretament fer relay d’alguns usuaris concrets.

Afegim el fitxer /etc/postfix/bysender:

user@example.com   [smtp.otherserver.com]:port
  • Nota: Si no posem la part de user farà relay de tot el domini.

Indiquem les credencials al fitxer /etc/postfix/sasl/sasl_passwd:

[smtp.otherserver.com]:port email@otherserver.com:password

Fem el hash/map del fitxer:

# postmap /etc/postfix/bysender
# postmap /etc/postfix/sasl/sasl_passwd

Protegim els fitxers:

# chown root:root /etc/postfix/sasl/sasl_passwd /etc/postfix/sasl/sasl_passwd.db
# chmod 0600 /etc/postfix/sasl/sasl_passwd /etc/postfix/sasl/sasl_passwd.db

Editem el fitxer /etc/postfix/main.cf:

# Load relays file
sender_dependent_relayhost_maps = hash:/etc/postfix/bysender
# Enable SASL authentication
smtp_sasl_auth_enable = yes
# Disallow methods that allow anonymous authentication
smtp_sasl_security_options = noanonymous
# Location of sasl_passwd
smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
# Location of CA certificates
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Reiniciem el servei:

# service postfix restart

Fonts:

 

Let’s Encrypt proxy invers

Apunts breus sobre els problemes que he tingut configurant Let’s Encrypt amb un proxy invers i diferents màquines.

Els fitxers de renovació es troben a: /etc/letsencrypt/renewal

Virtualhosts a la mateixa màquina

No s’ha de fer res especial, que el Certbot renovi per Webroot i prou.

Un exemple de fitxer de renovació:

# renew_before_expiry = 30 days
version = 0.10.2
archive_dir = /etc/letsencrypt/archive/lanpartyripoll.cat
cert = /etc/letsencrypt/live/lanpartyripoll.cat/cert.pem
privkey = /etc/letsencrypt/live/lanpartyripoll.cat/privkey.pem
chain = /etc/letsencrypt/live/lanpartyripoll.cat/chain.pem
fullchain = /etc/letsencrypt/live/lanpartyripoll.cat/fullchain.pem

# Options used in the renewal process
[renewalparams]
authenticator = webroot
installer = None
account = XXXXXXXXXXXXXXXXXXXXXXXXXX
[[webroot_map]]
www.lanpartyripoll.cat = /var/www/lanpartyripoll.cat
lanpartyripoll.cat = /var/www/lanpartyripoll.cat

 

Virtualhosts a diferent màquina

Primer de tot he definit un subdomini apuntant a la màquina que conté el proxy invers. Li he “assignat” els sites default i default-ssl. Aquests sites tenen com a root configurat /var/www/quill. Partint d’aquí, el fitxer de renovació:

# renew_before_expiry = 30 days
version = 0.10.2
archive_dir = /etc/letsencrypt/archive/aniolmarti.cat
cert = /etc/letsencrypt/live/aniolmarti.cat/cert.pem
privkey = /etc/letsencrypt/live/aniolmarti.cat/privkey.pem
chain = /etc/letsencrypt/live/aniolmarti.cat/chain.pem
fullchain = /etc/letsencrypt/live/aniolmarti.cat/fullchain.pem

# Options used in the renewal process
[renewalparams]
authenticator = webroot
installer = None
account = XXXXXXXXXXXXXXXXXXXXXX
[[webroot_map]]
www.aniolmarti.cat = /var/www/quill
blog.aniolmarti.cat = /var/www/quill
aniolmarti.cat = /var/www/quill
quill.aniolmarti.cat = /var/www/quill

A la màquina on hi ha allotjada la web cal modificar l’.htaccess:

Redirect 301 /.well-known http://quill.aniolmarti.cat/.well-known

 

Casos especials

En un subdomini hi tinc un Trac protegit per autenticació HTTP, això provoca que el client d’ACME no pugui accedir-hi i per tant no ho pugui verificar. Això em passa amb el domini xarxacatala.cat.

Primer de tot cal modificar el site del nginx:

 location ^~ /.well-known/acme-challenge/ {
     root /var/www/xarxacatala.cat;
 }

Amb això canviem l’arrel del directori de verificació del subdomini a la del domini principal, que no està protegit per autenticació HTTP.

El fitxer de renovació:

# renew_before_expiry = 30 days
version = 0.10.2
archive_dir = /etc/letsencrypt/archive/xarxacatala.cat
cert = /etc/letsencrypt/live/xarxacatala.cat/cert.pem
privkey = /etc/letsencrypt/live/xarxacatala.cat/privkey.pem
chain = /etc/letsencrypt/live/xarxacatala.cat/chain.pem
fullchain = /etc/letsencrypt/live/xarxacatala.cat/fullchain.pem

# Options used in the renewal process
[renewalparams]
authenticator = webroot
installer = None
account = XXXXXXXXXXXXXXXXXXXXXX
[[webroot_map]]
www.xarxacatala.cat = /var/www/xarxacatala.cat
xarxacatala.cat = /var/www/xarxacatala.cat
gestio.xarxacatala.cat = /var/www/xarxacatala.cat

Pegat proxy invers amb WordPress

Avui he estat mirant de canviar algunes configuracions del servidor i em trobava que amb un nginx (HTTPS) fent de proxy invers cap a un Apache servint un WordPress el navegador responia amb un error de problema de redirecció. Per arreglar-ho només cal afegir unes línies al fitxer wp-config.php.

Busquem la línia define('WP_DEBUG', false); i just després afegim:

// Codi pel proxy invers
if ( $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
 $_SERVER['HTTPS'] = 'on';
 $_SERVER['SERVER_PORT'] = 443;
}

UnattendedUpgrades – Debian

unattended-upgrades és un paquet que permet realitzar automàticament les actualitzacions del sistema. Per fer-ne una configuració molt bàsica que ni tan sols ens avisi per correu-e és molt simple.

Instal·lem el paquet:

# apt-get install unattended-upgrades

Editem el fitxer /etc/apt/apt.conf.d/20auto-upgrades:

// Enable the update/upgrade script (0=disable)
APT::Periodic::Enable "1";

// Do "apt-get update" automatically every n-days (0=disable)
APT::Periodic::Update-Package-Lists "1";

// Do "apt-get upgrade --download-only" every n-days (0=disable)
APT::Periodic::Download-Upgradeable-Packages "1";

// Run the "unattended-upgrade" security upgrade script
// every n-days (0=disabled)
// Requires the package "unattended-upgrades" and will write
// a log in /var/log/unattended-upgrades
APT::Periodic::Unattended-Upgrade "1";

// Do "apt-get autoclean" every n-days (0=disable)
APT::Periodic::AutocleanInterval "7";

Descomentem les línies del fitxer /etc/apt/apt.conf.d/50unattended-upgrades:

 "o=Debian,a=stable";
 "o=Debian,a=stable-updates";
 // "o=Debian,a=proposed-updates";
 "origin=Debian,codename=${distro_codename},label=Debian-Security";

Reiniciem el servei:

# systemctl restart unattended-upgrades