Filesystem hints

How to determine use of inodes

df -i

There are situations, when disk is full, so I can’t create any file or folder, bud there is free space. Reason is, that there are no inodes available.

dstat utility

Very nice utility to view hdd load, cpu load, network load and other nice stuff.

Postfix hints

I need to have reverse DNS entry for working email services!

For better compatibility with MS Outlook and working SSL on port 465

Edit master.cf and set „-o smtpd_tls_wrappermode=yes“

Determine number of emails waiting in the queue

find /var/spool/postfix/deferred -type f | wc -l

Delete outgoing emails from the queue

mailq | awk '$7 ~ /@upcmail.nl$/ { print $1 }' | tr -d '*!' | postsuper -d -

Delete by recipient

mailq | tail -n +2 | grep -v '^ *(' | awk  'BEGIN { RS = ""} $8 ~ /@aol.com$/ { print $1 }' | tr -d '*!' | postsuper -d -

Disable SSLv2

smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
smtpd_tls_protocols = SSLv3, TLSv1, !SSLv2
smtpd_tls_cipherlist = ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP:-eNULL

Then do postfix reload.

/etc/init.d/postfix reload

Check if it is really disabled

openssl s_client -connect xxxxxxxxxxxxx.com:25 -starttls smtp -ssl2

I must get

CONNECTED(00000003)
write:errno=104

DKIM configuration

Debian 6 – squeeze

It’s necessary to have package dkim-filter.

Key creation

mkdir /etc/mail
cd /etc/mail
dkim-genkey -d mydomain.com

Edit or create /etc/dkim-filter.conf

Domain                  mydomain.com (if I need more domain - separate it by a comma and use KeyList instead of KeyFile)
KeyFile                 /etc/mail/default.private
Selector                default

KeyList example

*@abc.com:abc.com:/etc/mail/abccom/mail
*@xy.com:xy.com:/etc/mail/xycom/default

Edit /etc/default/dkim-filter

SOCKET="inet:8891@localhost"

Edit /etc/postfix/main.cf

# DKIM signature of SMTP server
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

It’s almost finished. Now add TXT DNS record:

myselector._domainkey 1800 TXT v=DKIM1; p=mykey

Debian 7 – Wheeze

Download and install opendkim with tools.

apt-get install opendkim opendkim-tools

Add configuration to /etc/opendkim.conf.

AutoRestart             Yes
AutoRestartRate         10/1h
Syslog                  yes
SyslogSuccess           Yes
LogWhy                  Yes
Canonicalization        relaxed/simple
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
SigningTable            refile:/etc/opendkim/SigningTable
Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SignatureAlgorithm      rsa-sha256
UserID                  opendkim:opendkim
Socket                  local:/var/spool/postfix/opendkim/opendkim.sock

Edit /etc/postfix/main.cf.

milter_protocol = 2
milter_default_action = accept

#If there is existing spamassasin in avamis conf, just add at the end of the line opendkim.

smtpd_milters = unix:/spamass/spamass.sock, unix:/opendkim/opendkim.sock
non_smtpd_milters = unix:/spamass/spamass.sock, unix:/opendkim/opendkim.sock

#If there is only opendkim filter, add these lines.

smtpd_milters = unix:/opendkim/opendkim.sock
non_smtpd_milters = unix:/opendkim/opendkim.sock

Now it’s time to make dir for opendkim socket.

mkdir -p /var/spool/postfix/opendkim
chown opendkim:opendkim /var/spool/postfix/opendkim/
usermod -a -G opendkim postfix

Generating keys.

mkdir /etc/opendkim
mkdir /etc/opendkim/keys
cd /etc/opendkim/keys
mkdir example.com
cd example.com
opendkim-genkey -s mail -d example.com
chown opendkim:opendkim mail.private

Parameter -s is for selector, d is domain. In mail.txt you can find txt entry for DNS record.

Specify trusted hosts /etc/opendkim/TrustedHosts.

127.0.0.1
localhost
192.168.0.1/24
*.example.com

Create a key table /etc/opendkim/KeyTable.

mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private

Create a signing table /etc/opendkim/SigningTable.

*@example.com mail._domainkey.example.com

And last step is

service opendkim restart
service postfix restart

Debian 8 – Jessie

Create the domain key.

mkdir -p /etc/dkim/amavisd-new 
genrsa /etc/dkim/example.key.pem

Configure amavisd to use the new key /etc/amavis/conf.d/50-user.

$enable_dkim_verification = 1;
$enable_dkim_signing = 1;

dkim_key('example.com', 'foo', '/var/db/dkim/example.key.pem');

@dkim_signature_options_bysender_maps = (
{ '.' => { ttl => 21*24*3600, c => 'relaxed/simple' } } );

@mynetworks = qw(0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16);  # list your internal networks

To view the public key.

amavisd-new showkeys

Testing the key.

amavisd-new testkeys

If everything is ok, restart amavis.

service amavis restart

 

OpenVPN server installation

Server side

Firstly, I must install necessary packages.

apt-get install openvpn easy-rsa

Now it’s time to enable TLS.

cd /etc/openvpn
mkdir easy-rsa
cp -R /usr/share/easy-rsa/* easy-rsa/

Then I must edit /etc/openvpn/easy-rsa/vars according to my organization (see end of file).

vim /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="mail@domain"
export KEY_EMAIL=mail@domain

Generate CA keys ca.crt and ca.key.

cd easy-rsa/
mkdir keys
touch keys/index.txt
echo 01 > keys/serial
. ./vars # set environment variables
./clean-all
./build-ca

Generate a server key server.crt and server.key.

./build-key-server server

Generate DIFFIE-HELLMAN for SSL/TLS connection.

./build-dh

Generate key for each client.

./build-key clientname

Generate key with password (optional).

./build-key-pass clientname

Generated keys are in /etc/openvpn/easy-rsa/keys/.

Copy the ca.crt, clientname.crt, clientname.key from the server to the client.

Now create /etc/openvpn/server.conf:

port 1194
proto udp
dev tun

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem

server 10.9.8.0 255.255.255.0 # internal tun0 interface
topology subnet
ifconfig-pool-persist ipp.txt

keepalive 10 120

comp-lzo # compression - must be set on both sides
persist-key
persist-tun

status log/openvpn-status.log

verb 3 # verbose mode
client-to-client

Create log file.

cd /etc/openvpn
mkdir -p log/
touch log/openvpn-status.log

Define a directory where the client scripts should be stored , e.g. /etc/openvpn/staticclients and create the directory.

mkdir /etc/openvpn/staticclients

Add this directory as option to your openvpn configfile at the server.

client-config-dir /etc/openvpn/staticclients

For each client you have to create a file. The filename must match the “common name” attribute that was specified at the X509 certificate of the client. This command gets the CN from the computers certificate:

openssl x509 -in /etc/openvpn/yourClientCertificate.cer -noout -subject | sed -e 's/.*CN=\(.*\)\/.*/\1/'

Example of static client:

ifconfig-push 10.10.10.2 255.255.255.0
# push "route 10.1.135.0 255.255.255.0 10.1.134.62"
# push "dhcp-option WINS addr"
# push "dhcp-option DNS addr"

If OpenVPN configuration file is server.conf, I can start it by:

systemctl start [email protected]

Start your VPN at boot.

systemctl enable [email protected]

This actually creates a symlink in /etc/systemd/system/multi-user.target.wants/[email protected] pointing to /lib/systemd/system/[email protected].

Enable forward

sysctl -w net.ipv4.ip_forward=1

You have to enable masquerade and set up the firewall to get redirect via default gw working.

-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i tun0 -o eth0 -j ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE

Client side

Parameters of client.conf:

client
dev tun
port 1194
proto udp
topology subnet

remote MyVPNserverIP 1194
nobind

ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/clientname.crt
key /etc/openvpn/easy-rsa/keys/clientname.key

comp-lzo
persist-key
persist-tun

verb 3

If you want to start client side VPN automatically, you have to enable (uncomment) AUTOSTART=“all“ in the /etc/default/openvpn !! Also you have to run once „systemctl daemon-reload“.

Přenos čísla od T-Mobile k O2

O2 mi nabídlo lepší podmínky tarifu a tak jsem se rozhodl k přechodu i za cenu předčasného ukončení smlouvy u T-Mobile (pokuta 20% za všechny zbývající měsíce).
Normálně bych asi článek ani nepsal, ale přijde mi zábavné, jak některé kroky probíhají z pohledu zákazníka a určitě nepřidávají na profesionalitě O2. Zde je historie jak celý převod probíhá.

5.5. Oslovení ze strany operátora O2, že pro mě mají zajímavou nabídku jako poděkování za používaný VDSL internet. Domluvili jsme se, že nabídku promyslím a spočítám.
6.5. Nabídku jsem přijal a objednal. Proběhlo klasické předání osobních informací, i když většinu z nich už O2 má a nevím tedy, proč je třeba např. email diktovat znovu. Zbytečně mohou vznikat chyby tím, že operátor špatně rozumí atd. Ve zkratce se např. ptal:

Operátor: Jakou máte adresu?
Já: Říkám xy a operátor chtěl již končit. Raději se tak ptám, kam kurýr doručí balíček.
Operátor: No na tuto adresu.
Já: Ale to je adresa trvalého bydliště.
Operátor: Aha, tak jaká má být zasílací adresa?
Já: Jestli myslíte kontaktní, tak xyz. Ale balíček prosím doručte na abc.
Operátor: Tak proč to neřeknete hned?
Já: Neptal jste se na adresu doručení balíčku.

V čem je problém z pohledu zákazníka? Jednou se po telefonu doplňují osobní informace, tak si samozřejmě chci pohlídat to, že mi operátor třeba natrvalo nezmění kontaktní adresu. Pokud chce znát nějaký údaj, musí se ptát přesně.
Nicméně jsem byl ujištěn, že dostanu všechny potřebné dokumenty včetně výpovědi a že se prakticky o nic nemusím starat. Stačí ji tedy podepsat a odeslat na T-Mobile. Super.

Přišlo emailem shrnutí objednávky, kde je sice název tarifu uveden správně, ale cena i parametry nesouhlasí. To jsem si přece neobjednal a volám na infolinku. Operátorka mě ujistí, že jsem si objednal správně, ale že emailem chodí obecné informace a že nejsem první ani poslední kdo kvůli tomu volá. Proboha proč? Proč posílat email, který jen mate klienta?
8.5. Zásilka se SIM a smlouvou odeslána kurýrem.
10.5. Balíček za 99Kč byl doručen, smlouva podepsána.
Vyplnil jsem ručně kompletní výpověd na obecném formuláři (nebyl vyplněn, i když by mohl být) a ihned odeslal na T-Mobile.
SMS od O2, že do 24 proběhne aktivace služby.
11.5. Volá operátor O2, jestli mi byl doručen balíček. Informaci o tom jistě má, ale ptá se. Potvrzuji, že ano. Ptá se, od koho odcházím, jestli to je T-Mobile. Ano. Prý mi musí poslat výpověď specíálně pro T-Mobile, že operátoři nemají rádi obecné tiskopisy. Říkám, že jsem výpověď již poslal dle instrukcí v doručeném balíčku. Na otázku, proč tedy obecný formulář posílají mi nedokázal odpovědět. Prý se ale nic neděje a mám prostě poslat ještě jednu výpověď, kterou mi pošlou mailem, mám si ji vytisknout, podepsat a poslat. Myslím si o tom svoje, ale říkám OK. T-Mobile v pokynech pro výpověď žádnou formu stanovenou nemá, takže v tom nevidím problém a měl by přijmou i první výpověď co jsem poslal 10.5.
13.5. Dostávám ČVOP od T-Mobile SMSkou. Výpověď tedy byla přijata.
Předávám dle instrukcí v dopise ČVOP kód operátorovi na infolince O2. Trochu se z počátku diví co chci, ale pak to jde.
17.5. Od O2 emailem přichází slíbená výpověď pro T-Mobile, nyní již vyplněná. Proč? Každý přece musí vidět, že v systému už ČVOP je zadáno. Nebo ne?
Tak jsem rád, že od T-Mobile odcházím. Dnes přišel dopis, kde je datum ukončení uvedeno ke konci smluvního závazku. Někde se jim ztratilo to, že chci vypovědět smlouvu předčasně. Měl jsem za to, že když je ve výpovědi věta, že souhlasím s poplatkem za předčasné ukončení smlouvy, je tím zřejmé, že smlouvy ukončuji dnem podpisu výpovědi. Jen T-Mobile si myslí opak a mám poslat novou výpověď, kde je napsáno předčasně ukončuji. Telefonický hovor pro potvrzení jim nestačí … Co na to řici. Byrokrati. Posílám tedy novou výpověď elektronicky, nebudu platit ještě poštu kvůli jednomu slovu navíc.
20.5. Podána výpověď přes Partnerskou prodejnu. V pořadí tedy 3. výpověď, protože druhá je stále bez reakce.
Dle twitteru T-Mobile jsem se také dozvěděl, že web TM má několik info stránek o tom jak ukončit smlouvy a na každé je psáno něco jiného. Nicméně když si dáte všechny informace dohromady, tak zjistíte, že můžete podat výpověď dopisem, emailem i na pobočce a to nejenom značkové prodejně, ale i partnerské!
21.5. Zpráva od T-Mobile: „Vaše smlouva bude ukončena ve chvíli, kdy bude telefonní číslo převedeno k jinému poskytovateli služeb. Po převodu Vám bude vystaveno Finanční vypořádání za předčasné ukončení Vaší účastnické smlouvy.“
Dotazem na O2 jsem zjistil, že je naplánován přenos na 30.5.
30.5. Přenos čísla byl úspěšně dokončen.
31.5. Při komunikaci s oddělením, které má na starost zpracování podaných podnětů, jsme společně zjistili, že můj tarif nebyl nastaven správně (dle podmínek domluvených při objednání). V PO 6.6.2016 se vše snad vyjasní a i parametry tarifu se nastaví do finální podoby.
7.6. O2 nezklamalo, včera se samozřejmě nikdo neozval. Dnes mi všichni tvrdí, že tarif s parametry, které mám mít, neexistuje. V podstatě jsem si to asi vymyslel a proto je tak urguji k dořešení.. asi. To je takový problém si přehrát záznam objednávky? Nebo záznam hovoru po tom, co mi přišlo nesmyslné shrnutí objednávky a operátorka mě ještě ujistila, že si toho nemám všímat? 2x mám tedy od O2 potvrzené, že budu mít tarif s parametry v tel. objednávce. Výsledek? Mám zatím horší tarif, než který mi T-Mobile nabídnul za méně peněz, přidal 60 SMS a USB modem za 1kč. Proč já jsem jenom odcházel a raději nevzal nabídku T-Mobile .. A to tam nebyla žádná sleva 100Kč za internet!

Pro porovnání (současný stav, měl být lepší pro O2):
O2 – 379 Kč, 60 min do všech sítí, 0 SMS a 1,5 GB dat (započtena sleva 100Kč za internet!)
TM – 359 Kč, 60 min do všech sítí, 60 SMS, 1,5 GB dat a USB modem za 1Kč

Od TM jsem odcházel proto, že O2 mi nabízelo více minut a více SMS. Zatím to ale vypadá na klamavé jednání.

Tak od 10:38 je vše zdárně nastaveno. Hurá 🙂 Ale toho úsilí kterého je zapotřebí k dosažení toho, co mohlo být od počátku správně, kdyby procesy fungovaly správně.. Doufám, že to alespoň přispěje ke zlepšení stavu a budoucí zákazníci už na tom budou lépe. Neumím si ani představit, kolik chyb musí denně vznikat a nikdo si toho třeba ani nevšimne.