<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Pepipost</title>
    <description>The latest articles on Forem by Pepipost (@pepipost).</description>
    <link>https://forem.com/pepipost</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F2118%2F6b5ab9a4-4954-41e3-b827-2e2417c7d440.png</url>
      <title>Forem: Pepipost</title>
      <link>https://forem.com/pepipost</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/pepipost"/>
    <language>en</language>
    <item>
      <title>Explaining Bots and Its types - Part 1</title>
      <dc:creator>Vikram Sahu </dc:creator>
      <pubDate>Tue, 07 Apr 2020 16:59:46 +0000</pubDate>
      <link>https://forem.com/pepipost/explaining-bots-and-its-types-part-1-15po</link>
      <guid>https://forem.com/pepipost/explaining-bots-and-its-types-part-1-15po</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;b&gt;Fact&lt;/b&gt;: Do you know that a normal person interacts at least 3-4 times a day with a bot? but when? and how? impressive isn't it...&lt;br&gt;
It is also said that in the future a person will interact more with a bot than their spouse.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let's unfold the truth behind this...&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;b&gt; Introduction &lt;/b&gt;
&lt;/h3&gt;

&lt;p&gt;In simple words, bots are dumb machines that are programmed to do repetitive tasks, which are automated by a human being to save time. This was the definition that I concluded after working on a few bots. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E5VhGR2w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/eu5qnbj3326gpaalps6y.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E5VhGR2w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/eu5qnbj3326gpaalps6y.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bots are coming into existence more and more because of their accuracy, speed and much more similar behavior to humans. if you ask me where I can find a bot? I would reply in just a few words "&lt;b&gt;Everywhere on the web&lt;/b&gt;".&lt;/p&gt;

&lt;p&gt;The most common bot/type of bot that you can experience right now is&lt;br&gt;
Just unlock your phone and speak:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Hey, Siri" if you have iPhone.&lt;/li&gt;
&lt;li&gt;"Ok, Google" if you have Android. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Similarly, you can find Alexa or Google Home/mini which are also home assistants used for many tasks that a human wants to execute within the house like playing music, asking for news or setting reminders and many more.&lt;/p&gt;

&lt;p&gt;The above examples are advance bots that were contributed by Gaint technology leaders, but there are many small bots that developers write for their own convenience, it can be chatbots, a web crawler, social bots, and some malicious bots.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;b&gt; Good Bot vs Bad Bot&lt;/b&gt;
&lt;/h3&gt;

&lt;p&gt;This is the section, let's dive deep with nature of bots and how they are helpful to us with our day to day task.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H5xNmxRR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/q79ha4tew9gntk4jjvkn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H5xNmxRR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/q79ha4tew9gntk4jjvkn.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, Bots are developed to automate various repetitive tasks which turns out to be useful in many ways, but few are developed to harm your resource which is classified into good bots and bad bots.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;b&gt;What is a Good Bot?&lt;/b&gt; 

&lt;ul&gt;
&lt;li&gt;Good bots are built to gain profit for the business. These bots are beneficial for both businesses and individuals. The simple example you can assume is whenever you search for any websites, products or any services, you often get next to accurate results, how?&lt;/li&gt;
&lt;li&gt;This is possible because of search engines spider bot which is also known as &lt;b&gt;crawler bot&lt;/b&gt;. Bots like 

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://support.google.com/webmasters/answer/182072?hl=en"&gt;Googlebot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Slurp Bot [yahoo]&lt;/li&gt;
&lt;li&gt;Alexa crawler [Amazon Alexa]&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Reputed companies often deploy this bot by following the rules of the webmaster crawling activity and indexing rate at websites &lt;a href="https://www.techinasia.com/talk/robotstxt-secure-website-content"&gt;robot.txt&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Besides from these search engine crawlers, there are many different third party bots like

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://api.slack.com/bot-users"&gt;Slack bot.&lt;/a&gt; (Any complex integration can be done which can be notified directly on the channel).&lt;/li&gt;
&lt;li&gt;&lt;a href="https://core.telegram.org/bots"&gt;telegram bot.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pingdom bot. (website monitoring bot)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By this time you might be clear about good bots, so any bot who follow the rules and regulation of webmaster and the policies which result in profit for business are good bots.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;b&gt; What is a Bad Bot?&lt;/b&gt;

&lt;ul&gt;
&lt;li&gt;As we know Bad is always opposite to Good. These bots are built by hackers, cybercriminals, fraudsters so that they get engaged in illegal activities.&lt;/li&gt;
&lt;li&gt;These bots are programmed for doing malicious jobs on the web.&lt;/li&gt;
&lt;li&gt;Let's take an example, you have a business setup for toys and you have a unique toy that is made by you. your competitor may build a bot that can be a scraper that can collect all the content, product reviews, feedbacks and what new toy you are working on and publish fake reviews on other websites.&lt;/li&gt;
&lt;li&gt;The second example is they travel thousands of visits on your website within the minimum span of time, that chokes the availability for other genuine users. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This bot is highly injurious for brand reputation which results in hampering of search engine website ranking.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;b&gt; Types of Bots&lt;/b&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;b&gt;Good Bots&lt;/b&gt; are used to gain profit for the business and also helps to build your domain and website health. This bot helps by crawling website for search engine optimization(SEO), Collecting information, obtaining marketing analytics and many more.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6YOLuQG3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qe87o9zpcwz13agl8uq8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6YOLuQG3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qe87o9zpcwz13agl8uq8.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Social Network Bots&lt;/b&gt;: These bots are managed and supported by social networking sites like &lt;a href="https://developers.facebook.com/docs/workplace/integrations/custom-integrations/bots/"&gt;Facebook&lt;/a&gt;, Twitter. Bots help to give visibility to the brand website and drive engagement to their platforms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Feedfetcher Bots&lt;/b&gt;: These bots are used to collect information from different websites and help to keep subscribers updated with the product, events, and blog posts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Parter Bots&lt;/b&gt;: These bots are third party bots that are developed and supported by the SaaS organization like Slack, PayPal, Stripe and many more. these bots help to integrate directly with the program within the organization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Monitoring Bots&lt;/b&gt;: These bots are programmed in such a way that they periodically monitor and updates us about the uptime and health of the server/websites.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;Search Engine Crawlers&lt;/b&gt;: These are the most common and maybe most used bots in this modern world. No matter, who you are you need search engines for simplicity and get your work done.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's look at few &lt;b&gt;Bad Bots&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LQCJO2UZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ek6yj2ehspqzr98i56xx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LQCJO2UZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ek6yj2ehspqzr98i56xx.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Scraper Bots&lt;/b&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;These scrapers are used to steal vital information, prices, updates, and content. This will help the competitor to undermine the business strategies which will help them to target the company's revenue.&lt;/li&gt;
&lt;li&gt;Point to remember is that competitor ofter use third-party scrapers to perform this illegal act.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;b&gt;Spam Bots&lt;/b&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;These Spam Bots target community forums, lead collection forms, and comments sections.&lt;/li&gt;
&lt;li&gt;They usually target this section by adding unwanted promotional advertisements, links, and flood up the comment section by trolling users.&lt;/li&gt;
&lt;li&gt;The above activities frustrate genuine users to comment or use the forum's information. The main motive of such bots is to insert the link to phishing pages which are build to collect user critical information which included bank account, username, and passwords. &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;b&gt;Scalper Bots&lt;/b&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;These bots target ticketing websites, they purchase 100-1000 of tickets and sell them to third party seller due to which the genuine ticket selling website lose their customers.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Each and every activity of a bot depends on the &lt;b&gt;data&lt;/b&gt; it can be a training data or real-time data. &lt;/li&gt;
&lt;li&gt;I always recommended not to expose your websites on HTTP instead always use HTTPS or use appropriate protocols to restrict such bots to crawl your website.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  &lt;b&gt;Concluding...&lt;/b&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In this world of Machines and Artificial intelligence, I always want each and everyone to learn how the bot works and why you need a bot. &lt;/li&gt;
&lt;li&gt;If you are keen to learn this new world paradigm, "&lt;b&gt;First decode it&lt;/b&gt;" that is what I have discussed above in this blog.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope you enjoyed reading! Stay tuned for Part 2 where I will be building a Telegram bot from scratch. &lt;/p&gt;

&lt;p&gt;Thank You! Do follow and share 🤗&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ref: &lt;a href="https://www.shieldsquare.com/what-are-bots/"&gt;shieldsquare&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>datascience</category>
      <category>beginners</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Simplifying Computational Complexity {time and space}</title>
      <dc:creator>Vikram Sahu </dc:creator>
      <pubDate>Thu, 26 Mar 2020 13:56:17 +0000</pubDate>
      <link>https://forem.com/pepipost/simplifying-computational-complexity-time-and-space-167</link>
      <guid>https://forem.com/pepipost/simplifying-computational-complexity-time-and-space-167</guid>
      <description>&lt;h3&gt;
  
  
  &lt;b&gt;Introduction&lt;/b&gt;
&lt;/h3&gt;

&lt;p&gt;When someone wants to master computer programming, the best way to start is to learn the complexity of the system. Before you start with coding common questions you should ask yourself are: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why should I write the program in this way only?&lt;/li&gt;
&lt;li&gt;What will be the benefit of this program? &lt;/li&gt;
&lt;li&gt;How many resources my program will consume?&lt;/li&gt;
&lt;li&gt;How fast it will execute?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions will help you write efficient code. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Computational complexity is all about the writing optimized, efficient and blazing fast programs/code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this blog, you will be going through a few amazing theories of the computer system with examples.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;b&gt;Before learning complexity&lt;/b&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FxXlzVCa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/sr15j62pg30a6nlxvk9u.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FxXlzVCa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/sr15j62pg30a6nlxvk9u.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's learn a bit about an algorithm:&lt;/p&gt;

&lt;p&gt;A sequence of logical computation is called as the algorithm of the program. These algorithms are analyzed by calculating their time or space complexity. It is proved that your algorithm will always execute in worst-case complexity or an average-case complexity.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/Worst-case_complexity"&gt;Worst-case complexity&lt;/a&gt;: Maximum resource utilized by your algorithm to execute with respect to the number of inputs.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://en.wikipedia.org/wiki/Average-case_complexity"&gt;Average-case complexity&lt;/a&gt;: Average resource utilized by your algorithm to execute with respect to the number of inputs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope now you are getting a bit of an idea about the complexity theory. Let's dive deep to clear all our doubts...&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;b&gt;Topics:&lt;/b&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Resources.&lt;/li&gt;
&lt;li&gt;Asymptotic complexity.&lt;/li&gt;
&lt;li&gt;Computational models.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;b&gt;1. Resources&lt;/b&gt;
&lt;/h3&gt;

&lt;p&gt;What are the resources as per you? &lt;br&gt;
You might be thinking Human, keyboard, electricity, CPU, monitor &amp;amp; all the hardware stuff that you need while using your system then that is wrong❌.&lt;/p&gt;

&lt;p&gt;The actual resource that I will be talking about is &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Time.&lt;/li&gt;
&lt;li&gt;Space. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;Time complexity&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The time complexity of an algorithm is measured irrespective of hardware and software associated with the system. The complexity considers the maximum time required to run an algorithm which is measured in asymptotic notation.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Space complexity&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The amount of memory your algorithm requires to run is called space complexity.&lt;/p&gt;

&lt;p&gt;Other complexities are arithmetic complexities which depend on the arithmetic computation that has been used in the algorithm and totally depends upon the size of input n.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;b&gt;2. Asymptotic Complexity&lt;/b&gt;
&lt;/h3&gt;

&lt;p&gt;It is difficult to describe the compute of an algorithm precisely which falls between the worst-case and the average-case complexity. So in order to calculate the near to accurate complexity, it is always better to keep the input size n as infinity.&lt;/p&gt;

&lt;p&gt;These asymptotic complexities are the boundary limits of an algorithm that includes upper bound(big-oh notation), lower bound(big-omega) and the tight bound(big-theta).&lt;/p&gt;

&lt;p&gt;If you are pretty confident that your algorithm is good and won't hamper your system computational complexity below is the table of complexities you can assume your algorithm might take.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VS7Kv-3J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mfr441x473bzh75a1s8b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VS7Kv-3J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mfr441x473bzh75a1s8b.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For analyzing any algorithm, it is recommended to consider the big-oh notation because it helps us to get the idea of the upper limit of the execution time of the algorithm.&lt;/p&gt;

&lt;p&gt;I would recommend a 5 minutes read on &lt;a href="https://www.hackerearth.com/practice/basic-programming/complexity-analysis/time-and-space-complexity/tutorial/"&gt;hackerearth&lt;/a&gt; before proceeding further.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;b&gt;3. Computation Models&lt;/b&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j2ymAa6z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1i74s1evm0h6hzu6gijl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j2ymAa6z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1i74s1evm0h6hzu6gijl.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is one of the vast topics which can be totally debatable. The model of computation describes how an output of the mathematical expression is computed when input is given. Similarly, the algorithms rely on these mathematical operations. So it is very important to choose the correct model for computation.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;Deterministic models&lt;/u&gt;&lt;/b&gt;: These models are the exact opposite of random. It helps us to predict the exact event that will occur in the future without any involvement of randomness. So if you have some data you can predict the exact outcome with 100% certainty. for example :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rolling a fair die.&lt;/li&gt;
&lt;li&gt;Calculating Kelvin using Celsius.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;Non-Deterministic models&lt;/u&gt;&lt;/b&gt;: These models are the opposite of deterministic where you will start with some sort of straightforward events later randomness will be getting added to it. Here you don't have the idea of what will be the future event. Since every time you run you will get a different output. In order to differentiate you can consider the below image.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6VVDlwrO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ye08qti793qvsko1508b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6VVDlwrO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ye08qti793qvsko1508b.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;b&gt;&lt;u&gt;Quantum computing models&lt;/u&gt;&lt;/b&gt;:  These models follow the rules of quantum mechanics(the fundamental theory of physics describing the properties of nature.) The very famous example of quantum computing is AI(Artificial Intelligent). you can find more examples &lt;a href="https://www.forbes.com/sites/bernardmarr/2017/07/10/6-practical-examples-of-how-quantum-computing-will-change-our-world/#22fdd32c80c1"&gt;here&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Tw6QCMuF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xn24ga3jka60z1r57jhv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Tw6QCMuF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xn24ga3jka60z1r57jhv.gif" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;b&gt;Concluding...&lt;/b&gt;
&lt;/h4&gt;

&lt;p&gt;Any algorithm without proper computational logic is just a waste of resources. you can save those resources or use them in a better way by optimizing, building concise code better.&lt;/p&gt;

&lt;p&gt;I hope you understood the very basic fundamentals of Complexity. Do share &amp;amp; comment! 🤗&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>design</category>
    </item>
    <item>
      <title>How does email bounce work in Mautic </title>
      <dc:creator>Hiteshpandey</dc:creator>
      <pubDate>Thu, 26 Mar 2020 09:29:21 +0000</pubDate>
      <link>https://forem.com/pepipost/how-does-email-bounce-work-in-mautic-1d5l</link>
      <guid>https://forem.com/pepipost/how-does-email-bounce-work-in-mautic-1d5l</guid>
      <description>&lt;p&gt;Mautic being an opensource marketing solution provides you with various features such as email organization through segmentation and sending targeted emails through campaigns with email monitoring. In order to comprehend the impact of your campaign, you need to track how much of your sent emails are being successfully sent and how many emails are being dropped. You can do this by checking bounced emails in your campaign.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do emails get bounced?
&lt;/h2&gt;

&lt;p&gt;Reasons for getting an email bounce notification can be many; from email address being changed, a domain has changed, the recipient's mailbox is full, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of email bounces:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Hard Bounces:- A hard bounce of an email is caused by permanent non-deliverable conditions such as the recipient's email address is missing or invalid. Many other reasons for a hard bounce to occur are the non-existence of the recipient’s domain, unknown recipient, error in typing the recipient’s email address, blocking of your email server by the recipient’s email server, or any kind of network glitch at the recipient’s end.&lt;/li&gt;
&lt;li&gt;Soft Bounces:- If an email message is able to find the recipient’s email server and recognize the address, but it is not delivered to the recipient’s inbox and bounced back before delivery, it is classified as a "Soft Bounce." The reasons might include: the recipient’s inbox is full, the recipient's email server is down for some reason, or the email box is abandoned by the user.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this, we can go forward with setting up email bounce filtration in Mautic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Install and enable php-imap extension
&lt;/h3&gt;

&lt;p&gt;If you haven't yet installed the php-imap extension please follow these instructions for the installation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install php-imap
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install &lt;/span&gt;php-imap // For centos &lt;span class="se"&gt;\ &lt;/span&gt;RHEL
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;php7.0-imap // For ubuntu
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Enable the extension
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;vim /etc/php.ini
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Uncomment or Add these lines
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;extension&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;imap.so
&lt;span class="nv"&gt;extension&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;curl.so
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Restart the HTTP server
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;service restart httpd&lt;span class="se"&gt;\a&lt;/span&gt;pache // For apache
&lt;span class="nv"&gt;$ &lt;/span&gt;service restart nginx // For nginx
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Setup Monitored Inbox Settings
&lt;/h3&gt;

&lt;p&gt;Since now we have our PHP IMAP extension enabled we can move onward towards setting up our IMAP inbox with Mautic.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Login to the Mautic panel&lt;/li&gt;
&lt;li&gt;Click on the [cogwheel icon] &amp;gt; [Configuration] &amp;gt; [Email Settings]&lt;/li&gt;
&lt;li&gt;Set these credentials:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Monitored address - The email address you are going to use&lt;/p&gt;

&lt;p&gt;IMAP host - The IMAP enabled email server's hostname&lt;/p&gt;

&lt;p&gt;Port - Email server connection port [usually 993]&lt;/p&gt;

&lt;p&gt;Encryption - Message encryption [usually SSL]&lt;/p&gt;

&lt;p&gt;IMAP username - User name of your email account&lt;/p&gt;

&lt;p&gt;IMAP password- Password of your email account&lt;/p&gt;

&lt;p&gt;Click on [Test connection and fetch folders] to test the connection and populate the Folders from your email server.&lt;/p&gt;

&lt;p&gt;Bounces - Select the bounces folder from which Mautic will be reading bounce notifications from. This can be set as the Inbox folder of your email directory or you can filter your bounce notifications to the Bounce folder which will be a cleaner way to handle this.&lt;/p&gt;

&lt;p&gt;You can use Use custom connection settings? option too, for setting up different email addresses for different Requests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:-&lt;/strong&gt; By any reason you are not being able to see the Monitored Inbox Settings you can do two things to fix this&lt;/p&gt;

&lt;p&gt;Check the php imap option is enabled in the php.ini file or not&lt;br&gt;
Delete the Mautic cache folder and reload the page&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;// Mautic cache folder
/mautic_setup_path/app/cache/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Setup Cron (If using IMAP)
&lt;/h3&gt;

&lt;p&gt;Edit the Cron file and put the following Cron in it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;crontab &lt;span class="nt"&gt;-e&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; php /path/to/mautic/app/console mautic:email:fetch
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Create a segment for bounce emails
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Open Segments section in Mautic&lt;/li&gt;
&lt;li&gt;Create a new segment named Bounce emails&lt;/li&gt;
&lt;li&gt;In the Filters section, Select [Bounced - Email] option apply equals operator and set it to yes save this segment
This segment will be updated when mautic:segments:update Cron is executed&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 5: Enable Bounce Forwarding
&lt;/h3&gt;

&lt;p&gt;After you set your IMAP server settings, Mautic would be checking for bounce notification emails in your specified directory. To receive these bounce notification emails, you might have to enable this in your email service providers panel.&lt;/p&gt;

&lt;p&gt;All you have to do is set the email id which you have specified in the Monitored Inbox Settings to be forwarded the bounce email notifications.&lt;/p&gt;

&lt;p&gt;In case you don't want to do that or your email service provider doesn't allow the kind of VERP format (more on that later), you can use the webhooks of your email service provider which is discussed in the next step&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Set the webhook to the Mautic mailer callback URL (Optional if you are using IMAP)
&lt;/h3&gt;

&lt;p&gt;Depending upon the service provider you use you will have to set the webhook to the Mauitc callback URL.&lt;/p&gt;

&lt;p&gt;The callback URL would look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;http://&amp;lt;mautic_installation_domain&amp;gt;/mailer/&lt;span class="o"&gt;{&lt;/span&gt;service-provider-name&lt;span class="o"&gt;}&lt;/span&gt;/callback
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Similar to the IMAP settings you can use this callback URL as a webhook in order to detect bounced emails. In this case, your email service provider provides information about the bounced emails through the webhook endpoint. Refer &lt;a href="https://docs.mautic.org/en/channels/emails/bounce-management"&gt;this&lt;/a&gt; section to know more about this.&lt;/p&gt;

&lt;p&gt;If you are using a custom SMTP service that is not mentioned in the Email service list provided in the [Mail Send Settings] panel, you will not be able to use this. Regardless of that, if you have no problem with the setup until Step 5, you will be able to detect and interact with the bounced email ids into the Bounce segment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Process&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For IMAP inbox:
Mautic uses the configured IMAP mail configuration to detect the Bounced email notifications. This is done by the execution of this Cron mautic✉️fetch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mautic uses VERP Variable Envelope Return Path (VERP) to detect emails Return-Path header to check for the bounced email which normally is the from-address you are sending from, which is modified by Mautic&lt;br&gt;
The format Mautic expects the return-path should be is &lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;youremail+bounce_receiver-email-id@your-domain.com
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;When an email is bounced it is sent back with the Return-Path header&lt;br&gt;
Mautic then uses this detail to set the contact as bounced email.&lt;br&gt;
The bounce segment that is created by the user is then updated by the contacts that are marked as bounced. This is done after the execution of the Cron mautic:segments:update&lt;/p&gt;

&lt;p&gt;I hope this helps clear some doubts about the bounce email handling in the Mautic service setup.&lt;/p&gt;

&lt;p&gt;You can check the original post here - &lt;a href="https://pepipost.com/tutorials/mautic-bounce-management/"&gt;https://pepipost.com/tutorials/mautic-bounce-management/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mautic</category>
    </item>
    <item>
      <title>A quick guide on Mautic installation for Ubuntu 18.04</title>
      <dc:creator>Hiteshpandey</dc:creator>
      <pubDate>Wed, 25 Mar 2020 05:53:26 +0000</pubDate>
      <link>https://forem.com/pepipost/a-quick-guide-on-mautic-installation-for-ubuntu-18-04-39ik</link>
      <guid>https://forem.com/pepipost/a-quick-guide-on-mautic-installation-for-ubuntu-18-04-39ik</guid>
      <description>&lt;p&gt;Mautic is one of the popular free open-source Marketing automation applications which can be used for multiple use cases of marketing paradigm. It ranges from sending bulk emails by uploading an Email list, Scheduling and Creating campaigns, Sending SMS and User journey.&lt;br&gt;
This will be a quick detour on how you can set up Mautic service on your brand new server setup from scratch. But before that, here are some of the basic system requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PHP 5.6.19 + (Magic Quotes GPC off)&lt;/li&gt;
&lt;li&gt;MySQL 5.5.3 + (InnoDB support required)&lt;/li&gt;
&lt;li&gt;Apache / Nginx&lt;/li&gt;
&lt;li&gt;An SMTP service provider like Pepipost&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can check Mautic's official requirements page &lt;a href="https://www.mautic.org/download/requirements"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After confirming to these requirements you can now begin with the installation&lt;/p&gt;
&lt;h1&gt;
  
  
  Installation
&lt;/h1&gt;
&lt;h3&gt;
  
  
  Step 1: Enter into the root directory of your remote server
&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ cd var/www/html/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Step 2: Create a new directory named Mautic
&lt;/h3&gt;


&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo mkdir &lt;/span&gt;mautic
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;mautic
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Step 3: Download the Mautic production file package
&lt;/h3&gt;

&lt;p&gt;To download Mautic at your local machine click &lt;a href="https://www.mautic.org/download"&gt;here&lt;/a&gt;&lt;br&gt;
Fill your credentials and click on the download button&lt;br&gt;
The downloaded file would be named something like this 2.16.0.zip&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 4: Copy the zip file to the remote server
&lt;/h3&gt;

&lt;p&gt;Enter the following commands in your local machine download file location&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;scp &lt;span class="nt"&gt;-r&lt;/span&gt; 2.16.0.zip root@&amp;lt;your-domain-name/ip-address&amp;gt;:/var/www/html/mautic/mautic.zip
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:-&lt;/strong&gt; By any chance, you don’t have access to copy files to your server directory you can use FTP to upload the zip file, or you can use the git repo to clone it to your server directory, but you have to take some additional steps to get it up and running. Check &lt;a href="https://github.com/mautic/mautic"&gt;this link&lt;/a&gt; for Mautic git repo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Unzip the file contents
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;    &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;unzip mautic.zip
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;If you don’t have unzip installed, you can install it by using&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;    &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;unzip
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Step 6: Delete the zip file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;    &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; mautic.zip
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 7: Install php-fpm and dependencies
&lt;/h3&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo apt install php libapache2-mod-php libapache2-mod-php php-common php-mbstring php-xmlrpc php-soap php-gd php-xml php-intl php-tidy php-mysql php-cli php-mcrypt php-ldap php-zip php-curl php-sqlite3 php-fpm
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Step 8: Setting up MySQL
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Install MySQL server&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;    &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;mysql-server
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Set MySQL root password&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After the installation a temporary password will be generated in the mysqld.log file you can access this password by the following command
$ sudo grep 'temporary password' /var/log/mysqld.log&lt;/li&gt;
&lt;li&gt;Now you will get a message something like this
[Note] A temporary password is generated for root@localhost: ,b*-rkuIR4Zas&lt;/li&gt;
&lt;li&gt;Copy this password for the next step&lt;/li&gt;
&lt;li&gt;Enter this command
$ sudo mysql_secure_installation&lt;/li&gt;
&lt;li&gt;This will prompt you to validate your password enter Y&lt;/li&gt;
&lt;li&gt;After this, you will be prompted to set your password strength. Enter you choice between LOW, MEDIUM and STRONG.&lt;/li&gt;
&lt;li&gt;Enter new password&lt;/li&gt;
&lt;li&gt;You can say yes to all the other prompts that come after this&lt;/li&gt;
&lt;li&gt;You will now be prompted with multiple questions on how to set up the MySQL installation. You can set Y to all the prompts&lt;/li&gt;
&lt;li&gt;You will be able to login with the user root and a blank password
&lt;strong&gt;Login to MySQL&lt;/strong&gt;
Create Mautic database and add User
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;mysql &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; create database mautic&lt;span class="p"&gt;;&lt;/span&gt;
mysql &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; CREATE USER &lt;span class="s1"&gt;'mauticuser'&lt;/span&gt;@&lt;span class="s1"&gt;'localhost'&lt;/span&gt; IDENTIFIED BY &lt;span class="s1"&gt;'password'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
mysql &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; GRANT ALL PRIVILEGES ON &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; TO &lt;span class="s1"&gt;'mauticuser'&lt;/span&gt;@&lt;span class="s1"&gt;'localhost'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
mysql &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; FLUSH PRIVILEGES&lt;span class="p"&gt;;&lt;/span&gt;
mysql &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 9: Setting up Http Server
&lt;/h3&gt;

&lt;p&gt;(You can install Nginx or Apache server according to your needs)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nginx&lt;/strong&gt;:
For installing Nginx you can follow these steps
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;nginx
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start nginx
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;nginx
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;You need to make the following changes to nginx.conf file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;vim /etc/nginx/nginx.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;server &lt;span class="o"&gt;{&lt;/span&gt;
       listen       80 default_server&lt;span class="p"&gt;;&lt;/span&gt;
       listen       &lt;span class="o"&gt;[&lt;/span&gt;::]:80 default_server&lt;span class="p"&gt;;&lt;/span&gt;
       server_name  &amp;lt;Your domain name&amp;gt;&lt;span class="p"&gt;;&lt;/span&gt;
       root         /var/www/html/mautic&lt;span class="p"&gt;;&lt;/span&gt;
       location / &lt;span class="o"&gt;{&lt;/span&gt;
               try_files &lt;span class="nv"&gt;$uri&lt;/span&gt; /index.php&lt;span class="nv"&gt;$is_args$args&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
       &lt;span class="o"&gt;}&lt;/span&gt;
       location ~ &lt;span class="se"&gt;\.&lt;/span&gt;php&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="o"&gt;{&lt;/span&gt;
       fastcgi_pass unix:/run/php/php7.2-fpm.sock&lt;span class="p"&gt;;&lt;/span&gt;
       fastcgi_index index.php&lt;span class="p"&gt;;&lt;/span&gt;
       fastcgi_param SCRIPT_FILENAME &lt;span class="nv"&gt;$document_root$fastcgi_script_name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
       include fastcgi_params&lt;span class="p"&gt;;&lt;/span&gt;
       fastcgi_split_path_info ^&lt;span class="o"&gt;(&lt;/span&gt;.+.php&lt;span class="o"&gt;)(&lt;/span&gt;/.+&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nv"&gt;$;&lt;/span&gt;
       &lt;span class="o"&gt;}&lt;/span&gt;
   &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now depending upon your php-fpm setup you either need to add&lt;br&gt;
    fastcgi_pass 127.0.0.1:9000;&lt;br&gt;
Or&lt;br&gt;
    fastcgi_pass unix:/var/run/php7.2-fpm.sock;&lt;br&gt;
Note: If you are unclear on which value has to be set, you can check this in &lt;a href="http://www.conf"&gt;www.conf&lt;/a&gt; file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;    &lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;vim /etc/php/7.2/fpm/pool.d/www.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Search for the listen parameter.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Apache:&lt;/strong&gt;
For installing Apache you can follow these steps
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;apache2
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start apache2
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;apache2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;You need to make the following changes to apache2.conf file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;vim /etc/httpd/conf/httpd.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&amp;lt;VirtualHost &lt;span class="k"&gt;*&lt;/span&gt;:80&amp;gt;
DocumentRoot /var/www/html/mautic
&amp;lt;Directory /&amp;gt;
       Options FollowSymLinks
       AllowOverride All
   &amp;lt;/Directory&amp;gt;
   &amp;lt;Directory /var/www/mautic&amp;gt;
       Options FollowSymLinks MultiViews
       AllowOverride All
       Order allow,deny
       Allow from All
   &amp;lt;/Directory&amp;gt;
&amp;lt;/VirtualHost&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;After this you will be opening http://{your-domain-address} to open Mautic installation panel&lt;br&gt;
There is more to this after the basic setup. But, since this tutorial is already too long here are some links to help you.&lt;br&gt;
For more detailed setup on ubuntu 18.06 (Error resolutions | Setup | Setting up your first campaign) you can follow the original blog here — &lt;a href="https://pepipost.com/tutorials/how-to-install-mautic-on-ubuntu-18-04/"&gt;https://pepipost.com/tutorials/how-to-install-mautic-on-ubuntu-18-04/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mautic</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Install Mailtrain on Ubuntu 18.04</title>
      <dc:creator>Hiteshpandey</dc:creator>
      <pubDate>Tue, 24 Mar 2020 16:32:53 +0000</pubDate>
      <link>https://forem.com/pepipost/install-mailtrain-on-ubuntu-18-04-1pn5</link>
      <guid>https://forem.com/pepipost/install-mailtrain-on-ubuntu-18-04-1pn5</guid>
      <description>&lt;p&gt;Mailtrain is a free open-source, self-hosted, newsletter application which is built on NodeJs and MySQL/MariaDB. Mailtrain allows us to send bulk emails by uploading e-mailing lists, with that it has email triggers, segmentation, email template generation from drag and drop to HTML editor. All you need is the SMTP credentials of your ESP.&lt;br&gt;&lt;br&gt;
In this tutorial, you will learn the steps required to successfully install and integrate Mailtrain Open Source Email Newsletter Application on a fresh Linux- Ubuntu 18.04 instance.&lt;br&gt;&lt;br&gt;
Please go through these prerequisites  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A hosting server with a minimum of 1GB ram available for Mailtrain service. (To be at safer side, it is recommended to have slightly higher capacity)
&lt;/li&gt;
&lt;li&gt;Node.js (v7+)&lt;/li&gt;
&lt;li&gt;MySQL (v5.5+ or MariaDB)&lt;/li&gt;
&lt;li&gt;Redis (for session storage)&lt;/li&gt;
&lt;li&gt;MySQL (v5.5+ or MariaDB) 
With these requirements fulfilled get-go through the installation steps
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Installation
&lt;/h1&gt;
&lt;h3&gt;
  
  
  Step 1: Check Node version
&lt;/h3&gt;


&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;node &lt;span class="nt"&gt;-v&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;You can install Node.js using these commands (Skip this step, if you already have NodeJs installed)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;build-essential
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;manpages-dev
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;nodejs
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Check MySQL version
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;mysql &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;For the installation of MySQL server please refer to &lt;a href="https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install"&gt;this&lt;/a&gt; article. (Skip, in case you have MySQL already installed):&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Clone Mailtrain git repository on your server directory
&lt;/h3&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;git clone git://github.com/Mailtrain-org/mailtrain.git
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;mailtrain
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: In this step you will create a new database and a new user, so log in to your MySQL instance and follow the given steps:
&lt;/h3&gt;

&lt;p&gt;Log in to MySQL and create a new database.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql&amp;gt; create database mailtrain;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Create a new user with its hostname and password &lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql&amp;gt; CREATE USER 'mailtrainuser'@'localhost' IDENTIFIED BY 'password';
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Give user access and exit&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mysql&amp;gt; GRANT ALL PRIVILEGES ON * . * TO 'mailtrainuser'@'localhost';

mysql&amp;gt; EXIT;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Step 5: Copy the file config/default.toml to config/production.toml
&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ cp config/default.toml config/production.toml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Step 6: Edit config file
&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo vim config/production.toml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Step 7: Now you will make changes to the following sections in production.toml file:
&lt;/h3&gt;

&lt;p&gt;Change the MySQL details based on the database you have created.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;mysql]
&lt;span class="nv"&gt;host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"localhost"&lt;/span&gt; // your mysql host
&lt;span class="nv"&gt;user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mailtrainuser"&lt;/span&gt; // username
&lt;span class="nv"&gt;password&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"password"&lt;/span&gt; // mysql password
&lt;span class="nv"&gt;database&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mailtrain"&lt;/span&gt; // database
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Enable Redis if you have it installed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;[&lt;/span&gt;redis]
&lt;span class="nv"&gt;enabled&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true
&lt;/span&gt;&lt;span class="nv"&gt;host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"localhost"&lt;/span&gt;
&lt;span class="nv"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;6379
&lt;span class="nv"&gt;db&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;5
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;For installation of Redis follow the given set of commands&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;redis-server
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;redis-server.service
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 8: Run npm install
&lt;/h3&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ npm install --production
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Step 9: For the final step, you will run the Mailtrain.
&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ NODE_ENV=production npm start
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You can run Mailtrain like this or you can create a Mailtrain service. To do that, you can now end the currently running instance by pressing [Ctrl + c] and follow the next steps.&lt;/p&gt;

&lt;h1&gt;
  
  
  Create and run Mailtrain service file
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Step 1: Create a new user group forMailtrain
&lt;/h3&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo adduser --system --group mailtrain
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Step 2: Add user group in the production.toml file
&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo vim config/production.toml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Add these credentials&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user="mailtrain"
group="mailtrain"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Step 3: Add permissions for our Mailtrain user to execute our directory
&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo chown mailtrain:mailtrain /var/www/html/mailtrain/ -R
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Step 4: Copy our Mailtrain service file to our systemd system directory
&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo cp /var/www/html/mailtrain/setup/mailtrain.service /etc/systemd/system/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Step 5: Change the working directory in our mailtrain.service file
&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo vim /etc/systemd/system/mailtrain.service
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Change "/opt/mailtrain" to whatever your Mailtrain folder path is for example "/var/www/html/mailtrain"&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Start the Mailtrain service
&lt;/h3&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo service mailtrain start
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;And with this, you have the Mailtrain service up and running. You can check the status of the Mailtrain service by using this command&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo service mailtrain status
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;With this done, you have successfully installed Mailtrain service on your Linux server.&lt;/p&gt;

&lt;p&gt;The next step is to set up a reverse proxy.&lt;/p&gt;

&lt;h1&gt;
  
  
  Setup reverse proxy
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Step 1: Edit production.toml file
&lt;/h3&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo vim config/production.toml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Modify these lines&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"127.0.0.1"&lt;/span&gt; 
&lt;span class="nv"&gt;proxy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Server config setup
&lt;/h3&gt;

&lt;p&gt;For Apache2, use the commands mentioned below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;apache2
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start apache2
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;apache2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;You can find the Mailtrain server configuration setting for Apache in the following path.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ vim /var/www/html/mailtrain/setup/mailtrain-apache.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Note:- You need to enable Proxy Mod on Apache2 (only if you haven't enabled it yet). This can be done by using the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;a2enmod proxy 
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;a2enmod proxy_http
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;These are the settings you will be adding in your apache2.conf file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;vim /etc/apache2/apache2.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;ProxyPreserveHost On
ProxyPass        &lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="s2"&gt;"http://127.0.0.1:3000/"&lt;/span&gt;
ProxyPassReverse &lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="s2"&gt;"http://127.0.0.1:3000/"&lt;/span&gt;
ServerName example.com
ServerAlias www.example.com
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Restart the server&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo service apache2 restart
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;For Nginx, use the commands mentioned below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;nginx
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start nginx
&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;nginx
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;You can find the Mailtrain server configuration setting for Nginx in the following path.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ vim /var/www/html/mailtrain/setup/mailtrain-nginx.conf 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;These are the settings you will be adding in your nginx.conf file :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;vim /etc/nginx/nginx.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;





&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;    server &lt;span class="o"&gt;{&lt;/span&gt;
    listen 80&lt;span class="p"&gt;;&lt;/span&gt;
    listen &lt;span class="o"&gt;[&lt;/span&gt;::]:80&lt;span class="p"&gt;;&lt;/span&gt;

    server_name mailtrain.org www.mailtrain.org&lt;span class="p"&gt;;&lt;/span&gt;
    access_log /var/log/nginx/mailtrain.log&lt;span class="p"&gt;;&lt;/span&gt;

    location / &lt;span class="o"&gt;{&lt;/span&gt;
        proxy_set_header X-Real-IP &lt;span class="nv"&gt;$remote_addr&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        proxy_set_header X-Forwarded-For &lt;span class="nv"&gt;$proxy_add_x_forwarded_for&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        proxy_set_header HOST &lt;span class="nv"&gt;$http_host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        proxy_set_header X-NginX-Proxy &lt;span class="nb"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        proxy_pass http://127.0.0.1:3000&lt;span class="p"&gt;;&lt;/span&gt;
        proxy_redirect off&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Restart the server:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo service nginx restart
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Step 3: Restart Mailtrain service&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ sudo service mailtrain restart
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;With this, you will be able to access Mailtrain dashboard on your domain URL&lt;/p&gt;

&lt;p&gt;http://{your-domain-address}&lt;br&gt;
I hope with these simple steps you are now able to use the Mailtrain set up for your marketing campaigns. For setting up your SMTP credentials and other settings you can refer the following link which is the original post:&lt;/p&gt;

&lt;p&gt;Mailtrain setup for Ubuntu 18.04 - &lt;a href="https://pepipost.com/tutorials/how-to-install-mailtrain-on-ubuntu-18-04/"&gt;https://pepipost.com/tutorials/how-to-install-mailtrain-on-ubuntu-18-04/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For installation on Centos 7 - &lt;a href="https://pepipost.com/tutorials/how-to-install-mailtrain-on-centos-7/"&gt;https://pepipost.com/tutorials/how-to-install-mailtrain-on-centos-7/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>mailtrain</category>
      <category>ubuntu</category>
    </item>
  </channel>
</rss>
