Tags

arm arpaname autoinstall bin_sh blocage blosxom bsd bsdfrance cblog certification chroot cluster dg834 dhcp diffusion dns dnsmasq dom0 domU dovecot fail-over fail2ban firefox fossil freebsd ftp git guruplug install ipv6 jail kernel kimsufi lex libre linutop liste makefile mikrotik ml150 mohawk nanojail netbook netbsd nginx ntp ntp.org openbsd openntpd openrd opensmtpd openwrt orke pkgng poudriere privee proxy pxe python rc.conf rescue reverse rmll routage route rrdcgi sendmail serial sieve sjail sl2009 ssd sshd symon unbound update usb var_empty vimperator world xen yacc zfs

Powered by

blOg
maRkdown
awK
shEll

30/04/2016

[ openbsd domU autoinstall ]

201604300915 openbsd domU autoinstall

Dans un précédent billet, j'ai décrit l'environnement d'un dom0 NetBSD. Voyons maintenant l'installation automatique d'un domU OpenBSD.

Le principe

D'après ma configuration DHCP/DNS, un domU avec une interface ayant pour adresse MAC 00:16:3e:00:10:00 démarrant en pxe sera configuré de la manière suivante:

TFTP

Extrait de /etc/inetd.conf:

dom0.vpro.bsdsx.fr:tftp    dgram   udp   wait        root    /usr/libexec/tftpd  tftpd -l -s /home/dsx/xen/tftpboot

Le répertoire /home/dsx/xen/tftpboot est peuplé comme suit:

dsx@vpro>ls -lR /home/dsx/xen/tftpboot/
lrwxr-xr-x  1 dsx  wheel       15 Dec 31 15:50 auto_install -> openbsd_pxeboot
lrwxr-xr-x  1 dsx  wheel        8 Feb 13 08:41 bsd.rd -> bsd58.rd
-rw-r--r--  1 dsx  wheel  7642500 Dec 31 10:23 bsd58.rd
drwxr-xr-x  2 dsx  wheel      512 Jan 24 11:34 etc
-rw-r--r--  1 dsx  wheel    81092 Dec 31 10:24 openbsd_pxeboot

/home/dsx/xen/tftpboot/etc:
-rw-r--r--  1 dsx  wheel  48 Dec 29 16:10 boot.conf
-rw-r--r--  1 dsx  wheel  16 Apr 30 09:45 random.seed

dsx@vpro>cat /home/dsx/xen/tftpboot/etc/boot.conf 
stty com0 115200
set tty com0
boot tftp:/bsd.rd

La documentation d'autoinstall nous indique que la prochaine étape sera de répondre à l'url http://172.18.0.1/00:16:3e:00:10:00-install.conf?path=5.8/amd64.

HTTP

Extrait de /etc/inetd.conf:

dom0.vpro.bsdsx.fr:http stream tcp nowait:600 _httpd /usr/libexec/httpd httpd -V -C conf /home/dsx/xen/http/_cgi-bin/conf.sh -v /home/dsx/xen/http /home/dsx/xen/http/_default

Petites explications:

Les sets d'installation d'OpenBSD se trouvent dans un hôte virtuel:

dsx@vpro>ls xen/http/openbsd.vpro.bsdsx.fr/pub/OpenBSD/5.8/amd64/
INSTALL.amd64         bsd                   game58.tgz            site58-open-10.tgz    xshare58.tgz
SHA256                bsd.mp                index.txt             xbase58.tgz
SHA256.sig            bsd.rd                man58.tgz             xfont58.tgz
base58.tgz            comp58.tgz            pxeboot               xserv58.tgz

conf.sh

Ce script est le coeur de l'installation automatique. A partir de l'url http://172.18.0.1/00:16:3e:00:10:00-install.conf?path=5.8/amd64, il va:

Configuration d'un domU

dsx@vpro>cat -n xen/etc/open-10.cfg
 1  builder='hvm'
 2  memory=256
 3  name='open-10'
 4  vif=[ 'mac=00:16:3e:00:10:00, bridge=bridge0, model=virtio', 'mac=00:16:3e:01:10:00, bridge=bridge1, model=virtio' ]
 5  disk=[ '/dev/vg_sata/open-10-sata,,hda' ]
 6  boot='c'
 7  serial='pty'
 8  vnc=0
 9  on_poweroff='destroy'
10  on_reboot='destroy'
11  autodisklabel=[ '/ 100M-* 75%', 'swap 10M-* 25%' ]
12  packages='fossil--'
13  install_site=[
14      'echo "sndiod_flags=NO" >> /etc/rc.conf.local',
15      'echo "permit nopass :wheel" >> /etc/doas.conf'
16  ]
17  # !!! ACHTUNG !!!
18  # les commentaires en fin de fichier sinon eval va pas marcher
19  # http://xenbits.xen.org/docs/unstable/misc/xl-disk-configuration.txt
20  # http://xenbits.xen.org/docs/unstable/misc/vbd-interface.txt

Fichier de réponse

Voici le fichier de réponse généré par conf.sh:

System hostname = $name
Network interfaces = em0
IPv4 address for em0 = $REMOTE_ADDR
Default IPv4 route = $HTTP_HOST
IPv6 address for em0 = $IPV6::$lastdigit
IPv6 default router = $IPV6::1
Password for root = '*************'
Start sshd(8) by default = yes
Do you expect to run the X Window System = no
Change the default console to com0 = yes 
Which speed should com0 use = 115200
Setup a user = dsx
Full name for user = Admin user
Password for user = *************
Allow root ssh login = no
Public ssh key for user = $ssh_key
What timezone are you in = Europe/Paris
Location of sets = http 
HTTP Server = openbsd.$SERVER_NAME
URL to autopartitioning template = http://$HTTP_HOST/autodisklabel.conf?mac=$mac&version=$version
Checksum test for site${version}-${name}.tgz failed. Continue anyway = yes
Unverified sets: site${version}-${name}.tgz. Continue without verification = yes

On peut voir que l'url de l'autopartitioning est aussi gérée par conf.sh. Notons que par design, on ne peut configurer qu'une seule interface réseau. La configuration de mes 2 interfaces se fait à l'aide de site${version}-${name}.tgz qui ne contient qu'un fichier install.site.

install.site

Ce fichier contient les instructions pour finaliser l'installation:

#!/bin/sh
set -x

ln /etc/hostname.em0 /etc/hostname.vio0
sed 's/\.0\./\.1\./' /etc/hostname.vio0 > /etc/hostname.vio1

sed '/^ttyC/ s/on/off/' /etc/ttys > /tmp/ttys.serial && mv /tmp/ttys.serial /etc/ttys

export ftp_proxy=http://dom0:3128
export http_proxy=http://dom0:3128
export PKG_PATH=ftp://ftp2.fr.openbsd.org/pub/OpenBSD/`uname -r`/packages/`uname -m`
pkg_add -r tcsh vim--no_x11 rsync-- fossil--
usermod -s /usr/local/bin/tcsh dsx
echo "sndiod_flags=NO" >> /etc/rc.conf.local
echo "permit nopass :wheel" >> /etc/doas.conf

Démarrage pxe

Le fichier de configuration du domU ne permet pas en l'état de booter en pxe. Le script suivant effectue les modifications nécessaires et démarre le domU avec les bonnes options:

 1  #!/bin/sh
 2  
 3  DOMU_CONFIG_PATH=/home/dsx/xen/etc
 4  
 5  TYPE=${1:-open}
 6  NUMBER=${2:-10}
 7  
 8  config_file=$DOMU_CONFIG_PATH/$TYPE-$NUMBER.cfg
 9  
10  if [ ! -f $config_file ]; then
11      echo "'$config_file': file not found. Exit."
12      exit 1
13  fi
14  
15  sudo xl list | grep --quiet --max-count=1 "$TYPE-$NUMBER"
16  if [ $? -eq 0 ]; then
17      echo "'$TYPE-$NUMBER' is running. Exit."
18      exit 1
19  fi
20  
21  sed -e 's/virtio/e1000/g' $config_file > /tmp/pxe_$TYPE-$NUMBER.cfg
22  
23  sudo xl create /tmp/pxe_$TYPE-$NUMBER.cfg -c 'boot="n"'

Les fichiers

conf.sh est disponible ici, le template d'install.site est et le résulat est .

Script started on Sun May  1 09:19:38 2016
...
Script done on Sun May  1 09:24:08 2016

Moins de 5 minutes, pas mal non ?

A faire

Passer en OpenBSD 5.9 :)


Lien vers ce billet

20/08/2014

[ xen openbsd ]

201408202000 xen openbsd

Un domU OpenBSD à ma façon

Pour la recette d'aujourd'hui il nous faudra:

Le matériel

C'est un HP Compaq 6710b:

Le logiciel

L'installation de NetBSD est des plus classique:

  PV Name               /dev/rwd0e
  VG Name               vg0
  PV Size               127.06 GiB / not usable 3.27 MiB
  --- Logical volume ---
  LV Name                /dev/vg0/openbsd-001
  VG Name                vg0
  ...
  LV Size                20.00 GiB
  ...

Les extensions de virtualisation sont bien présentes:

dsx@dom0>sudo xl dmesg
(XEN) Xen version 4.2.4 (pbulk@) (gcc (NetBSD nb2 20110806) 4.5.3) Fri Apr  4 12:02:16 UTC 2014
...
(XEN) VMX: Supported advanced features:
(XEN)  - APIC MMIO access virtualisation
(XEN)  - APIC TPR shadow
(XEN)  - Virtual NMI
(XEN)  - MSR direct-access bitmap
(XEN) HVM: ASIDs disabled.
(XEN) HVM: VMX enabled
...
dsx@dom0>sudo xl info | grep hvm
virt_caps              : hvm
xen_caps               : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64 

Le réseau

Le dom0 possède:

Comme j'ai la main sur mon réseau, ma passerelle possède une route vers 10.40.20/24. J'ai aussi les entrées DNS suivantes:

dsx@dom0>dig dom0-gw.bsdsx.fr +short
10.40.20.1
dsx@dom0>dig dom0.openbsd.bsdsx.fr +short
10.40.20.1

La recette du jour

J'aime les installations en mode texte. J'aime les installations au travers du réseau. J'aime les consoles série. Je vais donc installer un domU OpenBSD 5.5 en pxe et console série en étant connecté en ssh au portable.

Préparation

Comme je risque de faire plusieurs essais / tests / installations, je prépare la récupération des sets:

dsx@dom0>ls /xen/http/dom0.openbsd.bsdsx.fr/pub/OpenBSD/5.5/amd64/
INSTALL.amd64 SHA256.sig    bsd           bsd.rd        etc55.tgz     index.txt     pxeboot       xbase55.tgz   xfont55.tgz   xshare55.tgz
SHA256        base55.tgz    bsd.mp        comp55.tgz    game55.tgz    man55.tgz     site55.tgz    xetc55.tgz    xserv55.tgz

Qui dit pxe dit dhcp et tftp. Pour le dhcp, c'est du classique:

dsx@dom0>cat /etc/dhcpd.conf
subnet 10.40.20.0 netmask 255.255.255.0 {
    option routers 10.40.20.1;
    option domain-name-servers 172.16.10.20, 172.16.10.21;
    option domain-name "bsdsx.fr";

    pool {
        max-lease-time 28800;
        range 10.40.20.10 10.40.20.199;
        deny unknown-clients;

        host openbsd-001 {
            hardware ethernet 00:16:3e:00:12:04;
            fixed-address 10.40.20.12;
            filename "pxeboot";
            next-server 10.40.20.1;
        }
    }
}

Pour le tftp et le http, c'est inetd qui vient à la rescousse:

dsx@dom0>grep -v ^# /etc/inetd.conf
dom0-gw:http    stream  tcp   nowait:600  _httpd  /usr/libexec/httpd  httpd -V -v /xen/http /xen/http/_default
dom0-gw:tftp    dgram   udp   wait        root    /usr/libexec/tftpd  tftpd -l -s /xen/tftpboot

Je restreint l'écoute des service à une seule ip et j'utilise la fonctionnalité 'virtualhost' de httpd

Il me reste à peupler le tftp:

dsx@dom0>ls -Rl /xen/tftpboot/
total 17092
-rw-r--r--  1 dsx  wheel  8643177 Aug 23 13:06 bsd.rd
drwxr-xr-x  2 dsx  wheel      512 Aug 24 08:42 etc
-rw-r--r--  1 dsx  wheel    80436 Aug 23 13:06 pxeboot

/xen/tftpboot/etc:
total 4
-rw-r--r--  1 dsx  wheel  48 Aug 24 08:42 boot.conf
dsx@dom0>cat /xen/tftpboot/etc/boot.conf
stty com0 115200
set tty com0
boot tftp:/bsd.rd

Exécution

La configuration du domU est assez simple:

builder = 'hvm'
memory = 256
name = 'openbsd-001.bsdsx.fr'
vif = [ 'mac=00:16:3e:00:12:04, bridge=bridge4, model=e1000' ]
disk = [ 'phy:/dev/mapper/vg0-openbsd--001,ioemu:xvda,rw' ]
boot = 'n'
serial = 'pty'
vnc = 0

Pas la peine de me faire remarquer qu'il eut été judicieux de remplacer e1000 par virtio:

dsx@dom0>ls /usr/pkg/share/xen/qemu/pxe*
/usr/pkg/share/xen/qemu/pxe-e1000.bin              /usr/pkg/share/xen/qemu/pxe-pcnet.bin
/usr/pkg/share/xen/qemu/pxe-ne2k_pci.bin           /usr/pkg/share/xen/qemu/pxe-rtl8139.bin

Il est temps de faire un premier essai:

dsx@dom0>sudo xl create /xen/etc/openbsd-hvm.cfg -c
Parsing config from /xen/etc/openbsd-hvm.cfg
xc: info: VIRTUAL MEMORY ARRANGEMENT:
  Loader:        0000000000100000->0000000000171de4
  TOTAL:         0000000000000000->000000000f800000
  ENTRY ADDRESS: 0000000000100000
xc: info: PHYSICAL MEMORY ALLOCATION:
  4KB PAGES: 0x0000000000000200
  2MB PAGES: 0x000000000000007b
  1GB PAGES: 0x0000000000000000
Daemon running with PID 5714
net0: 00:16:3e:00:12:04 on PCI00:03.0 (open)
  [Link:up, TX:0 TXE:0 RX:0 RXE:0]
DHCP (net0 00:16:3e:00:12:04).... ok
net0: 10.40.20.12/255.255.255.0 gw 10.40.20.1
Booting from filename "pxeboot"
tftp://10.40.20.1/pxeboot. ok
>> OpenBSD/amd64 PXEBOOT 3.23
cannot open tftp:/etc/random.seed: No such file or directory
booting tftp:/bsd.rd: 4190944+963509+2917168+0+520928 [100+342504+222489]=0xcbd590
entry point at 0x10001e0 [7205c766, 34000004, 24448b12, 55c8a304]
Copyright (c) 1982, 1986, 1989, 1991, 1993
  The Regents of the University of California.  All rights reserved.
Copyright (c) 1995-2014 OpenBSD. All rights reserved.  http://www.OpenBSD.org

OpenBSD 5.5 (RAMDISK_CD) #237: Wed Mar  5 09:43:42 MST 2014
    deraadt@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/RAMDISK_CD
real mem = 242933760 (231MB)
avail mem = 231628800 (220MB)
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.4 @ 0xeb01f (11 entries)
bios0: vendor Xen version "4.2.4" date 07/10/2014
bios0: Xen HVM domU
acpi0 at bios0: rev 2
acpi0: sleep states S3 S4 S5
acpi0: tables DSDT FACP APIC HPET WAET SSDT SSDT
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
ioapic0 at mainbus0: apid 1 pa 0xfec00000, version 11, 48 pins
ioapic0: misconfigured as apic 0, remapped to apid 1
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Core(TM)2 Duo CPU T8100 @ 2.10GHz, 2095.13 MHz
cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,SSSE3,CX16,SSE4.1,x2APIC,DEADLINE,NXE,LONG,LAHF,PERF
cpu0: 3MB 64b/line 8-way L2 cache
cpu0: apic clock running at 100MHz
acpiprt0 at acpi0: bus 0 (PCI0)
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 "Intel 82441FX" rev 0x02
"Intel 82371SB ISA" rev 0x00 at pci0 dev 1 function 0 not configured
pciide0 at pci0 dev 1 function 1 "Intel 82371SB IDE" rev 0x00: DMA, channel 0 wired to compatibility, channel 1 wired to compatibility
wd0 at pciide0 channel 0 drive 0: <QEMU HARDDISK>
wd0: 16-sector PIO, LBA48, 20480MB, 41943040 sectors
wd0(pciide0:0:0): using PIO mode 4, DMA mode 2
pciide0: channel 1 disabled (no drives)
"Intel 82371AB Power" rev 0x01 at pci0 dev 1 function 3 not configured
vga1 at pci0 dev 2 function 0 "Cirrus Logic CL-GD5446" rev 0x00
wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
em0 at pci0 dev 3 function 0 "Intel 82540EM" rev 0x03: apic 1 int 28, address 00:16:3e:00:12:04
isa0 at mainbus0
com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
com0: console
pckbc0 at isa0 port 0x60/5
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
softraid0 at root
scsibus0 at softraid0: 256 targets
PXE boot MAC address 00:16:3e:00:12:04, interface em0
root on rd0a swap on rd0b dump on rd0b
erase ^?, werase ^W, kill ^U, intr ^C, status ^T

Welcome to the OpenBSD/amd64 5.5 installation program.
Starting non-interactive mode in 5 seconds...
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell? s
# halt
syncing disks... done

The operating system has halted.
Please press any key to reboot.

Quelques remarques:

La touche finale

Depuis la version 5.3, OpenBSD est capable d'utiliser les drivers virtio (que je ne peux pas utiliser pour le pxe). La version 5.5 amène une fonctionnalité bien pratique: autoinstall.

Après un peu de lecture, j'établis le plan suivant:

Le répertoire /xen/tftpboot:

dsx@dom0>ls -l /xen/tftpboot/
total 17092
lrwxr-xr-x  1 dsx  wheel        7 Aug 24 11:14 auto_install -> pxeboot
-rw-r--r--  1 dsx  wheel  8643177 Aug 23 13:06 bsd.rd
drwxr-xr-x  2 dsx  wheel      512 Aug 24 10:24 etc
-rw-r--r--  1 dsx  wheel    80436 Aug 23 13:06 pxeboot

Le fichier /xen/http/_default/install.conf:

System hostname = openbsd-001
Network interfaces = em0
IPv4 address for em0 = dhcp
Password for root = monsupermotdepasse
Do you expect to run the X Window System = no
Change the default console to com0 = yes 
Which speed should com0 use = 115200
Setup a user = dsx
Full name for user dsx = Admin user
Password for user = *************
Public ssh key for user = ssh-rsa AAAA...
What timezone are you in = Europe/Paris
Location of sets = http 
Server = dom0.openbsd.bsdsx.fr
Set name(s) = site55.tgz
Checksum test for site55.tgz failed. Continue anyway = yes
Unverified sets: site55.tgz. Continue without verification = yes

Le fichier site55.tgz est composé d'un unique script:

dsx@dom0>cat install.site 
#!/bin/sh
set -x
cp /etc/hostname.em0 /etc/hostname.vio0
export PKG_PATH=ftp://ftp.fr.openbsd.org/pub/OpenBSD/`uname -r`/packages/`uname -m`
pkg_add -r tcsh vim--no_x11 rsync-- fossil--
usermod -s /usr/local/bin/tcsh dsx

echo 'sndiod_flags=NO' >> /etc/rc.conf.local
echo '%wheel        ALL=(ALL) NOPASSWD: SETENV: ALL' >> /etc/sudoers

sed '/^ttyC/ s/on/off/' /etc/ttys > /etc/ttys.serial && mv /etc/ttys.serial /etc/ttys
dsx@dom0>chmod +x install.site 
dsx@dom0>tar czvf /xen/http/dom0.openbsd.bsdsx.fr/pub/OpenBSD/5.5/amd64/site55.tgz install.site

Pour qu'il soit pris en compte il faut mettre à jour le fichier index.txt:

dsx@dom0>cd /xen/http/dom0.openbsd.bsdsx.fr/pub/OpenBSD/5.5/amd64/ && rm index.txt && ls -l > index.txt

J'ai préféré l'utilisation d'une clef pour me connecter en ssh, je n'ai donc pas de mot de passe valide ce qui m'oblige à rajouter une entrée dans /etc/sudoers. Un petit man pkg_add pour réviser les flavors afin d'installer mes paquets indispensables et c'est prêt.fichier autoinstall_55.tx, 177 lignes, 10Ko.

Le fichier de configuration du domU devient:

dsx@dom0>cat /xen/etc/openbsd-hvm.cfg
builder = 'hvm'
memory = 256
name = 'openbsd-001.bsdsx.fr'
vif = [ 'mac=00:16:3e:00:12:04, bridge=bridge4, model=virtio' ]
disk = [ 'phy:/dev/mapper/vg0-openbsd--001,xvda,rw' ]
boot = 'c'
serial = 'pty'
vnc = 0
on_reboot="destroy"

Pour finir

On ne peut pas dire qu'une installation d'OpenBSD prenne du temps ou soit difficile (une touche Entrée en état de marche semble le seul pré-requis). Mais avec l'autoinstall, on atteint un niveau de loutritude olympique. Et encore une fois, tout ça à l'aide de NetBSD et Xen :)


Lien vers ce billet

15/11/2011

[ openbsd sendmail ]

201111151920 openbsd sendmail

OpenBSD, Free.fr, Hurricane Electric et le courriel

A la faveur d'une réinstallation sauvage de mon Linutop (qui est passé d'un OpenBSD 4.5 à un OpenBSD 5.0), je me suis rendu compte que ma configuration du courriel laissait à désirer.

Les forces en présence:

Openbsd et sendmail

On laisse de côté les sendmail sapu, postfix/exim/qmail/whatever saymieu, seul opensmtp pourrait trouver grâce à mes yeux mais pour l'instant il ne fait pas la réécriture d'entête.

Pas la peine de me ressortir le couplet sendmail saytrouhay, le fichier de conf saymalfay, toussa ... Je sais. Mais s'il y a bien un avantage à sendmail, c'est qu'il est livré de base. Toujours ça de moins à installer. De plus, les dernières failles commencent à dater un peu et la conf livrée par défaut ne transforme pas la machine en passoire.

Tunnel Hurricane Electric

Pas la peine de me parler de l'ipv6 de chez free. Je salue l'initiative, c'est gentil pour faire mumuse mais un /64 ça fait vraiment pingre. Un grand merci à Hurricane Electric qui, en plus de faire du prosel intelligent (leur certification vaut ce quelle vaut, elle a le mérite d'exister, tout comme leur tshirt) accorde grâcieusement 5 (oui, cinq) /48.

Réinstall sauvage

Oui, je sais, c'est pas compliqué de mettre à jour un openbsd. Mais je suis une loutre (hum, mon mirroir et ma balance parlent plutôt d'une p....n de grosse loutre mais ce sont de grossiers personnages) et je suis du genre à passer de 4.5 à 5.0 à la faveur d'une coupure électrique.

Les objectifs

Envoyer du courriel en utilisant le smtp de mon FAI. Les entêtes des courriels seront réécrites afin de faire référence à l'adresse email de mon FAI. Faire en sorte que la prochaine réinstall sauvage se passe mieux.

Premier exemple

OSTYPE(openbsd)
define(`SMART_HOST', `smtp.free.fr')
FEATURE(genericstable, `hash -o /etc/mail/genericstable')
FEATURE(`no_default_msa')
FEATURE(`local_procmail')
DAEMON_OPTIONS(`Family=inet, address=127.0.0.1, Name=MTA')
DAEMON_OPTIONS(`Family=inet6, address=::1, Name=MTA6, M=O')
MASQUERADE_AS(`free.fr')
FEATURE(masquerade_envelope)
FEATURE(local_no_masquerade)
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')
MAILER(procmail)
MAILER(local)
MAILER(smtp)

Compliqué hein ? Quelques explications:

Je passe sous silence le contenu de /etc/mail/genericstable, il est livré de base et documenté.

Seul soucis avec cette configuration: elle ne fonctionne pas tout à fait. Aucun soucis avec la réécriture des entêtes mais l'utilisation de smtp.free.fr va poser problème comme en témoigne les logs:

# extrait /var/log/mailog
to=<moi@la.bas>, ctladdr=<dsx@linutop.bsdsx.fr>, relay=smtp.free.fr. [IPv6:2a01:e0c:1:1599::10], stat=Service unavailable
DSN: Service unavailable

Solution

Utiliser l'authentification. Il faut activer cette fonctionnalité dans la console de gestion puis modifier notre configuration comme indiqué ici.

Je ne vous cache pas que ici, sapamarche. Je ne sais pas ce que j'ai merdoyé et flemme de résoudre.

Une solution un peu plus loutresque:

define(`SMART_HOST', `[212.27.48.4]')

On se dispense de l'authentification à chaque envoi de courriel et les pros du réseau confirmeront qu'il est plus simple/rapide de joindre 212.27.48.4 plutôt que de passer par un tunnel londonien pour atteindre 2a01:e0c:1:1599::10.

Pour finir

Pour me simplifier la vie, un Makefile sans prétention:

MAKEMAP=        /usr/libexec/sendmail/makemap
MY!=            hostname -s

.SUFFIXES:  .mc .cf

DB_FILES=       genericstable.db
FILES=          genericsdomain

ALL=    ${MY}.cf ${DB_FILES} ${FILES}

.mc.cf:
        @m4 /usr/share/sendmail/m4/cf.m4 ${.ALLSRC} > $@

all: ${ALL}

clean:
        @rm -f ${ALL}

genericstable.db: genericstable
        @${MAKEMAP} hash ${.ALLSRC} < ${.ALLSRC}

genericsdomain:
        @hostname > $@

install: ${ALL}
        @sudo install -g wheel -o root -m 644 ${.ALLSRC} /etc/mail
        @echo "You can add the following line in /etc/rc.conf.local:"
        @echo "sendmail_flags=\"-L sm-mta -C/etc/mail/${MY}.cf -bd -q30m\""

restart:
        @sudo /etc/rc.d/sendmail restart

Le contenu de mon $HOME/etc/mail:

dsx@linutop>ls -l
total 12
-rw-r--r--  1 dsx  wheel  619 Nov 14 22:18 Makefile
-rw-r--r--  1 dsx  wheel  998 Nov 13 12:51 genericstable
-rw-r--r--  1 dsx  wheel  459 Nov 14 22:19 linutop.mc

Le tout en action:

dsx@linutop>make clean && make && make install
You can add the following line in /etc/rc.conf.local:
sendmail_flags="-L sm-mta -C/etc/mail/linutop.cf -bd -q30m"
dsx@linutop>make restart
sendmail(ok)
sendmail(ok)

Le mot de la fin

Oui, j'ai lu ttp://wiki.mutt.org/?MuttFaq/Sendmail. Oui les clients de courriels savent dialoguer directement avec un serveur smtp. Alors à quoi bon tous ces efforts ? Tout simplement parce que participer à un projet opensource cela peut commencer par (dmesg; sysctl hw.sensors) | mail -s 'Linutop v3' dmesg@openbsd.org (et continuer avec sendbug(1), okazou).


Lien vers ce billet