How to set up a simple mail server on Debian in 5 easy steps

This tutorial will take you through the steps of setting up and configuring a simple mail server (SMTP, POP3, IMAP) on Debian/Linux. The instructions will be given for Debian, but they can be adapted quite simply to other distributions such as Ubuntu and other Debian-based OSes; you could even pretty much follow the same steps if you're running Red-Hat based systems such as CentOS or Fedora. I can promise you that this is as easy as it gets, provided you have correctly verified and validated the pre-requisites step.

What we will achieve in this tutorial

We will be setting up a simple email server with the following basic functionality:

  • The server will be able to both send (via SMTP) and receive emails (via IMAP and POP3) optionally with SSL functionality
  • User accounts and passwords will be encrypted and stored in a simple text file, which can be managed easily with a text editor.
  • It will support a potentially infinite amount of mailboxes over one or more domains
  • As a bonus step, I will give directions on how to set up webmail software on your server, to access your email online.

I have chosen to detail each step of the way as clearly as possible so that you understand what you're doing. If you aren't interested in getting to the bottom of things you can just skim through the tutorial and copy-paste pieces of configuration code, but I really wouldn't recommend it - you might end up spending even more time trying to fix broken configurations.

Pre-requisites

Along this tutorial I will be configuring one domain, but as you'll see you can repeat the operation to add support for multiple domains. I will be referring to the domain as "example.com" but obviously you'll need to replace that with your own domain name. Now let's see what is required before we begin configuring your server.

  • You need a domain name, such as example.com
  • The MX record(s) of your domain's DNS zone must point to your server.

What does the latter part mean? Let's try to understand how things work here. When you send an e-mail from your @gmail.com email adress to another mailbox @example.com, Gmail will attempt to contact the DNS server associated to example.com and basically ask a simple question: "what is the IP address of the server handling your email communications?" The answer given to Gmail is the contents of the MX records from your domain's DNS zone. Consequently, if we want our mail server to be correctly associated to example.com, we need to make sure the DNS zone of example.com contains an MX record that indicates a hostname pointing to the IP of your mail server.

If like me you are using GoDaddy to manage your domain, here is what you should see when you edit your domain's DNS zone file:


Make sure the value of "Points to" is set to a hostname which resolves to your server's IP address. In my case, I use example.com because it resolves to my main server IP address. In other words, I will be hosting my mail server on the same machine as my web/http server.

You can check whether the MX record of your domain is set appropriately by running the following command on your server:
dig +short A $(dig +short MX example.com | head -1 | cut -d' ' -f2)
If the result of this command is the IP address of your server, you're good. If not, check your MX records in your domain DNS zone; and make sure you have waited long enough for the changes to spread. This can take up to 24 hours. Also make sure your /etc/resolv.conf file is listing valid DNS servers.

Step 1: installing required software

We're going to install 3 applications on the system which will be used for different purposes:

  • Postfix: one of the most famous mail transfer agents/SMTP servers for Linux
  • Dovecot: a secure open source IMAP and POP3 server, which will be able to communicate with Postfix for managing user accounts and mailboxes. Warning: this tutorial is valid for Dovecot versions up to 1.X only. Unfortunately as of Dovecot 2.0 the configuration given below is completely invalid and will not work.
  • saslauthd: this barbaric name designates the SASL authentication daemon. SASL stands for Simple Authentication and Security Layer. It's the mechanism that will allow us to manage passwords in a simple way by storing them in a file (encrypted). There are other authentication layers such as MySQL and whatnot, but as I said, I want to keep this as simple as possible.

Run the following commands to install all required programs at once. It's important that you follow the right order because when installing saslauthd, the install script will place important configuration files into the Postfix configuration folder (so Postfix needs to be installed on the system first):
apt-get install postfix
Upon running this command, you should see a blue screen asking you all sorts of questions. In case you have no clue what to do, here's how to answer them:

  1. "General type of mail configuration:" "Internet Site"
  2. "The 'mail name'..." : enter the name of the first domain you are configuring. In our case "example.com". This will not affect the functioning of your mail server, it doesn't matter much.
  3. If any other question is asked just leave the default values
You should be good for now; if you've made a mistake enter the following command to restart the above process: dpkg-reconfigure postfix. Next, you'll be installing Dovecot along with its POP3 and IMAP components:
apt-get install dovecot-common dovecot-imapd dovecot-pop3d

That should go smoothly and you can go straight to the last step:
apt-get install libsasl2-2 libsasl2-modules sasl2-bin
You should be getting a message warning you that the SASL auth daemon won't be started when you boot the machine; so open /etc/default/saslauthd and set START=yes to make it so.

Step 2: setting up SSL certificates (optional)

In this section we'll see how to create SSL certificate files in order for our server to support secure communications. Note that this is optional, and you will not need to purchase a commercial certificate or anything (unless you want to). I'm going to show you how to generate the certificate files required by Postfix and Dovecot. First, run the following command, replacing example.com by your own domain obviously:
openssl req -new -x509 -days 3650 -nodes -out "example.com.cert" -keyout "example.com.key"
Some questions will be asked regarding the information you want to appear in the certificate, feel free to answer them any way you want to. You'll now have two files: "example.com.cert" and "example.com.key"; we need to concatenate those two files into a third file, by running the following command:
cat example.com.cert example.com.key > example.com.pem
These files will be required at different stages of the configuration. Right now, you need to move these files to the following folder: /etc/ssl/private/ 

Step 3: configuring Postfix

We need to begin by creating a specific user and group for that will be used by the programs we're configuring. It's never a good thing to run them as root. 
groupadd email -g 7788
useradd email -r -g 7788 -u 7788 -d /var/email -m -c "mail user"

Some changes will be required on the default configuration of Postfix. Open the file /etc/postfix/main.cf with your favorite text editor and let's review the values you have to configure. I have indicated below a list of variables that you need to either append or modify from your configuration file. By this I mean that if the variable does not exist yet in your configuration file, simply add it yourself at the bottom of the configuration. If the variable already exists, replace its value. Also note that it doesn't matter whether you want to host emails from one or more domains, as we will be configuring extra domains in step 5.

# Your hostname and domain name here
myhostname=example.com
mydomain=example.com
myorigin=$mydomain

# Virtual mailbox configuration (/var/email should have been created through the previous commands)
virtual_mailbox_base=/var/email
virtual_mailbox_domains=hash:/etc/postfix/vmail_domains
virtual_mailbox_maps=hash:/etc/postfix/vmail_mailbox
virtual_alias_maps=hash:/etc/postfix/vmail_aliases
virtual_minimum_uid=100
virtual_uid_maps=static:7788
virtual_gid_maps=static:7788
virtual_transport=dovecot

# SSL configuration, make sure to use the certificates from step 2 (optional)
smtpd_tls_cert_file=/etc/ssl/private/example.com.cert
smtpd_tls_key_file=/etc/ssl/private/example.com.key
smtpd_tls_CAfile=/etc/ssl/certs/ca-certificates.crt
smtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt
smtp_use_tls=yes
smtpd_use_tls=yes
smtpd_tls_loglevel=1
smtpd_tls_received_header=yes
tls_random_source=dev:/dev/urandom
smtp_tls_note_starttls_offer=yes
smtpd_tls_session_cache_timeout=3600s
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
queue_directory=/var/spool/postfix

# Authentication settings, making use of SASL
smtpd_sasl_type=dovecot
smtpd_sasl_path=private/auth
smtpd_sasl_auth_enable=yes
broken_sasl_auth_clients=yes
smtpd_sasl_security_options=noanonymous
smtpd_sasl_tls_security_options=$smtpd_sasl_security_options
smtpd_sasl_local_domain=$myhostname
smtpd_sasl_application_name=smtpd
smtpd_helo_required=yes
smtpd_helo_restrictions=reject_invalid_helo_hostname
smtpd_recipient_restrictions=reject_unknown_recipient_domain, reject_unauth_pipelining, permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination


We need to make another change to the Postfix configuration, in a different file. Open up /etc/postfix/master.cf and find the line that starts with #submission. Uncomment it along with the next couple of lines starting by #-o. It should look like this:
submission inet n       -       -       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

Now scroll down to the bottom of the file and add:
dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=email:email argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}

Finally, there is one last file that you need to edit out: /etc/postfix/sasl/smtpd.conf. If it doesn't exist, create it. Anyhow insert the follow values into the file:
pwcheck_method: saslauthd
mech_list: plain login cram-md5 digest-md5


Step 4: configuring Dovecot

It is now time to configure Dovecot, the program that will serve as POP3 and IMAP server. Open the dovecot main configuration file /etc/dovecot/dovecot.conf using your favorite text editor. As you can see this file is pretty big due to the massive amount of comments all over the place. I'm going to post the appropriate configuration below with my own comments pertaining to the architecture we're setting up. Feel free to copy paste it but make sure to modify the relevant sections.

# Basic configuration
protocols = imap imaps pop3 pop3s
log_timestamp = "%Y-%m-%d %H:%M:%S "
disable_plaintext_auth=yes

# User and group permissions
first_valid_uid=7788
last_valid_uid=7788
first_valid_gid=7788
last_valid_gid=7788
mail_location = maildir:/var/email/%d/%n/Maildir
mail_privileged_group = email
auth_executable = /usr/lib/dovecot/dovecot-auth
auth_verbose = yes

# SSL config
ssl_cert_file = /etc/ssl/private/example.com.cert
ssl_key_file = /etc/ssl/private/example.com.key

# LDA config
protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  postmaster_address = postmaster@example.com
  mail_plugins = sieve
  log_path =
}

# Authentication configuration
auth default {
    mechanisms = plain login
    passdb passwd-file {
        args = scheme=SHA1 /etc/dovecot/users.conf
    }
    userdb static {
        #args = /etc/dovecot/users.conf
        args = uid=7788 gid=7788 home=/var/email/%d/%n allow_all_users=yes
    }
    socket listen {
        master {
            path = /var/run/dovecot/auth-master
            mode = 0600
            user = email
            group = email
        }
        client {
            path = /var/spool/postfix/private/auth
            mode = 0660
            user = postfix
            group = postfix
        }
    }
}

Next we need to create an empty users file, so create a blank file /etc/dovecot/users.conf. We will update it during the next step. To finish with this step, ensure that your configuration files have the proper permissions, by running the following commands:
chgrp email /etc/dovecot/dovecot.conf
chmod g+r /etc/dovecot/dovecot.conf
chown root:root /etc/dovecot/users.conf
chmod 600 /etc/dovecot/users.conf

Step 5: managing domains and mailboxes

At this point, our SMTP and IMAP/POP3 servers are properly configured. Now all we have to do is create mailboxes and user accounts for the domains of our choice. To begin with, we need to define the list of domains that are being handled by our server. Open up (by this I mean create or edit out)  /etc/postfix/vmail_domains and insert 1 domain per line, followed by a tabulation character, and the word OK. In our case:
example.com OK
example2.com OK

Now we're going to set up our mailboxes and accounts. There are three files involved, you'll need to edit them out every time you need to make changes to your mail accounts:
  • /etc/postfix/vmail_mailbox: contains the list of mailboxes along with their storage path
  • /etc/postfix/vmail_aliases: the list of email aliases
  • /etc/dovecot/users.conf: stores your encrypted mailbox passwords
Let's begin by vmail_mailbox. On each line you're supposed to enter the full e-mail address of the mailbox, a tabulation character, then the path of the mailbox files - relative to /var/email as we have indicated in the Dovecot and Postfix configurations. The directories you indicate here do not need to exist, they will be created automatically when needed; however they have to respect the syntax: domain.tld/user. My file contains:
webmaster@example.com    example.com/webmaster
contact@example.com   example.com/contact
webmaster@example2.com   example2.com/webmaster

Now, on to vmail_aliases. This is the alias list which can be used for email address forwarding or mailing lists. Each line must contain: the source address, a tabulation character, the destination address(es). Here's mine:
webmaster@example.com   webmaster@example.com
contact@example.com   contact@example.com
webmaster@example2.com   webmaster@example.com

And finally, /etc/dovecot/users.conf. This file contains the user accounts and encrypted passwords. Now how do we build that file knowing that passwords will be encrypted? Here's how: repeat the following process for each user/password combination you want to add:
  1. Generate a password by running this command: dovecotpw -s SHA1. It will ask you to enter a password, and output the hashed result like this: {SHA1}qUqP5cyxm6YcTAhz05Hph5gvu9M=. Copy the part highlighted in yellow (the whole line except {SHA1}).
  2. Open up users.conf and at the bottom of the file, add a new line respecting the following format: mailbox@example.com:password (copied from step 1)
My users.conf file now looks like this:
webmaster@example.com:qUqP5cyxm6YcTAhz05Hph5gvu9M=
contact@example.com:EJ9LPFDXsN9ynSmbxvjp75Bmlx8=
webmaster@example2.com:RTzySG+IxBH5rWCLVjrvllztsV0=

Now that you have updated your user database, it's time to apply the changes. Run the following commands for Postfix to acknowledge your newly created mailboxes:
postmap /etc/postfix/vmail_domains
postmap /etc/postfix/vmail_mailbox
postmap /etc/postfix/vmail_aliases

And now, it's time to start the Postfix and Dovecot services, making sure they're stopped first:
service postfix stop
service dovecot stop
service postfix start
service dovecot start

You can now try your new mailboxes with your favorite email client software. Here are the configuration settings that you may be requested to provide:
  • Server: example.com
  • User account: webmaster@example.com (full email address)
  • Password: the password you chose earlier when you ran the dovecotpw -s SHA1 command
  • Protocol: SMTP for sending (authentication required!), POP3 or IMAP for receiving
  • Ports: SMTP 25, SMTP secure 587, POP3 110, POP3 secure 995, IMAP 143, IMAP secure 993
You may need to properly configure the above ports in your server's firewall if you use one. If you have correctly performed all the steps and done as I said, there's no way this can go wrong. I have personally configured a good number of servers following these exact instructions, and it always worked great. Don't hesitate to post comments if you run into problems.


Bonus step: setting up a webmail

If you want to be able to check your e-mail from your web browser instead of a client, I recommend setting up Roundcube: an excellent free open source webmail system.

  • The official wiki provides detailed tutorials that explain how to set up Roundcube
  • Configuration is quick and can be done with a GUI, you can get your webmail up and running in less than 10 minutes
  • It comes with a tool to test your mail server 


Conclusion

Setting up your own mail server under Linux can be a bad mess. There are a good number of tutorials on the web that explain how to set up a mail server under Linux but most of the times you don't really know what you're going to get. At the end of the day I've seen a lot of people give up and go for paid options such as Microsoft Exchange (excellent, but expensive), or iRedMail (there is a free option but you'll probably not want it). So I wrote this tutorial mostly for myself, to remember the steps when I next need to set up an email server. I hope it helps someone one day...

Credits: la ferme du web (french), demees (french), this tutorial at Rosehosting, another tutorial by tomaka17

Comments

Anonymous said…
I've been very happy with iRedMail.org, which uses all the same components - Postfix, Dovecot, Roundcube, Managesieve, Amavisd, Spamassassin etc.

It also comes with an open source web admin system, and the option of a more fully featured web admin system. But you can use it fine with the open source version, or without the web admin panel at all.

Only issue is that it really needs to be installed on virgin system. I tried adding it to an existing mail system and it went horribly wrong.

The beauty for me is that underneath it is just the base components, which you can update and support as usual, but with the additional support from iredmail - the developer is very responsive.
Yes, actually this is the reason why I didn't go with iRedmail in the first place -- I was installing a mail server on my production box and couldn't afford a complete OS reinstall. I haven't been able to even try it. But I'm hearing a lot of good things about it!
Anonymous said…
What if you want a mail server on a private lan without a domain name?

I have been looking forever for a way to do this but cant find a thing that lets me send mail from computer on a lan to another.
Unknown said…
Hi! Thank you for the tutorial, it is nicely explained.

However, I encountered a problem while configuring the mail server:
when I launch the "service dovecot start" command, I receive the following error message " Fatal: service(auth) access(/usr/lib/dovecot/dovecot-auth) failed: No such file or directory failed! ".

Searching the internet, I found a solution which recommended using the "/etc/dovecote/auth" instead of "/etc/dovecote/dovecot-auth".

This solution allowed the dovecot service to start, but now I am unable to connect a client to the server (using one of the users I've defined). For example, using Thunderbird, when I try logging in with one of the users, I get "configuration could not be verified - is the username or password wrong?"

As well, on the mail server, when I execute "doveadm auth roxana", I get this message "passdb: roxana auth failed
extra fields:
user=roxana".

I would appreciate it if you could give me some piece of advice.
Anonymous said…
Since May 4 2013, the Debian Stable release (Wheezy) uses Dovecot 2.1
So a blog post in January 2014 about a Debian Dovecot setup that explicitly doesn't work with Dovecot 2.0 is a bit moot.

I appreciate your effort, but I expected more and thus am a bit disappointed :(
Anonymous said…
Thank you very much, is all this valid for debian 7.5 too?
Unknown said…
I have configured Postfix in my debian7 server. But now i can send mail outside of my Lan only like gmail etc.. When i am sending any mail to my Lan its going to Mail Queue with below error :
host *********** [***.***.254.17] refused to talk to me: 554 dropsmtpd - Your mail is being dropped as spam.

plz help.
Anonymous said…
Dovecot 1.x in 2014? Ouch! Also you'll need a good anti-spam + antivirus measures if you are going to receive mail from outside. Otherwise it's a nightmare.
You could also just use Symbiosis ;)

Debian + Postfix + Roundcube + SpamAssassin + Sieve... etc

https://forum.bytemark.co.uk/t/set-up-your-own-email-server-in-5-steps/1864
Unknown said…
Thanks for providing precious information.
email support
Anonymous said…
Hi I configure my server using your how-to but I have two domains but just one it's works. Could you please help me??
Anonymous said…
Hello

I am a beginner with server services on linux an tried to setup a mail server along with this tutorial. Unfortunately not everything seems to work as described. The dovecot did not find a password generator described as in the tutoirial but i found a solution in the web for the right command.

After doing all the rest at the end there is an error:
Fatal: service(auth) access(/usr/lib/dovecot/dovecot-auth) failed: No such file or directory

Where could I made the mistake so?

Regards
Marius
Anonymous said…
ln -s /usr/lib/dovecot/auth /usr/lib/dovecot/dovecot-auth
Prasad K. said…
hi sir,

I followed your tutorial to install my own mail server but I got problems with sending emails from outlook. Your tutorial is super but I don't know what is the problem here.

I format my VPS with centos7 now and install mail server with exim and dovecot per instructions at https://www.rosehosting.com/blog/setup-a-mailserver-with-exim-and-dovecot-on-a-centos-7-vps/ and it work now.

Can you teach how to install spamassassin now?

thank you sir
Vermus said…
cool , but need to add:
1. dkim
2. dns reverse zone

otherwise, all letters going to spam in gmail & etc...
Awesome blog!!! Our Windows Live Mail Support is the best mailing solutions go through this link Windows live mail technical support also Call +1-800-231-4635 (Toll Free)

Thank you! Once I reinstalled the Stylish add-on, it worked great! visit - windows live mail help also Call +1-800-231-4635 (Toll Free)
Unknown said…
Keep on posting these types of articles. I like your blog design as well. Dedicated Server
Aparajayah said…
This is very useful information for developers. Thanks for sharing this blog. Aparajayah Technology in Madurai offers Web Development Servive.
Anonymous said…
thanks i was looking for mail setup

Για την κατασκευή του εκθεσιακού σας περιπτέρου επισκεφτείτε την ιστο-σελίδα μας http://www.orangedigital.gr η τηλεφωνικα στο 2105908017 και θα ανταποκριθούμε άμεσα.
Κατασκευή Εκθεσιακών Περιπτέρων


Stand Design in Greece
orange DIGITAL
Κατασκευή Εκθεσιακών Περιπτέρων
Anonymous said…
This article is amazing as it helps me to get the sort of information was needed by me. visit Windows live mail support also Call +1-800-231-4635 (Toll Free).
Unknown said…
I really appreciate blog author for writing some wonderful article about software development company which are very informative and useful
software development company in Indore
veri good your articel
http://acemaxs31.com/obat-herbal-sakit-infeksi-saluran-kemih-alami/
Alex Rock said…
Hi, I know this article is quite old, but I followed it and everything seems to work well until I have to setup Thunderbird with the mail account.

I have multiple domain names plugged to my webserver, which has its own domain name (for provider purpose), and IP.
There is a MX record on one domain pointing to this webserver domain name.

When I'm using Thunderbird to setup the mail, there is an error about "wrong identifier or password".

I don't know where it's coming from...
If you accept to help me, please do it by sending me a mail at pierstoval@gmail.com , it's gonna be easier for us to chat about my problem (and I'll be able to show you my config non-publicly).

Thanks a lot for this great tutorial !
Ini yang sedang saya cari-cari.
Thank Gan infonya sangat membantu (y)

http://grosirobatjellygmat.com/
http://jamutradisionalmujarab.com/
http://jellygamat-gold.net/
http://jellygamatgoldgpro.com/
http://obatjellygamatgoldg.net/
http://grosirobatjellygmat.com/obat-herbal-maag/
nice articel :)
http://goo.gl/7Ubtem
http://goo.gl/6lwGPo
Unknown said…
Thanks for sharing.

If you are looking for computer network support in Chiswick Compcontrol can provide you with a total service that will save you money. Call 020 3757 6622 today.
abes said…
please give a dovecot 2.x config , make more understanding your tutorial
Unknown said…
We stumbled over here from a different web page and thought I might check things out.
Testimoni slimming capsule
We’ve always promised to protect the things that are the most important to them: their assets, their peace of mind and even their dreams, La sélection alternative de la semaine #23? : en français, le symbole pour « numéro » est « N° ». Pourquoi ne pas l’utiliser, au lieu du croisillon anglosaxon ?
C’est trop moche ? we i me andriana
===========================================================================
http://bit.ly/1FqZsIV
===========================================================================
http://bit.ly/1GbZEdb
===========================================================================
http://bit.ly/1AL8KsI
===========================================================================
http://bit.ly/1ETz8YI
Terimakasih informasinya :)
Anonymous said…
Solely designated users will access the files10webhostingservice.com A business can have any range of accounts, folders and lots of assigned users, each user only has access to their assigned accounts or folders
Anonymous said…
Hi!

I'd love to see a section with dovecot 2.0 configuration, or else an easy way to install 1.X (the apt-get gets 2.0 installed)
Anonymous said…
i am having issue with iredmail. can't open up admin console after fresh install of iredmail. can someone please help me with that.
Melroy said…
I have the idea that dovecat 2 made the configs a bit harder by splitting all the files in seperate files. Now i'm lost xD
Ryan Jones said…
Whenever I get around to setting up an email server for my domain, opposed to this silly alias route I'm currently going, this will come in very handy. Thanks for this.
obat asam urat said…
thank u so much :D
Melroy said…
This comment has been removed by the author.
Anonymous said…
Got a shit load of errors when loading dovcot... its too late and I just did a dd wipe of my server and stoped payment on my vps host. Rage quit complete time for one last beer and will be downloading bed/sleep like a sack of potatoes.

good day!
Anonymous said…
Finally got errors resolved everything worked.. services started successfully.
Cant fukin login and mx records are set. I hate being dumb, you dont even know how much it sucks to be the guy looking up the shit hole at the successful guys running code and servers like its easy!
Unknown said…
Thanks for sharing such a informative article. I hope that this post is really useful for the people who looks for this.
Also please check the below links:
Obat Herbal Penyakit ISPA Pada Anak
Gadget Bytes said…
Hi there! Outstanding post. Thanks for referring to a very exciting and useful content, it is a big help to me and to others as well, keep it up! software development company
Anonymous said…
doveadm pw -s SHA1
inwizards said…
Excellent information in this Post. Keep it up. Thanks for sharing Love to read it, Waiting For More new Updates and I Already Read your Recent Post its Great Thanks,
Hire .Net Developer
Thanks for sharing this article, very nice.
Antimony Lead Alloys
Rosy S said…
Fabulous Writing and good content and thank you posting!!
PHP Training in Mumbai
PHP Training in Kolkata
Niyaz said…
Great Post!!! thanks for shatring this post with us...
What is Selenium used for
Selenium Automation Testing
Rosy S said…
Perfect post with amazing information and thanks for sharing!!
Digital Marketing Course in Pune
Digital Marketing Course in Hyderabad
Rosy S said…
Perfect post with amazing information and thanks for sharing!!
Swift Developer Course in Mumbai
Swift Developer Course in Pune
ArshineFeed said…
Arshine Feed Biotech Co.,LTD. (Arshine Feed) is the wholly owned subsidiary of Arshine Group. Our products cover a wide range of feed additives, such as Amino acids, Vitamins, Probiotics, Enzymes, Antiseptic, Antioxidant, Acidifier, Neutraceuticals and Coloring Agents etc. The company is committed to improving the nutritional intake for Broilers, Layers, Swines, Ruminants as well as fish-prawn-crab through scientific breeding programs and formulations.
source:https://www.arshinefeed.com/
Rosy S said…

Great work with lots of knowledgeable information and thanks for sharing!!
DATA Science Course in Hyderabad
DATA Science Course in Mumbai
Karin said…
The event industry was celebrated across the globe through events that focused on connection and collaboration. virtual event Advocacy, research and a new relief funding legislation were top of the agenda. define debrief, guerilla marketing, software for event management, swag bag ideas, online registration and payment for events, speaker biography examples, vendor events near me 2021, thank you for attending and business meet and greet invitation wording
Betting Online said…
This post is so informative content.It help me a lot.My self Betting Online
Deepika Agarwal said…
Very well explained tutorial, thanks for sharing such we at efficienct packers and movers in bangalore appreciate you efforts, keep growing!
Zee said…
nice Blog amazing information necc egg rate
saipdf said…
Very nice post thanks for sharing this post
Sai Satcharitra Pdf
Sai Satcharitra Telugu Pdf
Tony said…
What is the expected output? What do you see instead?
Changing of passwords worked when using dovecot 1.2. Dovecot 2 does not include
dovecotpw anymore, but now comes with doveadm (of which I think 'doveadm pw' is
the replacement of dovecotpw)
arfa said…
I see your blogs ,its very interesting and useful for me .Please visit my blog.Windows 10 Pro Crack
arfa said…
I see your blogs ,its very interesting and useful for me .Please visit my blog.TeraCopy Pro 2022 Crack
muavia said…
Bears Related to Dogs: The seemingly distinct worlds of bears and dogs may share surprising connections beyond their superficial differences.
Pet said…
Bears Related to Dogs
The seemingly distinct worlds of bears and dogs may share surprising connections beyond their superficial differences.
Usama said…
Can Dogs Drink Apple Juice? is a common one among pet owners. Humans often enjoy a refreshing glass of apple juice, especially on a hot day. But when it comes to our furry companions, their dietary needs and tolerances differ significantly from ours.
muavia said…
Smart TVs have revolutionized home entertainment
, providing a more intelligent way to enjoy our favorite shows and movies. But with smart technology comes an array of security concerns, one of them being whether or not they are equipped with cameras that could be used to spy on us.

Popular posts from this blog

Nginx error 413: Request entity too large Quick Fix

Dealing with Nginx 400 Bad Request HTTP errors

Affiliate module for Interspire Shopping Cart