# Migrating email accounts from a cPanel hosting environment

**URL:** <https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004>\
**Category:** Unsupported Modifications\
**Created:** [December 25, 2015, 4:16pm UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004 "2015-12-25T16:16:04Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![alexweissman](https://discourse.mailinabox.email/user_avatar/discourse.mailinabox.email/alexweissman/32/525_2.png) [@alexweissman](https://discourse.mailinabox.email/u/alexweissman)\
**Post date:** [December 25, 2015, 4:16pm UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004/1 "2015-12-25T16:16:04Z")

</div>

Hey guys,

After a little bit of futzing around, I think I’ve figured out a good way to transfer email accounts in bulk from a cPanel shared hosting account to a mail-in-a-box server. See this Gist:

> <https://gist.github.com/alexweissman/72b58d2cee2ec48efe47>

Please note that this is a work-in-progress, drawn from my own digging and experimenting. Let me know if you see anything that is incorrect, missing, or needing clarification. I take no responsibility for any lost data!

---

<div class="post-metadata">

**Author:** ![benmaynard](https://discourse.mailinabox.email/letter_avatar_proxy/v4/letter/b/7cd45c/32.png) [@benmaynard](https://discourse.mailinabox.email/u/benmaynard)\
**Post date:** [December 26, 2015, 8:09pm UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004/2 "2015-12-26T20:09:26Z")

</div>

Not something I need, but good work. Sure it will come in useful for some people!

---

<div class="post-metadata">

**Author:** ![jamiele23](https://discourse.mailinabox.email/letter_avatar_proxy/v4/letter/j/53a042/32.png) [@jamiele23](https://discourse.mailinabox.email/u/jamiele23)\
**Post date:** [January 9, 2016, 12:15am UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004/3 "2016-01-09T00:15:43Z")

</div>

Looks great!

Just a quick question. In the .php files it has mentions of [example.com/shadow](http://example.com/shadow). Should i change this or do i leave it as is?

---

<div class="post-metadata">

**Author:** ![alexweissman](https://discourse.mailinabox.email/user_avatar/discourse.mailinabox.email/alexweissman/32/525_2.png) [@alexweissman](https://discourse.mailinabox.email/u/alexweissman)\
**Post date:** [January 9, 2016, 6:46am UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004/4 "2016-01-09T06:46:19Z")

</div>

You should change that to the path for you actual `shadow` file in your cpanel account.

---

<div class="post-metadata">

**Author:** ![jamiele23](https://discourse.mailinabox.email/letter_avatar_proxy/v4/letter/j/53a042/32.png) [@jamiele23](https://discourse.mailinabox.email/u/jamiele23)\
**Post date:** [January 9, 2016, 7:13am UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004/5 "2016-01-09T07:13:22Z")

</div>

I see. I assume I’ll have to change the domain for every domain I bring across?

---

<div class="post-metadata">

**Author:** ![alexweissman](https://discourse.mailinabox.email/user_avatar/discourse.mailinabox.email/alexweissman/32/525_2.png) [@alexweissman](https://discourse.mailinabox.email/u/alexweissman)\
**Post date:** [January 9, 2016, 7:21am UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004/6 "2016-01-09T07:21:49Z")

</div>

Yup. If you have a lot of domains, I’d start by doing one just to make sure it is working as expected. After that, you could probably just modify the script so it loops through the rest of your domains.

---

<div class="post-metadata">

**Author:** ![jamiele23](https://discourse.mailinabox.email/letter_avatar_proxy/v4/letter/j/53a042/32.png) [@jamiele23](https://discourse.mailinabox.email/u/jamiele23)\
**Post date:** [January 10, 2016, 4:32am UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004/7 "2016-01-10T04:32:23Z")

</div>

Great. Thanks for the great work and code! One last noob question. How do you run the php code?

---

<div class="post-metadata">

**Author:** ![bronson](https://discourse.mailinabox.email/letter_avatar_proxy/v4/letter/b/a698b9/32.png) [@bronson](https://discourse.mailinabox.email/u/bronson)\
**Post date:** [January 11, 2016, 3:58pm UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004/8 "2016-01-11T15:58:08Z")

</div>

The stock answer is that MiaB is for hosting email. To keep things stable, host PHP somewhere else.

That said, there’s a forum post on here that talks about how to do it.

---

<div class="post-metadata">

**Author:** ![alexweissman](https://discourse.mailinabox.email/user_avatar/discourse.mailinabox.email/alexweissman/32/525_2.png) [@alexweissman](https://discourse.mailinabox.email/u/alexweissman)\
**Post date:** [January 11, 2016, 5:18pm UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004/9 "2016-01-11T17:18:43Z")

</div>

I think @jamiele23 is just asking how to run PHP from the CLI in general, not on the MiaB server specifically. My script is a one-time script that can be run on any machine - it doesn’t need to be run on the mail server.

As long as you have PHP installed on your machine, you can simply run it by doing

`php convert_user_accounts.php`

For more examples, see [http://www.jarrodoberto.com/articles/2011/12/running-php-from-the-command-line-basics](http://www.jarrodoberto.com/articles/2011/12/running-php-from-the-command-line-basics)

---

<div class="post-metadata">

**Author:** ![bronson](https://discourse.mailinabox.email/letter_avatar_proxy/v4/letter/b/a698b9/32.png) [@bronson](https://discourse.mailinabox.email/u/bronson)\
**Post date:** [January 11, 2016, 5:59pm UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004/10 "2016-01-11T17:59:07Z")

</div>

Oops, you’re right. Sorry for not scrolling up!

---

<div class="post-metadata">

**Author:** ![jamiele23](https://discourse.mailinabox.email/letter_avatar_proxy/v4/letter/j/53a042/32.png) [@jamiele23](https://discourse.mailinabox.email/u/jamiele23)\
**Post date:** [February 1, 2016, 12:35pm UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004/11 "2016-02-01T12:35:08Z")

</div>

> [@alexweissman](#):
>
> As long as you have PHP installed on your machine, you can simply run it by doing
> 
> php convert\_user\_accounts.php

Great thanks, however where should I be storing this file? In the root directory?

---

<div class="post-metadata">

**Author:** ![jamiele23](https://discourse.mailinabox.email/letter_avatar_proxy/v4/letter/j/53a042/32.png) [@jamiele23](https://discourse.mailinabox.email/u/jamiele23)\
**Post date:** [February 6, 2016, 1:54pm UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004/13 "2016-02-06T13:54:50Z")

</div>

root@box:~# sqlite /home/user-data/mail/users.sqlite  
Unable to open database “/home/user-data/mail/users.sqlite”: file is encrypted or is not a database

Anyone else having this issue?

---

<div class="post-metadata">

**Author:** ![osiloke](https://discourse.mailinabox.email/letter_avatar_proxy/v4/letter/o/5daacb/32.png) [@osiloke](https://discourse.mailinabox.email/u/osiloke)\
**Post date:** [November 28, 2016, 12:34pm UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004/14 "2016-11-28T12:34:42Z")

</div>

i assume you are using sqlite, use sqlite3 “/home/user-data/mail/users.sqlite”

---

<div class="post-metadata">

**Author:** ![Jeroen](https://discourse.mailinabox.email/letter_avatar_proxy/v4/letter/j/bbe5ce/32.png) [@Jeroen](https://discourse.mailinabox.email/u/Jeroen)\
**Post date:** [November 30, 2016, 11:11pm UTC](https://discourse.mailinabox.email/t/migrating-email-accounts-from-a-cpanel-hosting-environment/1004/15 "2016-11-30T23:11:28Z")

</div>

Good work!

Really like this idea. Personally, I’d prefer a script like imapsync, because it’s more versatile - but for some complete overkill and more difficult to setup due non standard dependencies.
