From 24d91bbbbfbe1e56de74901828a11d352db06cfc Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sun, 22 Dec 2024 01:29:27 +0100 Subject: [PATCH] Migrated articles not directly related to ISPmail --- astro.config.mjs | 8 +- .../docs/articles/backup-rsnapshot.mdx | 152 ++++++++++++++ .../docs/articles/debian-packages-too-old.mdx | 55 +++++ .../images/debian-packages-too-old-pdo.png | Bin 0 -> 92542 bytes .../docs/articles/images/lvm-diagram.png | Bin 0 -> 40401 bytes .../docs/articles/images/stdinouterr.png | Bin 0 -> 13815 bytes .../docs/articles/pipes-and-redirection.mdx | 121 +++++++++++ .../docs/articles/renaming-multiple-files.mdx | 24 +++ src/content/docs/articles/squid-acls.mdx | 151 ++++++++++++++ .../docs/articles/understanding-lvm.mdx | 189 ++++++++++++++++++ .../docs/articles/updating-lenovo-bios.mdx | 26 +++ .../230-monitoring-and-backup.mdx | 60 ++++++ .../docs/ispmail-bookworm/240-ansible.mdx | 19 ++ .../ispmail-bookworm/250-success-stories.mdx | 8 + src/content/docs/ispmail-bookworm/260-faq.mdx | 44 ++++ 15 files changed, 853 insertions(+), 4 deletions(-) create mode 100644 src/content/docs/articles/backup-rsnapshot.mdx create mode 100644 src/content/docs/articles/debian-packages-too-old.mdx create mode 100644 src/content/docs/articles/images/debian-packages-too-old-pdo.png create mode 100644 src/content/docs/articles/images/lvm-diagram.png create mode 100644 src/content/docs/articles/images/stdinouterr.png create mode 100644 src/content/docs/articles/pipes-and-redirection.mdx create mode 100644 src/content/docs/articles/renaming-multiple-files.mdx create mode 100644 src/content/docs/articles/squid-acls.mdx create mode 100644 src/content/docs/articles/understanding-lvm.mdx create mode 100644 src/content/docs/articles/updating-lenovo-bios.mdx create mode 100644 src/content/docs/ispmail-bookworm/230-monitoring-and-backup.mdx create mode 100644 src/content/docs/ispmail-bookworm/240-ansible.mdx create mode 100644 src/content/docs/ispmail-bookworm/250-success-stories.mdx create mode 100644 src/content/docs/ispmail-bookworm/260-faq.mdx diff --git a/astro.config.mjs b/astro.config.mjs index 9c26b4c..bb514e6 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -21,10 +21,10 @@ export default defineConfig({ // slug: "ispmail-bookworm", autogenerate: { directory: "ispmail-bookworm" }, }, - // { - // label: "Reference", - // autogenerate: { directory: "reference" }, - // }, + { + label: "Misc articles", + autogenerate: { directory: "articles" }, + }, ], logo: { light: "./src/assets/logo.svg", diff --git a/src/content/docs/articles/backup-rsnapshot.mdx b/src/content/docs/articles/backup-rsnapshot.mdx new file mode 100644 index 0000000..486d516 --- /dev/null +++ b/src/content/docs/articles/backup-rsnapshot.mdx @@ -0,0 +1,152 @@ +--- +title: Backups with rsnaphot to external USB drives +slug: rsnapshot-and-usb-drives/ +--- + +How long has it been since you last backed up your Linux system? Let me guess – you tried various backup systems and hate all of them? Let me show you how to use [rsnapshot](http://www.rsnapshot.org/) and an external inexpensive USB drive to back up precious data easily. + +## Why? + +I’m a sysadmin in my day job. How could I not care about half decent backups at home. For years I have been running Bacula which has served me half well. An old AIT drive, a couple of tapes, my trusted Adaptec 2940 card and a PostgreSQL-driven Bacula installation worked moderately well but became increasingly cumbersome and fragile. The server (a retired desktop computer) crashed randomly during backups (some ancient SCSI component started to die). Or I forgot to change one of the three needed tapes (as I lacked a changer) in time so that the backup job timeout killed the running backup. Then I had to declare the tapes as free again because cancelling a backup doesn’t make Bacula free the tapes again.Or I played with PostgreSQL and inadvertently killed the director process. So maybe one backup every two weeks really ran through. And restoring files took minutes until the database finally got me the list of files. Finally one of my tapes got stuck in the drive and the drive refused to eject it. Of course the emergency ejection screw did nothing. Enough was enough. So I thought I could use an external USB drive instead of tapes but Bacula did not actually support that. An ancient shell script (vchanger) should emulate a tape changer with USB disk drives. I was too far off from [KISS](http://en.wikipedia.org/wiki/KISS_principle). What in theory sounded like decent hard- and software failed me. + +## How? + +I decided to spend 50€ (the price of one AIT tape) on a 500 GB external USB disk drive and learn about rsnapshot. And in no time I had a simple backup running where I didn’t have to worry about a huge index database and could instantly access any files backed up. What I did: + +### Format, label and get the UUID + +After plugging in the disk for the first time I ran “dmesg” to find out which device the disk was occupying: + +``` +[219991.641225] scsi 12:0:0:0: Direct-Access     Seagate  Portable         0130 PQ: 0 ANSI: 4 +[219991.641765] sd 12:0:0:0: Attached scsi generic sg4 type 0 +[219991.642462] sd 12:0:0:0: [sdc] 976773168 512-byte logical blocks: (500 GB/465 GiB) +[219991.643080] sd 12:0:0:0: [sdc] Write Protect is off +[219991.643083] sd 12:0:0:0: [sdc] Mode Sense: 2f 08 00 00 +[219991.643085] sd 12:0:0:0: [sdc] Assuming drive cache: write through +[219991.644964] sd 12:0:0:0: [sdc] Assuming drive cache: write through +[219991.646599]  sdc: sdc1 +[219991.694834] sd 12:0:0:0: [sdc] Assuming drive cache: write through +[219991.695212] sd 12:0:0:0: [sdc] Attached SCSI disk +``` + +So the disk was at /dev/sdc1. I formatted the disk using +``` +mkfs.ext4 /dev/sdc1 +``` +and read the UUID (a unique identifier assigned to each disk while formatting) using +``` +tune2fs -l /dev/sdc1 | grep UUID +``` +which gave me +``` +Filesystem UUID:          44449456-2b13-47df-bfcf-9c5eedf3b287 +``` +### Set up autofs + +You will want to have your USB mounted automatically when you plug it in and use it. On a server there is no plug-and-play like that by default. But the “[autofs](http://wiki.debian.org/AutoFs)” software does that well. Install it: +``` +apt-get install autofs +``` +Edit the /etc/auto.master file and add this line: +``` +/var/autofs/removable /etc/auto.usbdrive –timeout=2,sync,nodev,nosuid +``` +Also create an /etc/auto.usbdrive file (that you just pointed to) and add the line into it: +``` +usbdrive -fstype=auto    UUID=44449456-2b13-47df-bfcf-9c5eedf3b287 +``` +And finally restart the autofs process: +``` +/etc/init.d/autofs restart +``` +This does not yet mount the disk though. But if you change into the /var/autofs/removable/usbdrive directory then autofs will look for a disk with the given UUID and mount it there on-the-fly. Try it: +``` +cd /var/autofs/removable/usbdrive +``` +You may notice a short delay while autofs mounts the disk. Then you should find yourself on the mounted USB drive. Type “df .” to see the filesystem. It should look like: +``` +Filesystem            Size  Used Avail Use% Mounted on +/dev/sdc1             459G  198M  435G   1% /var/autofs/removable/usbdrive +``` +### Install and configure rsnapshot + +Install the rsnapshot package: +``` +apt-get install rsnapshot +``` +The default configuration file is located in /etc/rsnapshot.conf. Edit it. But beware that all elements have to be seperated by actual Tabs. I’m using VIM and in my default settings I used “expandtabs” which automatically turned my Tabs into spaces. You don’t want that. + +In that file configure “snapshot\_root” to point to your autofs directory: +``` +snapshot_root   /var/autofs/removable/usbdrive +``` +Unless you are happy with the default backup times you will want to change the “interval” section. Make sure that you edit the /etc/cron.d/rsnapshot, too, or else rsnapshot won’t run automatically at all. I found the intervals a bit tricky but the the “man rsnapshot” manpage helped me understand it. You can use different names for the different frequencies of backups you run. But the names like “hourly” or “daily” do not mean anything. rsnapshot doesn’t have any association of “hourly” to 60 minutes for example. + +My configuration reads: +``` +retain  daily   7 +retain  weekly  4 +``` +This is much less magical than you might imagine. It just means that if you run “rsnapshot daily” then it will create backups called daily.0 to daily.6 and rotate the numbers on every rsnapshot run. You won’t have more than 7 “daily” directories though which is what you specify in the “retain” line. And you need to make sure that you call “rsnapshot daily” through a crontab. As you can imagine I’m running 7 daily backups (up to one week) and 4 weekly backups (up to one month). So my /etc/cron.d/rsnapshot file has these lines: +``` +30 2      * * *        root    /usr/bin/rsnapshot daily +0  4      * * 1        root    /usr/bin/rsnapshot weekly +``` +Are you unfamiliar with crontab entries? It’s quite easy. You specify the times that you want the certain command run. The columns stand for minute, hour, day of month, month and the day of the week. So my daily job runs at 2:30 at night every day. And the weekly job is run at 4:00 at night on every monday. See “man 5 crontab” for a reference. + +Back to your /etc/rsnapshot.conf. Define which directories you want to back up and which you want to have excluded. This is what I use: + +``` +backup  /var/       myserver/ +backup  /home/      myserver/ +backup  /etc/       myserver/ +exclude /home/*/tmp/ +exclude /home/*/.local/share/Trash/ +exclude /home/*/.cache/ +exclude /var/lib/mysql/ +exclude /var/lib/postgresql/ +exclude /var/tmp/ +exclude /var/log/ +exclude /var/cache/apt/archives/ +``` + +Of course you can decide to backup your entire server and just exclude evil mount points like /mnt, /dev, /sys, /media and /proc. But in a case of total emergency I’d rather reinstall Debian, install the packages and restore the files. I’m excluding the database directories for MySQL and PostgreSQL here because I cannot just copy the files but need to run a proper backup. + +What I also do back up a list of installed Debian packages in case I would need to reinstall: +``` +backup_script   /usr/bin/dpkg –get-selections > packages.txt   installed-packages/ +``` +And I backup the databases: +``` +backup_script   /usr/bin/mysqldump –opt –databases mailserver mysql | gzip > mysqldump    mysql/ +``` +I have the MySQL root password stored in /root/.my.cnf so I don’t need to mention it here. + +### Test the rsnapshot configuration + +To make sure your configuration is correct run +``` +rsnapshot configtest +``` +Fix any errors until rsnapshot is happy and shows “Syntax OK”. + +You can simulate a daily backup by running: +``` +rsnapshot -t daily +``` +It will print out the commands that rsnapshot would run. + +### Restoring files + +If you want to access the files that rsnapshot backed up this is as simple as could be. In /var/autofs/removable/usbdrive/… you will find directories for hourly, daily and weekly backups. Since rsnapshot cleverly uses hardlinks unchanged files barely take up any space. You can just browse around in the respective subdirectories and access your files. + +That way you can even buy a second external USB disk drive and put the first disk off-site in case your house burns down, get burglared or your cat pees on the first disk. + +### Off-site backup + +Of course if you lost the one external disk then all your backups would be ruined. So I suggest you get a second external disk and once a month swap them. Depending on your paranoia you can lock them in your bank’s deposit box or give it to your mother-in-law. As opposed to other backup solutions you can just use the second disk without much configuration. Make sure the autofs knows about it and plug it in. + +## Thanks + +Kudos to Jochen R. who recommended rsnapshot to me. diff --git a/src/content/docs/articles/debian-packages-too-old.mdx b/src/content/docs/articles/debian-packages-too-old.mdx new file mode 100644 index 0000000..373314b --- /dev/null +++ b/src/content/docs/articles/debian-packages-too-old.mdx @@ -0,0 +1,55 @@ +--- +title: Debian packages are so old +slug: debian-packages-are-so-old/ +--- + +Debian comes with tens of thousands of software packages that you can easily install on your system. But Debian only publishes a new “stable” release every 2-3 years. That creates the impression that Debian packages must always be up to 3 years old. And who wants to work with a three year old piece of software? Are the package maintainers lazy? Should I download my software from its own project website instead? + +I feel obliged to briefly discuss this topic because it is a common source of trouble and surprises. And it may make you say… + +_“What’s the deal? Shouldn’t we just use Debian packages where we find it comfortable and install any other software in a newer version? Just look at the shiny new Roundcube version. Oh, and rspamd has some new features to filter out spam mails. Why don’t we use that? Even their developers urge me to take their updated packages.”_ + +So… why are the packages in the “stable” version of Debian so old? Actually that question is pretty funny when you think about it. “stable” means “stay on the same versions if possible”. You might say that it means “old by design”. The idea is that your system will not surprise you with an unexpected update that breaks a service for many users on a monday morning. + +## Are stable packages more robust? + +No. “stable” relates to the version. I does not necessarily mean more “robust”. The Debian developers do not pick a certain version that they think is especially good or bug-free. The version that made it into a new stable release of Debian was just there when it was about time to create a new release. + +“_And what about security issues? Software developer usually fix issues in a newer version. How does Debian deal with that?_“ + +That is true. Developers hardly ever fix issues in old software. That’s just not fun. Developers like to go forward. While they implement new features they also fix issues on their way. I totally understand that motivation. But that way they force users to accept their changes and new features even if the users just want to fix the security issues. And new versions come with new bugs. + +Debian however always tries to _backport_ bug fixes. A Debian package maintainer will try to apply the fix to the stable version in Debian. So you get the benefit of staying on a certain version but at the same time get security updates. That makes it the best possible way to deal with security issues for server administrators. They can rely on their systems without having to fear breaking changes. Only when a new stable version arrives they are forced to consider upgrading. + +See also the [Debian FAQ on security](https://www.debian.org/security/faq.en.html#oldversion). + +## Give me newer software + +Aside from _stable_ packages there are also _unstable_ packages. Let’s take a look at [packages.debian.org/vlc](https://packages.debian.org/vlc) to see which package versions of the famous VLC software are available. This is just a screenshot so you will get different versions: + +![Screenshot of packages.debian.org](images/debian-packages-too-old-pdo.png) + +As you can see there are the different releases like “jessie” (very old), “stretch” (old), “buster” (the stable version when this was written), “bullseye” (the upcoming stable release) and “sid”. By default your system will install the current stable version. If you are on Debian “buster” then it will be 3.0.12-0. + +If you wanted newer software you could just replace “buster” by “sid” in your /etc/apt/sources.list and upgrade your system. Done. That way every “apt upgrade” will give you the newest packages that Debian has to offer. And in many cases that is very close to the newest version of the actual (upstream) software. Just be aware that sid/unstable is a moving target. It is impossible to coordinate all updated packages. So it may occur that a new package cannot be properly installed, does not work or even breaks something else on your system. I know people who have sid/unstable on their laptops. But those are the kind of people who know a lot about Debian and do not despair when something breaks. + +As a middle ground you might use the “testing” variant. Only packages without any serious bugs will be copied to “testing” so you rule out the worst problems. Still this is not failsafe. There are also _backported_ packages that try to make newer software work on an otherwise “stable” system. But this may give you security issues that are not fixed as quickly as needed. Every choice comes with its own compromises. + +So as you see Debian’s packages are not old at all. Just when you do a fresh installation you are usually on a “stable” installation. And that’s for a reason. On a server nobody cares if a piece of software is 2 years old. The focus there is on reliability. And “stable” gives you that. + +## What about third-party APT repositories? + +“_A lot of software is available directly by its developers through their own APT repositories. Can’t I just use them?_“ + +Of course. I also pick specific pieces of software from their third-party APT repositories. But those are very rare exceptions and I keep track of what software I get from there. Common problems are: + +- unexpected updates that break your system +- broken packages because building proper Debian packages is not trivial +- uninstallable packages the first weeks after a new Debian release because the software was not properly tested with it +- conflicts with other packages in your system because a package did not properly specify that +- missing integration with other software (e.g. Apache configuration, logrotate or systemd) +- no security support like in Debian. To stay safe you are required to run every update. That in turn means adopting any breaking changes. +- files of third-party software should go to /opt but quite often they are scattered in the wrong places +- expired APT keys because the developers didn’t care about expiry dates + +However not all is bad. Some third-party packages are very good. Your mileage may vary though. diff --git a/src/content/docs/articles/images/debian-packages-too-old-pdo.png b/src/content/docs/articles/images/debian-packages-too-old-pdo.png new file mode 100644 index 0000000000000000000000000000000000000000..3c736a8000e769002bf09247579a8fd0ee263fcc GIT binary patch literal 92542 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%0D=Pk#p?bK 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 qX}mY^;~N>d|3I0)rB{l6w2f*A^!(OJjRFs literal 0 HcmV?d00001 diff --git a/src/content/docs/articles/images/lvm-diagram.png b/src/content/docs/articles/images/lvm-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..129011466be49cefca086a0a66da87b0bb7a7ba2 GIT binary patch literal 40401 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 l$currentdatefile +``` +to redirect the _output_ of the command (STDOUT) to the file named ‘currentdatefile’. + +## Input (STDIN) + +This also works as _input_. The command +``` +grep something +``` +will search for the word ‘something’ in what you type on your keyboard. But if you want to look for ‘something’ in a file called ‘somefile’ you could run +``` +grep something newfile +``` +Of course you would use `cp` for that purpose in real life. + +## Errors (STDERR) + +So far this covers STDIN (`<`) and STDOUT (`>`) but you also redirect the STDERR channel by using (`2>`). An example would be +``` +grep something resultfile 2>errorfile +``` +## 2>&1 magic + +Many admins stumble when it comes to redirecting one channel to another. Say you want to redirect both STDOUT and STDERR to the same file. Then you cannot do +``` +grep something >resultfile 2>resultfile +``` +It will only redirect the STDOUT (`>`) there and keep the ‘resultfile’ open so “`2>`” fails to write to it. Instead you need to do +``` +grep something >resultfile 2>&1 +``` +This redirects STDOUT (1) to the ‘resultfile’ and tells STDERR (2) to send the output to what STDOUT is set to (also ‘resultfile’). + +What does _not_ work is this order: +``` +grep something 2>&1 >resultfile +``` +It may look right to us humans but in fact does not redirect STDERR to the ‘resultfile’. The explanation: the shell interprets this line from left to right. So first the “2>&1” is evaluated which means “send STDERR to the same that STDOUT is _currently_ set to”. As STDOUT is usually just printed to the shell it will send STDERR also to the shell. Next the shell finds “>resultfile” which sends STDOUT to the ‘resultfile’ but does _not_ touch the previous destination of STDERR. So STDERR output will still end up in the shell. + +# Interesting commands + +- grep + Filters out lines with certain search words. “grep -v” searches for all lines that do _not_ contain the search word. +- sort + Sort the output alphabetically (needs to wait until EOF before doing its work). “sort -n” sorts numerically. “sort -u” filters out duplicate lines.usel +- wc + Word count. Counts the bytes, words and lines. “wc -l” just outputs how many lines were counted. +- [awk](http://linux.die.net/man/1/awk) + A sophisticated language (similar to Perl) that can be used to do something with every line. `awk ‘{print $3}'` outputs the third column of every line. +- [sed](http://linux.die.net/man/1/sed) (stream editor) + A search/replace tool to change something in every line. +- less + Useful at the end of a pipe. Allows you to browse through the output one page at a time. (“less” refers to a similar but less capable tool called “more” that allowed you to see the first page and then press ‘Space’ to view ‘more’.) +- head + Shows the first ten lines only. “head -50” shows the first 50 lines. +- tail + Shows the last ten lines only. “tail -50” shows the last 50 lines. “tail -f” follows a certain file. + diff --git a/src/content/docs/articles/renaming-multiple-files.mdx b/src/content/docs/articles/renaming-multiple-files.mdx new file mode 100644 index 0000000..85a73a8 --- /dev/null +++ b/src/content/docs/articles/renaming-multiple-files.mdx @@ -0,0 +1,24 @@ +--- +title: Renaming multiple files +slug: linux/renaming-multiple-files/ +--- + +If you need to rename a larger number of files following a certain pattern then you will long for an automated solution. The ‘rename’ command helps you here that is (at least on my Debian installation) part of the [Perl](http://www.perl.org/) installation. All you need to know is the basics of [regular expressions](http://www.regular-expressions.info/) to define how the renaming should happen. + +Say you want to add a ‘.old’ to every file in your current directory. At the end of each expression ($) a ‘.old’ will be set: +``` +rename 's/$/.old' * +``` +Or you want to make the filenames lowercase: +``` +rename 'tr/A-Z/a-z/' * +``` +Or you want to remove all double characters: +``` +rename 'tr/a-zA-Z//s' * +``` +Or you have many JPEG files that look like “img0000154.jpg” but you want the first five zeros removed as you don’t need them: +``` +rename 's/img00000/img/' *.jpg +``` +In fact you can use any Perl operator as an argument. The actual documentation for the ‘s’ and ‘y’/’tr’ operators are found in the ‘perlop’ manpage. \ No newline at end of file diff --git a/src/content/docs/articles/squid-acls.mdx b/src/content/docs/articles/squid-acls.mdx new file mode 100644 index 0000000..ab67a52 --- /dev/null +++ b/src/content/docs/articles/squid-acls.mdx @@ -0,0 +1,151 @@ +--- +title: How Squid ACLs work +slug: squid-acls +--- + +For less experienced Squid administrators the concept of ACLs can be confusing at first. But they offer a great way of controlling who is allowed to access which web pages when. + +## ACLs + +First you need to define certain criteria like _accesses from the marketing department_ or _accesses to google.com_ or _need to authenticate_. There are certain types of ACLs for that purpose. The complete list of ACLs can be found at [http://www.visolve.com/squid/squid24s1/access\_controls.php](http://www.visolve.com/squid/squid24s1/access_controls.php) + +The syntax of an acl is: + +``` +acl name type definition1 definition2 definition3 ... + +``` +Examples: + +``` +acl accesses_to_google dstdomain .google.com +acl accesses_to_search_engines dstdomain .yahoo.com .google.com .vivisimo.com +acl accesses_from_marketing_department src 10.52.0.0/16 +acl need_to_authenticate proxy_auth +``` + +You can also use lists of definitions that are stored in files on your hard disk. Let’s assume you have a list of search engines URLs that you want to allow: + +``` +/etc/squid/search-engines-urls.txt: +.google.com +.yahoo.com +.altavista.com +.vivisimo.com +``` + +Then the ACL for that file would look like: + +``` +acl accessess_to_search_engines dstdomain "/etc/squid/search-engines-urls.txt" +``` + +The quotes are important here to tell Squid it needs to look up definitions in that file. + +## Using the ACLs: http\_access + +Defining the ACLs alone does not actually block anything – it’s just a definition. ACLs can be used in various places of your squid.conf. The most useful feature is the http\_access statement. It works similar to the way a firewall would handle rules. For each request that Squid receives it will look through all the http\_access statements in order until it finds a line that matches. It then either _accept_s or _deny_s depending on your setting. The remaining rules are ignored. + +The general syntax of an http\_access line is: + +``` +http_access (allow|deny) acl1 acl2 acl3 ... +``` + +Example: + +``` +http_access allow accesses_from_admins +http_access deny accesses_to_porn_urls +http_access allow accesses_during_lunchtime +http_access deny all +``` + +This would allow accessing from the admins (whatever that ACL looks like – probably a **src** ACL pointing to the subnet where the admin workstations are in). For everyone else it will deny accesses to porn URLs. Then it would allow accesses from everyone to every web site during lunch time. And finally all other accesses would be denied. + +## Combining ACLs (AND/OR) + +Often you need to combine ACLs. Let’s say you want to allow access to google.com only for the back office. This combines two ACLS with an **AND**. This would look like this: + +``` +http_access allow accesses_to_google.com accesses_from_back_office +``` + +If you wanted to use an **OR** and say either accesses from the back office or accesses to google.com are allowed then the line would look like this: + +``` +http_access allow accesses_to_google.com +http_access allow accesses_from_back_office +``` + +To summarize: **AND** means putting the conditions in one line. **OR** means using seperate lines. + +## Custom error pages (deny\_info) + +By default when you deny access the user gets the error page that is stored in the _ERR\_ACCESS\_DENIED_ file. But luckily you can define your own custom error pages and display them when you deny certain accesses. A simple example: + +``` +acl google dstdomain google.com +deny_info error-google google +http_access deny google +``` + +Put an error page into the directory where the HTML files are stored (look for _error\_directory_ in your squid.conf) and name it _error-google_. If the user tries to access `www.google.com` the access is denied and your error page is shown. + +Careful when you combine ACLs on a _http\_access_ line. Example: + +``` +acl google dstdomain google.com +acl admin src 10.0.5.16 +deny_info google error-google +http_access deny admin google +``` + +This will deny access only for the user from the IP address 10.0.5.16 when `www.google.com` is accessed. As you can see I have combined the ACLs _admin_ and _google_. In such a combination the _last_ ACL in the line is taken into account for lookups of _deny\_info_. So it’s important that you define a _deny\_info_ for the _google_ ACL. + +## Re-Authentication control + +Usually when a user is authenticated at the proxy you cannot “log out” and re-authenticate. The user has to close and re-open the browser windows to be able to re-login at the proxy. A simple configuration will probably look like this: + +``` +acl my_auth proxy_auth REQUIRED +http_access allow my_auth +http_access deny all +``` + +Now there is a tricky change that was introduced in Squid 2.5.10. It allows to control when the user is prompted to authenticate. Now it’s possible to force the user to re-authenticate although the username and password are still correct. Example configuration: + +``` +acl my_auth proxy_auth REQUIRED +acl google dstdomain .google.com +http_access allow my_auth +http_access deny google my_auth +http_access deny all +``` + +In this case if the user requests `www.google.com` then the second _http\_access_ line matches and triggers re-authentication. Remember: it’s always the last ACL on a _http\_access_ line that “matches”. If the matching ACL has to do with authentication a re-authentication is triggered. If you didn’t want that you would need to switch the order of ACLs so that you get http\_access deny my\_auth google. + +You might also run into an **authentication loop** if you are not careful. Assume that you use LDAP group lookups and want to deny access based on an LDAP group (e.g. only members of a certain LDAP group are allowed to reach certain web sites). In this case you may trigger re-authentication although you don’t intend to. This config is likely wrong for you: + +``` +acl ldap-auth proxy_auth REQUIRED +acl ldapgroup-allowed external LDAP_group PROXY_ALLOWED + +http_access deny !ldap-auth +http_access deny !ldapgroup-allowed +http_access allow all +``` + +The second _http\_access_ line would force the user to re-authenticate time and again if he/she is not member of the PROXY\_ALLOWED group. This is perhaps not what you want. You rather wanted to deny access to non-members. So you need to rewrite this _http\_access_ line so that an ACL matches that has nothing to do with authentication. This is the correct example: + +``` +acl ldap-auth proxy_auth REQUIRED +acl ldapgroup-allowed external LDAP_group PROXY_ALLOWED +acl dummy src 0.0.0.0/0.0.0.0 + +http_access deny !ldap-auth +http_access deny !ldapgroup-allowed dummy +http_access allow all +``` + +This way the second _http\_access_ line still matches. But it’s the _dummy_ ACL which is now last in the line. Since _dummy_ is a static ACL (that always matches) and has nothing to do with authentication you will find that the access is just denied. \ No newline at end of file diff --git a/src/content/docs/articles/understanding-lvm.mdx b/src/content/docs/articles/understanding-lvm.mdx new file mode 100644 index 0000000..1d33f02 --- /dev/null +++ b/src/content/docs/articles/understanding-lvm.mdx @@ -0,0 +1,189 @@ +--- +title: Understanding the Logical Volume Manager (LVM) +slug: understanding-lvm/ +--- + +## What is LVM and what does it offer? + +LVM is a neat feature that some system administrators still shy away from. But it’s really not that hard to learn. And these are some awesome features you get: + +- Create a larger (virtual) disk from smaller disk (similar to RAID-0) +- Extend partitions without any downtime +- Add space by adding disks without any downtime +- Remove unused partitions and get back the space without fragmentation +- Take snapshots of partitions. You can try out things and just roll back. Or you can create consistent database backups without keeping the database down for long. +- Replace disks without losing data. + +LVM is just a thin layer of software between the disks on your system and the partitions. On a Debian system you just “apt install lvm2” and you are ready to go. + +## The essential concepts + +Three terms are commonly used: + +- PV (physical volume). A disk. (Or a partition.) Simple as that. An SSD. A hard drive. An SD card. +- VG (volume group). A group of disks. Take three 2 TiB disks and you get a 6 TiB volume group. (Think of it as a RAID-0 or a JBOD – _just a bunch of disks_.) +- LV (logical volume). A fraction of such a group. Just take 200 GiB of the volume group and put a file system on it. + +A diagram is worth a thousand words so let’s use an illustration: + +![Diagram explaining components of the LVM](images/lvm-diagram.png) + +### PVs – the physical volumes + +On the left you see your three hard disks. Your computer has found them and made them accessible as /dev/sda, /dev/sdb and /dev/sdc. Usually you would create partitions on them (e.g. using _cfdisk_), put a file system on the partitions (_mkfs_) and mount them into your file system (_mount /dev/sda1 /home_). + +But this time we create a volume group from it. So first we turn the disks into PVs so that LVM recognizes them: + +``` +pvcreate /dev/sda +pvcreate /dev/sdb +pvcreate /dev/sdc +``` + +All this does is write a little meta-data onto each disk. + +You can use the “pvs” command command to list the PVs you have just created. + +When you take a close look at a PV for example (“pvdisplay” command) you will notice terms like “PE size” or “Free PE” or “Allocated PE”. PE is short for _physical extent_. Such an extent is the smallest data size that LVM handles. By default it’s set to 4 MiB. That means you can grow or shrink a logical volume only by a factor of 4 MiB. Using “lvextend” you can specify the number of extents using “-l …” (lowercase L) instead of the size “-L …” (uppercase L). Further down on this page you will find a tip on replacing a small harddisk by a larger harddisk. That essentially moves the _extents_ from one disk to another. + +### VG – the volume group + +Next we create a new volume group (VG) from these three disks: + +``` +vgcreate vg1 /dev/sda /dev/sdb /dev/sdc +``` + +Now you have VG called “vg1” consisting of the three disks. The “vgs” command shows you an overview: + +``` +VG #PV #LV #SN Attr VSize VFree +vg1 3 0 0 wz--n- <6t <6t +``` + +So you see that there is one VG called “vg1” which consists of 3 PVs (disks). And so far no LVs are using it. We will get to that in a moment. Its size is roughly 6 TiB and all of that is free to use. + +Using the “vgdisplay” command shows you even more information about it. + +### LVs – the logical volumes + +The final step is to bite chunks out of the VG. Check out the diagram above. We want a partition for “/home” with a size of 100 GiB. So the command to create your LV is: + +``` +lvcreate -n lvhome -L 100G vg1 +``` + +Pretty simple. The “-n” parameter sets the name of the new PV. “-L” is the size you want to use. And “vg1” is the name of the VG you want to cut a piece out of. + +The “lvs” command will show you an overview of your LVs. + +``` +LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert +lvhome vg1 -wi-ao---- 100,00g +``` + +There is also an “lvdisplay” command showing more verbose information about the LV. + +## Put a file system on the LV + +Finally we have something to put a file system on. You have probably used partitions on devices like /dev/sda1 before. But now you are using LVM. And the device for your “lvhome” is “/dev/vg1/lvhome”. Right, it’s “dev” + VG + LV. You could also use “/dev/mapper/vg1-lvhome”. + +Put an EXT4 file system onto it: + +``` +mkfs.ext4 /dev/vg1/lvhome +``` + +And mount that file system: + +``` +mount /dev/vg1/lvhome /home +``` + +## To sum it up + +There are PVs (disks), VGs (groups of disk) and LVs (fractions of a VG). + +To use LVM first turn disks into PVs (pvcreate), then join them to a VG (vgcreate), then take a fraction of that (lvcreate) and finally create a file system on that (/dev/vgfoo/lvbar). + +Every part has a _list_ and a _display_ command. These are: + +- PV -> pvs, pvdisplay +- VG -> vgs, vgdisplay +- LV -> lvs, lvdisplay + +## Cool everyday tricks with LVM + +You may not be impressed yet. LVM just made your life more complicated. Of course there is a reason for it because now begins the fun part. These are some common features: + +### Extend a partition without any downtime + +Oh, no. Your /home partition is 99% full? With LVM this is easy to solve. If you have free space on your VG (check with “vgs”) you can just extend the disk. No need to unmount anything. No downtime. Let’s give the partition 20 GiB more space: + +``` +lvextend -L +20G -r /dev/vg1/lvhome +``` + +The “-r” parameter not only extends the LV but also the file system that lives on top. That allows you to enlarge a partition without taking it offline. This is the neatest feature that LVM delivers in my opinion. + +If your _volume group_ is also out of space then you could add another disk (_physical volume)_ and use “pvcreate” and “vgextend” to enlarge it. + +### Replace a disk by a larger disk + +No problem either. Let’s assume that one of your disks (_physical volumes_) on /dev/sda was 2 TB and you just bought a shiny new 10 TB disk (found on /dev/sdg). Now you want to move the data over to the new disk. As usual you need to turn /dev/sdg into a PV: + +``` +pvcreate /dev/sdg +``` + +And now you can just move all blocks (aka _physical extents_ – see below) to the new disk: + +``` +pvmove /dev/sda /dev/sdg +``` + +And finally you can remove the PV from your VG: + +``` +vgreduce vg1 /dev/sda +``` + +By the way: once a disk is a PV it doesn’t matter whether your system finds it on /dev/sdb, /dev/sdc or any other device. As long as all the necessary PVs are found somewhere the VG will work. Just if your boot sector was written on /dev/sda you may need to re-install it if you change that disk. + +### Creating snapshots for backups and profit + +A snapshot is like taking a photo with your camera. You get an image of a situation at a certain point in time. Reality will continue to alter the world but your photo will always show that specific moment. You can still take a pen and draw something on the photo so it’s not read-only. (It used to be on LVM 1.x.) I commonly use this technique to get consistent database snapshots of large MySQL/MariaDB databases. + +Let’s just say that you have a huge 1 TiB-sized LV called “lvmysql” that is mounted to /var/lib/mysql. Running a backup of those files takes an hour. And while you back up one file after another the SQL database is accessing the various files making arbitrary changes. Your backup would contain unusable garbage. Some files were from minute 5 while others might be from minute 30. Such a backup is unusable. + +Now let’s instead use snapshots. Briefly stop the database and take a snapshot: + +``` +lvcreate -n mysnap -L 20G -s /dev/vg1/lvmysql +``` + +Note that we use “lvcreate” to take the /dev/vg1/lvmysql LV and create a new /dev/vg1/mysnap LV. Just that the latter is a snapshot. + +You can start your database again. With a bit of luck this has just taken a few seconds. And now you have a perfectly consistent copy of the MySQL data directory. You can mount this snapshot anywhere in your file system: + +``` +mount /dev/vg1/mysnap /mnt/mysnap +``` + +Now you can take your time and just make a backup of /mnt/mysnap. It won’t change. + +However the magic comes at a price. Have you noticed the “-L 20 G” parameter? That does not mean that the snapshot has a size of 20 GiB. After all we started with a 1 TiB LV. So why did we specify a size at all? + +The answer lies in the way that snapshots work. Once you started MySQL again the data directory was changed. LVM needs to provide you with your snapshot but at the same time allow MySQL to continue doing its work. That works by a mechanism called _copy-on-write_. If the original LV would not change then it would be identical to the snapshot. If however the files on the LV are changed then LVM needs to keep a copy of the snapshotted state. The more changes you do the more space for those copies you will need. And that’s what is meant by “-L 20 G”. It gives your snapshot a 20 GiB storage area to track the changes. + +The size depends on how much change you expect while you want to use the snapshot. If the backup takes an hour and the database typically changes 100 GiB during that period then you should give the snapshot at least that space. The “lvs” command shows you much much of that space has been used already. So you should keep the snapshot no longer than needed for a backup. Should you hit the 100% mark then your snapshot becomes unusable and all you can do it remove it. That won’t affect the original LV fortunately. So you won’t break your database. + +Another use case of snapshots would be to try out things on the snapshot. And if you like what you did then merge the changes to the original LV. That can be done using “lvconvert –merge /dev/vg1/mysnap”. But I suggest you consult the man page of “lvconvert” before you do that. + +### Booting from an LV + +Using LV for all partitions used to be a problem in the past. Debian created an ext2 partition for /boot to make sure the system boots. This has become obsolete for quite a while. You can use LVs everywhere and Debian will happily boot the system. + +### RAID + +By default LVM uses RAID-0. That is the [RAID](https://de.wikipedia.org/wiki/RAID) level that makes you lose everything if a single disk fails. LVM support RAID levels 1 and 5 though. Besides the LVM man pages I mainly found [this web page](https://blog.programster.org/create-raid-with-lvm) describing it. diff --git a/src/content/docs/articles/updating-lenovo-bios.mdx b/src/content/docs/articles/updating-lenovo-bios.mdx new file mode 100644 index 0000000..780dfa7 --- /dev/null +++ b/src/content/docs/articles/updating-lenovo-bios.mdx @@ -0,0 +1,26 @@ +--- +title: Updating the BIOS on Lenovo laptops from Linux using a USB flash stick +slug: article/updating-the-bios-on-lenovo-laptops-from-linux-using-a-usb-flash-stick/ +--- + +Aren’t hardware manufacturers funny? They either require an old-fashioned operating system (Windows) or museum hardware (floppy drives) to update a BIOS. Apparently they never learn and are instead busy adding features like DRM and UEFI to make our lives even more miserable. + +However updating the BIOS on my Lenovo X230 laptop was surprisingly easy once I learned how to do that (kudos to a G+ post I stumbled upon). + +1. Go to [support.lenovo.com](http://support.lenovo.com/) (or better use a search engine becaues the Lenovo website is beautiful but technically pretty broken and slow) and search for the BIOS upgrade of your laptop model. +2. Download the most recent ISO file. Look for “BIOS bootable update CD”. +3. Convert the ISO image using the geteltorito utility (if you don’t have it: apt-get install genisoimage). + Example: + `geteltorito -o bios.img g2uj18us.iso` +4. Insert any USB stick into your laptop that you have lying around. The image file is just 50 MB in size so even USB sticks with low capacity will work. Keep in mind that the stick will be completely overwritten. +5. If you are in a graphical environment then unmount the USB stick again. +6. Find out the device name of the stick. Enter a terminal window and enter “dmesg | tail”. You are looking for something like:\[ 2101.614860\] sd 6:0:0:0: \[sdb\] Attached SCSI disk + The “sdb” tells you that your USB stick is available on /dev/sdb. Don’t just assume it’s sdb. If it’s on another device on your laptop then you will destroy your data. +7. Copy the image to the USB stick: + `dd if=bios.img of=/dev/sdb bs=1M` +8. Reboot your laptop. +9. After the Lenovo logo appears press ENTER. +10. Press F12 to make your laptop boot from something else than your harddisk. +11. Select the USB stick. +12. Make sure your laptop has its power supply plugged in. (It will refuse to update otherwise.) +13. Follow the instructions. diff --git a/src/content/docs/ispmail-bookworm/230-monitoring-and-backup.mdx b/src/content/docs/ispmail-bookworm/230-monitoring-and-backup.mdx new file mode 100644 index 0000000..f85659a --- /dev/null +++ b/src/content/docs/ispmail-bookworm/230-monitoring-and-backup.mdx @@ -0,0 +1,60 @@ +--- +title: Monitoring and Backup +slug: ispmail-bookworm/monitoring-and-backup/ +sidebar: + order: 230 +--- + +You have come a long way. Glad you made it. So many weird things complicated the journey that evolved from the very beginning of using email roughly 35 years ago. But before you take your much deserved break from these adventures let’s take care of some final tasks. + +## Monitoring + +For me there is nothing more awkward than having your users tell me that my systems are not working properly. As a good sysadmin I should notice outages in advance. The most frequent cause for mail server issues is a disk that is running full. Users are pretty bad with cleaning their mess up. For them the space of their mailbox is infinite. So one way is to use quotas where possible. But at least you should get notified of error conditions on your mail server. + +I will not dive into monitoring deeply here. Setting up proper monitoring will easily fill a guide similar to the size of the one you are currently reading. But you should either have your own monitoring system set up or at least use an internet service to check if emails are getting through. + +Things I suggest you check frequently: + +- Is there enough space on disk? Especially /var/vmail? +- Are the SMTP, Submission, POP and IMAP ports responding from other servers? +- Is your mail server’s IP address blacklisted? There [are](http://rbl-check.org/) [several](https://www.debouncer.com/blacklistlookup) [services](https://mxtoolbox.com/blacklists.aspx) [you](https://www.dnsbl.info/) [can](https://dnschecker.org/ip-blacklist-checker.php) use. +- Are any emails coming through? (I just do a simple count like “`grep -c relay= /var/log/mail.log`“) +- Number of emails in the mail queue? (mailq) +- Are your backups restoreable? A propos backups… + +## Backup + +No matter if you are running your family mail server or are in charge for an organisation – nobody likes to lose email. There are many different backup tools for different purposes. Just to name my open-source favorites that ship with Debian: + +- [rsnapshot](https://rsnapshot.org/). A simple solution if you want to send backups to other servers using SSH/SCP. You can also keep backups for different points in time on your local server. But if your disk crashes then all would be lost. Also rsnapshot can become slow with many emails because every file is copied as a link. But you can access the files directly without any restore procedure. It’s basically a frontend for _rsync_ which is very reliable. +- [borg](https://borgbackup.readthedocs.io/en/stable/). This tools needs to be installed both on the client and the server. Setting up an archive (where backups live) on the server feels a bit weird. But you are rewarded by compression, encryption and deduplication. Also data is stored in chunks which takes less I/O than rsnapshot. It is very efficient. +- [restic](https://restic.net/). Similar to Borg in a way. It also offers deduplication, compression and encryption. It’s main advantage is to be able to store backups in S3 buckets. Consider cheap storage providers like [Wasabi](https://wasabi.com/cloud-storage-pricing/) or [Backblaze](https://www.backblaze.com/). However purging old data through S3 is a very resource-intensive job. And Restic generally eats a lot of RAM and disk cache. +- [Bareos](https://www.bareos.org/). Formerly known as Bacula until its author started to have crazy ideas and these guys forked it. This is a full-fledged system to handle many servers in parallel and store things on different media – for example LTO magnetic tapes in a big tape library. +- Snapshots. If your mail server is running on a virtual server then check if your ISP is offering snapshot backups. My favorite ISP charges 20% extra costs for the service but it is totally worth it. If you break your server for any reason you can just restore it to the old glory without fiddling with configuration files. It does not replace a file-based backup though. So if a user accidentally deletes an email and wants to get it back then this kind of backup will not be right. + +If you cannot backup your entire disk then at least include these directories: + +- /etc (configuration) +- /var/vmail (the actual emails) +- /var/log (in case the system breaks you may be able to figure out what happened last) +- /var/backups (for general backups) +- /var/lib/rspamd/dkim/ (private part of the DKIM keys) + +Also make sure to exclude: + +- /var/lib/mysql + +Instead run… +``` +mysqldump mailserver > /var/backups/mailserver.sql +``` +…daily to get a proper database backup that can be restored later. + +I also like to backup the output of these files because they help me figure out the specific layout of a server: +``` +fdisk -l +lshw +lsb_release -a +dpkg --get-selections +``` +If one of your users just accidentally deleted an email and wants it back then simply get the files from /var/vmail/domain/user/Maildir/… from the backup and put them into the original location. Dovecot will handle everything else. You don’t need to restart anything. \ No newline at end of file diff --git a/src/content/docs/ispmail-bookworm/240-ansible.mdx b/src/content/docs/ispmail-bookworm/240-ansible.mdx new file mode 100644 index 0000000..ad6b621 --- /dev/null +++ b/src/content/docs/ispmail-bookworm/240-ansible.mdx @@ -0,0 +1,19 @@ +--- +title: Automatic installation with Ansible +slug: ispmail-bookworm/automatic-installation-with-ansible/ +sidebar: + order: 240 +--- + +If you want to set up multiple mail servers then automation is your friend. Nowadays [Ansible](https://docs.ansible.com/) is commonly used for that purpose. If you are dealing with system administration you should have such a tool in your toolbox. + +I have created an [Ansible playbook on Github](https://github.com/Signum/ispmail-bookworm-ansible) that you can download and use. Using it is pretty simple: + +``` +apt install ansible git +git clone https://github.com/Signum/ispmail-bookworm-ansible.git +cd ispmail-bookworm-ansible/ansible +ansible-playbook ispmail.yml -c local +``` + +Please follow the hints in the README.md within the repository. \ No newline at end of file diff --git a/src/content/docs/ispmail-bookworm/250-success-stories.mdx b/src/content/docs/ispmail-bookworm/250-success-stories.mdx new file mode 100644 index 0000000..6d09237 --- /dev/null +++ b/src/content/docs/ispmail-bookworm/250-success-stories.mdx @@ -0,0 +1,8 @@ +--- +title: Success stories +slug: ispmail-bookworm/success-stories/ +sidebar: + order: 250 +--- + +I would appreciate if you leave a comment here telling others if your mail server is running. Perhaps even a word about the purpose of the mail server and the number of users you have. That allows others to see that their time is well-spent and indeed leads to a working mail server. Thanks for your feedback. diff --git a/src/content/docs/ispmail-bookworm/260-faq.mdx b/src/content/docs/ispmail-bookworm/260-faq.mdx new file mode 100644 index 0000000..a3a2691 --- /dev/null +++ b/src/content/docs/ispmail-bookworm/260-faq.mdx @@ -0,0 +1,44 @@ +--- +title: FAQ (frequently asked questions) +slug: ispmail-bookworm/faq-frequently-asked-questions/ +sidebar: + order: 260 +--- + +## Can I use this guide for my own work? + +Previously I claimed a copyright on the documentation. However let’s make things simpler. This Bullseye guide is using the [Creative Commons BY-NC-SA license](https://creativecommons.org/licenses/by-nc-sa/4.0/). Which means: + +- BY = Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. +- NC = NonCommercial — You may not use the material for commercial purposes. Do what you want with your mail server. But let’s keep the knowledge free. +- SA = ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. + +Besides that this guide has been a team effort. Many readers have contributed to it. I may spend the time to turn it into a guide but a lot of good ideas were not mine alone. + +## Can I advertise in your guide? + +No. + +## Why don’t you use Nginx/PostgreSQL? + +I personally prefer that software, too. Just go for it. But for the sake of consistency let’s keep Apache and MySQL as default choices in this guide so that readers upgrading from previous versions don’t have to switch. + +## Do you offer paid support? + +Generally, yes, I am a sysadmin freelancer. If you are just stuck at some point you may want to ask in the [chat](https://riot.im/app/#/room/#ispmail:matrix.org) first though. + +## How do I filter out malware? + +I understand the need for it. If your users are using low-security operating systems (e.g. those that run EXE files) they are threatened by a lot of security problems. From the perspective of an email provider I would not want to take responsibility for filtering emails. That is only working on symptoms and not addressing the actual issues. Security is a fundamental concept and not something you slap on top of something inherently broken. I would not want to be blamed for a crypto trojan infection because the user relied on me saving them from bad things to happen. Client security in non-free systems is a topic on its own. + +## Debian packages are too old and insecure + +If you use a Debian stable release you have chosen to stay on a specific software version. “Stable” means “a version that will not change”. That’s the best choice for a server. Those software packages are by no means less secure though because they also get security updates. Debian also has up-to-date packages but you surely don’t want to use them for a mail server unless you feel adventurous or have an intense hatred for your users. For a detailed discussion see [this separate article](https://workaround.org/debian-packages-are-so-old/). + +## Can I download the guide as one file? + +I haven’t yet found a way to accomplish that. WordPress is not especially good when it comes to structured multi-page documentation. If anyone has a hint I’d be grateful. + +## Why don’t you put the guide on Github as Markdown? + +This website runs on WordPress because I wanted something easy to edit and also have discussions on each page. I might be a hardcore terminal user but just sometimes I prefer to have a WYSIWYG editor. I tried several ways to work with multi-file Markdown builders but the workflow was uncomfortable and lead to ugly documentation. Besides we wouldn’t have discussions on the pages and I’m surely not including Quora for discussions. \ No newline at end of file