Listar ficheiros mais antigos

No diretório atual podemos pesquisar ficheiros criados há mais de 30 dias.

$ find . -maxdepth 1 -type f -mtime +30

Também podemos apagar os ficheiros listados

$ find . -maxdepth 1 -type f -mtime +30 -print | xargs /bin/rm -f
$ find . -maxdepth 1 -type f -mtime +30 -print0 | xargs -0 /bin/rm -f

Ou se quisermos listar os ficheiros com detalhes

$ find . -maxdepth 1 -type f -mtime +120 -print0 | xargs -0 ls -lh

Send A Welcome Email For Creating Maildir

When you create a new email account and try to fetch emails from it (with POP3/IMAP) you will probably get error messages saying that the Maildir doesn’t exist. The Maildir is created automatically when the first email arrives for the new account. Therefore it’s a good idea to send a welcome email to a new account.

First, we install the mailx package:

yum install mailx

To send a welcome email to, we do this:


You will be prompted for the subject. Type in the subject (e.g. Welcome), then press ENTER, and in the next line type your message. When the message is finished, press ENTER again so that you are in a new line, then press CTRL+D:

[root@server1 ~]# mailx
Subject: Welcome <-- ENTER
Welcome! Have fun with your new mail account. <-- ENTER
<-- CTRL+D
[root@server1 ~]#

Limpar SPAM do Maildir

Basicamente não conseguia aceder a algumas pastas numa conta de email a partir de qualquer cliente.

Uma vez que o formato utilizado era Maildir pude aceder diretamente às pastas da conta e remover as mensagens manualmente.

grep -l -r 'SPAM' cur | xargs rm

Para contar o numero de ficheiros dentro da pasta basta utilizar o comando

ls -1 | wc -l

Lets Encrypt: comandos certbot

Para gerar certificados uso este

$ sudo /path/to/certbot-auto --apache certonly

É possível consultar a lista de certificados existentes

$ sudo /path/to/certbot-auto certificates

Para eliminar um certificado que já expirou (por ex. para um domínio que já não é utilizado)

$ sudo /path/to/certbot-auto delete --cert-name MyDomain

Upgrade XAMPP in Windows

I had to write this article cause I couldn’t find any complete solution to help people out with updating XAMPP in Windows. Well, finally here is a easy to understand, step by step guide to upgrade XAMPP that actually works. Kudos!


If you are updating XAMPP after a long time like me than be ready for some major changes. XAMPP no longer comes with the MySQL server. Since XAMPP 5.5.30 and 5.6.14, XAMPP ships MariaDB instead of MySQL. So copy pasting the mysql data files from old to new xampp won’t work anymore!


While updating XAMPP we basically face 2 challenges

  1. Moving all the site files. This portion is easy just a simple copy paste will do the trick.
  2. Moving all the databases to the new server. And most often this is the main issue why we don’t update XAMPP very often. Cause backing up all the databases one by one and then importing them to new server is really a long boring work.


Follow the following steps and you will be there in no time!


Lets backup all the databases first

  1. Open XAMPP Control Panel as an Administrator
  2. Click on the Shell option
  3. run the following command mysqldump -u root -p --all-databases > all-db-dump.sql
  4. If you have different user for databases then change the value ‘root’ with username. If you don’t have any password just press enter. Otherwise provide the password.
  5. This will create a SQL file named “all-db-dump.sql” that contains all the databases in MySQL server. You will find this file in xampp folder.
  6. Now stop both Apachee and MySQL servers and quit the xampp control panel. Close the command prompt too.
  7. Now rename your ‘xampp’ folder to ‘xampp-old’. This way if anything goes wrong you will be able to get back to the old version very easily.


  1. Download the latest version of XAMPP.
  2. Install it in the same drive where your old xampp currently is.
  3. Now go to xampp folder and run the xampp control panel as Administrator.
  4. Start both Apachee and MySQL server and check whether they are working properly or not, also check PhpMyAdmin page.
  5. Now Copy the htdocs folder from ‘xampp-old’ folder to ‘xampp’ folder.
  6. Go to xampp\php\php.ini
  7. Now configure the php.ini file and increase the value for the following options upload_max_filesize,memory_limit, post_max_size .
  8. post_max_size and memory_limit need to be larger than upload_max_filesize. Make them high enough so big files can work on the server.
  9. Go to ‘xampp\phpMyAdmin\libraries\config.default.php’
  10. Look for $cfg[‘ExecTimeLimit’] = 600;
  11. Change the value 600 to a higher value may be 6000.
  12. Now restart both Apache and MySQL server.
  13. Now go to phpMyAdmin
  14. Go to Import tab
  15. Import ‘all-db-dump.sql’ file through the import option directly to server.
  16. Based on how many databases you have it will take some time.
  17. If you have followed all the steps correctly you will get a success message “ Import has been successfully finished”.
  18. Go ahead and check whether your site and databases are working properly or not.
  19. If everything is working fine than you can delete the xampp-old file.

If you have followed my instructions then you should have a functioning XAMPP with no issues.



Parse apache vhosts file

So, I wanted to parse the apache config file so I could get the ServerName and the DocumentRoot of each VirtualHost.

awk '/^<VirtualHost*/,/^<\/VirtualHost>/{if(/^<\/VirtualHost>/)p=1;if(/ServerName|DocumentRoot|## User/)out = out (out?OFS:"") (/User/?$3:$2)}p{print out;p=0;out=""}' vhosts.conf

The command will output the info in the format:

ServerName DocumentRoot

or opposite depending on the order in which they appear on the VirtualHost


Note: You should exclude those VirtualHosts which are only redirects

Change sendmail queue

To actually change it, modify the /etc/sysconfig/sendmail file. It’ll look something like this:


Change the QUEUE unit to suit your preferences.


Forcing queue send on individual email message

You can flush the message with:

sendmail -qIyourqueueID -oTnow

The “I” flag to the -q flag specifies which queue ID to use. The -oTnow flag sets the queue timeout to “now”. Note sendmail will still try to deliver the message once when you do this.

Permissões para escrever numa pasta no IIS 7.5

Giving write permissions to all IIS_USRS group is a bad idea from the security point of view. You dont need to do that and you can go with giving permissions only to system user running the application pool.

If you are using IIS7 (and I guess you do) do the following.

  1. Open IIS7
  2. Select Website for which you need to modify permissions
  3. Go to Basic Settings and see which application pool you’re using.
  4. Go to Application pools and find application pool from #3
  5. Find system account used for running this application pool (Identity column)
  6. Navigate to your storage folder in IIS, select it and click on Edit Permissions (under Actions sub menu on the right)
  7. Open security tab and add needed permissions only for user you identified in #3


Note #1: if you see ApplicationPoolIdentity in #3 you need to reference this system user like this IIS AppPool\{application_pool_name} . For example IIS AppPool\DefaultAppPool

Note #2: when adding this user make sure to set correct locations in the Select Users or Groups dialog. This needs to be set to local machine because this is local account.



Vulnerable service: Netbios

Go into your firewall file /etc/sysconfig/iptables.

If you use Active Directory and want to enable that function ONLY in Samba use.

-A RH-Firewall-1-INPUT -s -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A RH-Firewall-1-INPUT -s -m state --state NEW -m udp -p udp --dport 445 -j ACCEPT

Don’t be scared of the syntax. I’m not going to cover firewalls but understand the basics.

-s (ip address) limits to the Class C ip addresses of your installation. Of course you need to modify to your own network and this makes is far more secure than giving the entire world access to your network.

--state NEW [basically means a new rule.]

-p [the port you want to open up which is either tcp or udp. I’ve done the hard work for you so you don’t have to figure out which type to open up]

dport 445 [This is the port number. Again for AD we use port 445.

Now, if your Samba setup demands the old netbios calls:

-A RH-Firewall-1-INPUT -s -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
-A RH-Firewall-1-INPUT -s -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
-A RH-Firewall-1-INPUT -s -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT

Be sure to watch out for case issues and don’t make a mistake on tcp or udp otherwise samba won’t function properly. This has to be right — as I’ve found out myself with a couple of typos!

Now restart the firewall. There are two ways of restarting a service on CentOS

  1. service iptables restart
  2. /etc/init.d/iptables restart

Either one works. You can also just restart the server if you want to as well.

note: You can use Redhat’s system tool for editing the firewall, but it is not recommend. It won’t add the -s parameter and will open up all the samba ports 137 – 139 and 445 which is not a recommended scenario.